19 * Z (coming out of the monitor)
25 Onscreen(double ix, double iy) { x=ix; y=iy; }
32 virtual Point operator()(Point)= 0;
40 TransformList() { size=used=0; a=0; }
41 ~TransformList() { clearcontents(); free(a); }
42 void reset() { clearcontents(); used=0; }
43 Point operator()(Point);
44 void append(Transform*);
48 static TransformList usertransforms;
49 static TransformList povtransform;
50 static double planedistance, eyedistance, cutoffdistance, eyex;
54 Point(double x, double y, double z) { xyz[0]=x; xyz[1]=y; xyz[2]=z; }
55 Point operator+(Point r) { return Point(xyz[0]+r[0], xyz[1]+r[1], xyz[2]+r[2]); }
56 Point operator*(double f) { return Point(xyz[0]*f, xyz[1]*f, xyz[2]*f); }
57 double& operator[](int i) { return xyz[i]; }
59 operator Onscreen() const;
60 Point transformed() const { return povtransform(usertransforms(*this)); }
61 double index() const { return transformed()[2]; }
63 static int indexvisible(double index) { return index < cutoffdistance; }
64 static void appendtransform(Transform *t) { usertransforms.append(t); }
65 static void cleartransform() { usertransforms.reset(); }
66 static void setobserver(double theta, double eta=0.0,
67 double planedist=1.0, double eyedist=1.0,
69 static void seteyex(double n) { eyex=n; }