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

Last change on this file since 682 was 682, checked in by frichard, 12 years ago
File size: 5.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    inline int Calculer_Matrice_Simple( Coord a1, Coord a2, Coord a3, Coord m1, Coord m2, Coord m3);
75    inline int ElementsMatriceSimple(Coord aa1, Coord aa2, Coord aa3, Coord mm1, Coord mm2, Coord mm3);
76    void AppliquerMatriceCorrectionSimple( Coord * result, Coord vect);
77
78
79    // Méthode de correction "affine"
80    void Calculer_Matrice_GETPQ(Coord p1, Coord p2, Coord p3);
81    int  Calculer_Matrice_Affine(double x, double y, Coord a1, Coord a2, Coord a3, Coord m1, Coord m2, Coord m3);
82    void AppliquerMatriceCorrectionAffine( Coord* result, Coord ob);
83
84    // Méthode correction "Taki"
85    void Calculer_Matrice_LMN(Coord p1, Coord p2, Coord p3);
86    int  Calculer_Matrice_Taki(double x, double Y, Coord a1, Coord a2, Coord a3, Coord m1, Coord m2, Coord m3);
87    void AppliquerMatriceCorrectionTaki(Coord * result, Coord vect);
88
89
90    void CalculerMatriceCorrection(double ad, double de);
91
92
93    double Surface_Triangle(double px1, double py1, double px2, double py2, double px3, double py3);
94<<<<<<< .mine
95    void   AzHa2XY(double az, double ha, double *x, double *y);
96    bool   PointSitueDansSurfaceTriangle(double px, double py, double px1, double py1, double px2, double py2, double px3, double py3);
97=======
98    void AzHa2XY(double az, double ha, double *x, double *y);
99    bool PointSitueDansSurfaceTriangle(double px, double py, double px1, double py1, double px2, double py2, double px3, double py3);
100>>>>>>> .r680
101   
102    double Determinant();
103
104    inline double Determinant();
105    void   InitParametresInstrument();
106    void   OptimisationGeometrieAntenne();
107    double Alt2Motor(double targetAlt);
108    inline double Motor2Alt(double pas);
109
110
111
112    int MethodeAlignement;                      // Méthode d'alignement utilisée
113
114    int nbrcorrections;                         // Nombre de points utilisés pour bâtir la ou les matrices de correction
115
116    int AlignementEnCours;
117
118    bool Matrice_ok;                            // Il existe une matrice de correction applicable à la direction de l'observation
119
120    long delta_az_polar;                        // Correction en azimut de l'orientation de l'étoile polaire
121    // C'est la premiÚre étape de l'alignement dans les mode AFFINE et TAKI
122   
123    long int deltaAZ;                           // delta en azimut et en hauteur pour une correction à la raquette
124    long int deltaHA;                           // hors procédure d'alignement
125   
126    bool SelectionnePourCalculMatrice[MAXALIGNEMENTANTENNE];
127
128    long int deltaAZ;                           // delta en azimut et en hauteur pour une correction à la raquette
129    long int deltaHA;                           // hors procédure d'alignement
130
131    bool SelectionnePourCalculMatrice[MAXALIGNEMENTANTENNE];
132
133    double ad[MAXALIGNEMENTANTENNE];            // Coordonnées horaires d'un point de correction
134
135    double de[MAXALIGNEMENTANTENNE];
136
137    double tsl[MAXALIGNEMENTANTENNE];           // Temps sidéral local où les mesures en ar et dec ont été faites
138
139    double delta_ad[MAXALIGNEMENTANTENNE];        // nbre de pas ajoutés en ascension droite et en déclinaison pour centrer l'objet visé
140
141    double delta_de[MAXALIGNEMENTANTENNE];
142
143    double MATRICE[4][4];                       // La matrices de correction calculée dans les trois modes d'alignement
144
145    Coord  VECT_OFFSET;                      // Vecteur offset que l'on applique dans les modes affine/taki
146
147    double GETLMN[4][4];                        // Matrices intermédiaires nécessaires pour le calcul des matrices de correction
148    // dans les modes d'alignement AFFINE/TAKI
149    double GETPQ[4][4];
150
151
152    double BC;                          //ParamÚtres de l'instrument
153    // Formule de Marc
154    double CD;
155    double ED;
156    double AE;
157    double I0;
158    double CoeffMoteur;
159    double Thau;
160
161};
162
163#endif
Note: See TracBrowser for help on using the repository browser.