/*
* Eukleides version 1.0.3
* Copyright (c) Christian Obrecht 2000-2004
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#define EPSILON 1e-8
#define RAD(x) M_PI*(x)/180
#define DEG(x) 180*(x)/M_PI
#define LENG(x,y) sqrt((x)*(x)+(y)*(y))
#define ZERO(x) (((x) < EPSILON) && ((x) > - EPSILON))
int Snd_degree(double*, double*, double, double, double);
double Pow(double, double);
double Sin(double);
double Cos(double);
double Tan(double);
double Asin(double);
double Acos(double);
double Atan(double);
double PP_distance(_point*, _point*);
double PL_distance(_point*, _line*);
double V_length(_vector*);
double S_length(_segment*);
double excentricity(_conic*);
double height(_point*, _point*, _point*);
double angle(double, double);
double V_angle(_vector*);
double S_angle(_segment*);
double Co_angle(_conic*);
double VV_angle(_vector*, _vector*);
double T_angle(_point*, _point*, _point*);
double C_argument(_circle*, _point*);
double Co_argument(_conic*, _point*);
double scalar(_vector*, _vector*);
double eccentricity (_conic*);
void P_assignment(symrec *, _point*);
_point* P_new(double, double);
_point* P_polar(double, double);
_point* P_line(_line*, double);
_point* P_segment(_segment*, double);
_point* P_circle(_circle*, double);
_point* P_conic(_conic*, double);
_point* P_translation(_point*, _vector*);
_point* P_reflection(_point*, _line*);
_point* P_rotation(_point*, _point*, double);
_point* P_L_projection(_point*, _line*);
_point* P_LL_projection(_point*, _line*, _line*);
_point* P_homothecy(_point*, _point*, double);
_point* P_2_barycenter(_point*, double, _point*, double);
_point* P_3_barycenter(_point*, double, _point*, double, _point*, double);
_point* P_4_barycenter(_point*, double, _point*, double, _point*, double, _point*, double);
_point* P_LL_intersection(_line*, _line*);
_point* P_abscissa(_line*, double);
_point* P_ordinate(_line*, double);
_point* P_midpoint(_segment*);
_point* P_begin(_segment*);
_point* P_end(_segment*);
_point* P_center(_circle*);
_point* P_Co_center(_conic*);
_point* P_orthocenter(_point*, _point*, _point*);
void V_assignment(symrec*, _vector*);
_vector* V_NN_new(double, double);
_vector* V_NA_new(double, double);
_vector* V_PP_new(_point*, _point*);
_vector* V_L_new(_line*);
_vector* V_S_new(_segment*);
_vector* V_rotation(_vector*, double);
_vector* V_add(_vector*, _vector*);
_vector* V_sub(_vector*, _vector*);
_vector* V_mult(double, _vector*);
void L_assignment(symrec*, _line*);
_line* L_PP_new(_point*, _point*);
_line* L_PA_new(_point*, double);
_line* L_PV_new(_point*, _vector*);
_line* L_S_new(_segment*);
_line* L_CA_new(_circle*, double);
_line* L_Co_new(_conic*, double);
_line* L_translation(_line*, _vector*);
_line* L_reflection(_line*, _line*);
_line* L_rotation(_line*, _point*, double);
_line* L_homothecy(_line*, _point*, double);
_line* L_L_parallel(_line*, _point*);
_line* L_S_parallel(_segment*, _point*);
_line* L_L_perpendicular(_line*, _point*);
_line* L_S_perpendicular(_segment*, _point*);
_line* L_S_bisector(_segment*);
_line* L_P_bisector(_point*, _point*, _point*);
_line* L_LL_bisector(_line*, _line*);
_line* L_altitude(_point*, _point*, _point*);
_line* L_median(_point*, _point*, _point*);
_line* L_invert(_line*);
void S_assignment(symrec *, _segment*);
_segment* S_P_new(_point*, _point*);
_segment* S_V_new(_point*, _vector*);
_segment* S_NA_new(_point*, double, double);
_segment* S_CA_new(_circle*, double);
_segment* S_translation(_segment*, _vector*);
_segment* S_reflection(_segment*, _line*);
_segment* S_rotation(_segment*, _point*, double);
_segment* S_homothecy(_segment*, _point*, double);
_segment* S_invert(_segment*);
void C_assignment(symrec *, _circle*);
_circle* C_PP_new(_point*, _point*);
_circle* C_PPP_new(_point*, _point*, _point*);
_circle* C_PN_new(_point*, double);
_circle* C_translation(_circle*, _vector*);
_circle* C_reflection(_circle*, _line*);
_circle* C_rotation(_circle*, _point*, double);
_circle* C_homothecy(_circle*, _point*, double);
_circle* C_incircle(_point*, _point*, _point*);
void Co_assignment(symrec *, _conic*);
_conic* Co_N_new(double, double, double, double, double, int);
_conic* Co_new(_point*, _line*, double);
_conic* Pa_new(_point*, _line*);
_conic* Co_PP_new(_point*, _point*, double);
_conic* Co_translation(_conic*, _vector*);
_conic* Co_reflection(_conic*, _line*);
_conic* Co_rotation(_conic*, _point*, double);
_conic* Co_homothecy(_conic*, _point*, double);
void LC_intersection(symrec *, symrec *, _line*, _circle*);
void CC_intersection(symrec *, symrec *, _circle*, _circle*);
void LCo_intersection(symrec *, symrec *, _line*, _conic*);
void vertices(symrec *, symrec *, _conic*);
void foci(symrec *, symrec *, _conic*);
void T_scalenes(symrec *, symrec *, symrec *, double, double);
void T_3N_triangle(symrec *, symrec *, symrec *, double, double, double, double);
void T_2N_triangle(symrec *, symrec *, symrec *, double, double);
void T_2A_triangle(symrec *, symrec *, symrec *, double, double, double, double);
void T_A_triangle(symrec *, symrec *, symrec *, double, double);
void T_2N_right(symrec *, symrec *, symrec *, double, double, double);
void T_N_right(symrec *, symrec *, symrec *, double);
void T_NA_isosceles(symrec *, symrec *, symrec *, double, double, double);
void T_A_isosceles(symrec *, symrec *, symrec *, double);
void T_2N_isosceles(symrec *, symrec *, symrec *, double, double, double);
void T_N_isosceles(symrec *, symrec *, symrec *, double);
void T_E_equilateral(symrec *, symrec *, symrec *);
void T_equilateral(symrec *, symrec *, symrec *, double, double);
void Q_E_parallelogram(symrec *, symrec *, symrec *, symrec *);
void Q_S_parallelogram(symrec *, symrec *, symrec *, symrec *, double, double);
void Q_parallelogram(symrec *, symrec *, symrec *, symrec *, double, double, double, double);
void Q_V_parallelogram(symrec *, symrec *, symrec *, symrec *, _vector*, _vector*);
void Q_E_rectangle(symrec *, symrec *, symrec *, symrec *);
void Q_S_rectangle(symrec *, symrec *, symrec *, symrec *, double);
void Q_square(symrec *, symrec *, symrec *, symrec *);
void pentagon(symrec *, symrec *, symrec *, symrec *, symrec *, _point*, double, double);
void hexagon(symrec *, symrec *, symrec *, symrec *, symrec *, symrec *, _point*, double, double);
syntax highlighted by Code2HTML, v. 0.9.1