source: BAORadio/libindi/libindi/communs/alignement.h @ 677

Last change on this file since 677 was 677, checked in by frichard, 12 years ago

Sauvegarde de sécurité (problème de DD). Interfae graphique de BAOcontrol en QT

File size: 4.6 KB
Line 
1////////////////////////////////
2// Classe Alignement          //
3// Franck RICHARD             //
4// BAORadio                   //
5// franckrichard033@gmail.com //
6// février 2012               //
7////////////////////////////////
8
9
10
11#ifndef Alignement_class
12#define Alignement_class
13
14#include <stdio.h>
15#include <stdlib.h>
16#include <string.h>
17#include <stdarg.h>
18#include <math.h>
19#include <unistd.h>
20#include <time.h>
21#include <memory>
22#include <pthread.h>
23#include <iostream>
24#include <time.h>
25#include <unistd.h>
26#include <sys/time.h>
27#include <fstream>
28#include "../communs/const.h"
29#include "../communs/filetools.h"
30#include "../communs/astro.h"
31#include "../communs/logs.h"
32
33
34using namespace std;
35
36struct Coord
37{
38    double x;
39    double y;
40    double z;
41};
42
43class Alignement : public Astro, public Logs
44{
45public:
46    Alignement();
47    ~Alignement();
48
49    void InitAlignement();
50    void TransmettreParametresClasseAstro(double Annee, double Mois, double Jour, double Heu, double Min, double Sec, double Longitude, double Latitude, double Pression, double Temp);
51
52
53    /*******************************************************/
54    /* Gestion des fichiers de paramÚtres
55    ********************************************************/
56    bool is_readable( const std::string & file );
57    bool ChargementParametresAlignement(string IP, string fileName, double ad, double de);
58
59    // bool ChargementParametresAlignement(string fileName, int ip, int num);
60    bool EnregistrementParametresAlignement(string IP, string fileName);
61    bool EnregistrementParametresAlignement(int IP, string fileName);
62
63
64
65    /*******************************************************/
66    /* Calcul des matrices
67    ********************************************************/
68
69    //Réinitialisation MATRICE = Matrice identité
70    void Identity();
71    void RotationAutourDunAxe(double t, double r, double alpha);
72   
73    // Méthode de correction "simple
74    int  Calculer_Matrice_Simple( Coord a1, Coord a2, Coord a3, Coord m1, Coord m2, Coord m3);
75    void AppliquerMatriceCorrectionSimple( Coord * result, Coord vect);
76
77
78    // Méthode de correction "affine"
79    void Calculer_Matrice_GETPQ(Coord p1, Coord p2, Coord p3);
80    int  Calculer_Matrice_Affine(double x, double y, Coord a1, Coord a2, Coord a3, Coord m1, Coord m2, Coord m3);
81    void AppliquerMatriceCorrectionAffine( Coord* result, Coord ob);
82
83    // Méthode correction "Taki"
84    void Calculer_Matrice_LMN(Coord p1, Coord p2, Coord p3);
85    int  Calculer_Matrice_Taki(double x, double Y, Coord a1, Coord a2, Coord a3, Coord m1, Coord m2, Coord m3);
86    void AppliquerMatriceCorrectionTaki(Coord * result, Coord vect);
87
88
89    void CalculerMatriceCorrection(double ad, double de);
90
91
92    double Surface_Triangle(double px1, double py1, double px2, double py2, double px3, double py3);
93    void AzHa2XY(double az, double ha, double *x, double *y);
94    bool PointSitueDansSurfaceTriangle(double px, double py, double px1, double py1, double px2, double py2, double px3, double py3);
95   
96    double Determinant();
97
98
99
100
101
102    int MethodeAlignement;                      // Méthode d'alignement utilisée
103
104    int nbrcorrections;                         // Nombre de points utilisés pour bâtir la ou les matrices de correction
105
106    int AlignementEnCours;
107
108    bool Matrice_ok;                            // Il existe une matrice de correction applicable à la direction de l'observation
109
110    long delta_az_polar;                        // Correction en azimut de l'orientation de l'étoile polaire
111    // C'est la premiÚre étape de l'alignement dans les mode AFFINE et TAKI
112   
113    long int deltaAZ;                           // delta en azimut et en hauteur pour une correction à la raquette
114    long int deltaHA;                           // hors procédure d'alignement
115   
116    bool SelectionnePourCalculMatrice[MAXALIGNEMENTANTENNE];
117
118    double ad[MAXALIGNEMENTANTENNE];            // Coordonnées horaires d'un point de correction
119
120    double de[MAXALIGNEMENTANTENNE];
121
122    double tsl[MAXALIGNEMENTANTENNE];           // Temps sidéral local où les mesures en ar et dec ont été faites
123
124    double delta_ad[MAXALIGNEMENTANTENNE];        // nbre de pas ajoutés en ascension droite et en déclinaison pour centrer l'objet visé
125
126    double delta_de[MAXALIGNEMENTANTENNE];
127
128    double MATRICE[4][4];                       // La matrices de correction calculée dans les trois modes d'alignement
129
130    Coord  VECT_OFFSET;                      // Vecteur offset que l'on applique dans les modes affine/taki
131
132    double GETLMN[4][4];                        // Matrices intermédiaires nécessaires pour le calcul des matrices de correction
133    // dans les modes d'alignement AFFINE/TAKI
134    double GETPQ[4][4];
135};
136
137#endif
Note: See TracBrowser for help on using the repository browser.