00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "plane3.h"
00018
00019 namespace NUM
00020 {
00021
00022
00023
00024 void _OMatrixInstantiationDummy()
00025 {
00026 {
00027 Plane3<dbl> *p=NULL;
00028 Vector3<dbl> *v=NULL;
00029 p->compute(*v,*v,*v);
00030 }
00031 {
00032 Plane3<flt> *p=NULL;
00033 Vector3<flt> *v=NULL;
00034 p->compute(*v,*v,*v);
00035 }
00036 }
00037
00038
00039 template<typename T>int Plane3<T>::compute(const Vector3<T> &p0,
00040 const Vector3<T> &p1,const Vector3<T> &p2)
00041 {
00042
00043 T da[3] = { p0[0]-p1[0], p0[1]-p1[1], p0[2]-p1[2] };
00044 T db[3] = { p2[0]-p1[0], p2[1]-p1[1], p2[2]-p1[2] };
00045
00046
00047 _normal.cross(da,db);
00048
00049
00050 T len=_normal.len();
00051 if(len==0.0)
00052 { _dist=0; return(-2); }
00053
00054 _normal*=1/len;
00055
00056
00057 _dist = -dot(_normal,p0);
00058
00059 return(0);
00060 }
00061
00062 }