vector.h 1.4 KB

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