00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __GUTZ_PLANE_H
00022 #define __GUTZ_PLANE_H
00023
00024 #include "vec3.h"
00025
00026 namespace gutz {
00027
00028 template<class T>
00029 class plane {
00030 public:
00031
00032 plane()
00033 : p(0,0,0), n(0,0,1)
00034 {}
00035
00036 plane(const vec3<T> &pos, const vec3<T> &norm)
00037 : p(pos), n(norm)
00038 {}
00039
00040
00041
00042 plane(const vec3<T> &p1, const vec3<T> &p2, const vec3<T> &p3)
00043 : p(p1), n((p2-p1).cross(p3-p1))
00044 {}
00045
00046 plane(const plane &pl)
00047 : p(pl.p), n(pl.n)
00048 {}
00049
00050 plane &operator=(const plane &pl)
00051 { p = pl.p; n = pl.n; return *this; }
00052
00053
00054 public:
00055 vec3<T> p;
00056 vec3<T> n;
00057
00058 };
00059
00060 typedef plane<float> planef;
00061 typedef plane<double> planed;
00062
00063
00064 }
00065
00066 #endif
00067