1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
#ifndef VECTOR_H
#define VECTOR_H
typedef struct Vector
{
struct Vector *next;
double x;
double y;
double z;
int refcnt;
}VECTOR;
extern double nanval;
extern void init_vec (void);
extern void showvec (SYMBOL *sym);
extern void setpnt (SYMBOL *var, SYMBOL *pnt);
extern SYMBOL *mkpnt (double x, double y, double z);
extern SYMBOL *mkpntvar (SYMBOL *var, SYMBOL *pnt);
extern SYMBOL *pntfunc (SYMBOL *func, SYMBOL *arglist);
extern SYMBOL *pntop (int op, SYMBOL *pnt1, SYMBOL *pnt2);
extern SYMBOL *pntapp (SYMBOL *head, SYMBOL *elt);
extern VECTOR *v_copy (VECTOR *p, VECTOR *p1);
extern VECTOR *v_add (VECTOR *p, VECTOR *p1, VECTOR *p2);
extern VECTOR *v_sub (VECTOR *p, VECTOR *p1, VECTOR *p2);
extern VECTOR *v_abs (VECTOR *p, VECTOR *p1);
extern VECTOR *v_neg (VECTOR *p, VECTOR *p1);
extern double v_eq (VECTOR *p1, VECTOR *p2);
extern double v_eq_epsilon (VECTOR *p1, VECTOR *p2, VECTOR *e);
extern VECTOR *v_mul (VECTOR *p, VECTOR *p1, double d);
extern VECTOR *v_div (VECTOR *p, VECTOR *p1, double d);
extern double v_val (VECTOR *p);
extern VECTOR *v_unit (VECTOR *p, VECTOR *p1);
extern double v_dot (VECTOR *p1, VECTOR *p2);
extern VECTOR *v_cross (VECTOR *p, VECTOR *p1, VECTOR *p2);
extern double v_isortho (VECTOR *p1, VECTOR *p2);
extern double v_ispara (VECTOR *p1, VECTOR *p2);
extern double v_isacute (VECTOR *p1, VECTOR *p2);
extern double v_area (VECTOR *p1, VECTOR *p2);
#endif
|