65 lines
2.2 KiB
C
65 lines
2.2 KiB
C
/****************************************************/
|
|
/* TRIGO.H : Tables de fonctions trigonometriques */
|
|
/* utilisees dans les rotations d'axes */
|
|
/****************************************************/
|
|
|
|
#ifndef TRIGO_H
|
|
#define TRIGO_H
|
|
|
|
|
|
/* Prototype des fonctions de trigo.cpp */
|
|
void RotatePoint( int *pX, int *pY, int angle );
|
|
void RotatePoint( int *pX, int *pY, int cx, int cy, int angle );
|
|
void RotatePoint( wxPoint* point, int angle );
|
|
void RotatePoint( wxPoint *point, const wxPoint & centre, int angle );
|
|
void RotatePoint( double *pX, double *pY, int angle );
|
|
void RotatePoint( double *pX, double *pY, double cx, double cy, int angle );
|
|
|
|
/** function ArcTangente
|
|
Retourne l'arc tangente en 0.1 degres du vecteur de coord dx, dy
|
|
entre -1800 et 1800
|
|
Analogue a atan2 ( mais plus rapide pour les caculs si
|
|
l'angle est souvent 0, -1800, ou +- 900 */
|
|
int ArcTangente( int dy, int dx );
|
|
|
|
bool DistanceTest( int seuil, int dx, int dy, int spot_cX, int spot_cY );
|
|
|
|
|
|
/** Function TestSegmentHit
|
|
* test for hit on line segment
|
|
* i.e. cursor within a given distance from segment
|
|
* @param aRefPoint = cursor (point to test) coords
|
|
* @param aStart is the first end-point of the line segment
|
|
* @param aEnd is the second end-point of the line segment
|
|
* @param aDist = maximum distance for hit
|
|
*/
|
|
bool TestSegmentHit( wxPoint aRefPoint, wxPoint aStart, wxPoint aEnd, int aDist );
|
|
|
|
/*******************/
|
|
/* Macro NEW_COORD */
|
|
/*******************/
|
|
|
|
/* Macro de calcul de novelles coordonnees par rotation d'axe
|
|
coord : xrot = y*sin + x*cos
|
|
yrot = y*cos - x*sin
|
|
soit : xrot = (y*tg + x)*cos
|
|
yrot = (y - x*tg)*cos
|
|
|
|
les coeffs COS sont tabules en fct de tg sur 16 valeurs.
|
|
*/
|
|
#define NEW_COORD( x0, y0 ) \
|
|
do { \
|
|
int itmp; \
|
|
itmp = x0; \
|
|
x0 = x0 + (int)( y0 * tg ); \
|
|
y0 = y0 - (int)( itmp * tg ); \
|
|
x0 = ( x0 * cosinus ) >> 8; \
|
|
y0 = ( y0 * cosinus ) >> 8; \
|
|
} while( 0 );
|
|
|
|
|
|
extern double fsinus[];
|
|
extern double fcosinus[];
|
|
|
|
#endif
|