Main Page | Class Hierarchy | Class List | File List | Class Members

TKoo3d.h

00001 // TKoo3d.h: Schnittstelle für die Klasse TKoo3d.
00002 //
00004 
00005 #if !defined(AFX_TKOO3D_H__C733CF65_F6C3_42FF_8BA4_34C3B8B5A6BE__INCLUDED_)
00006 #define AFX_TKOO3D_H__C733CF65_F6C3_42FF_8BA4_34C3B8B5A6BE__INCLUDED_
00007 
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif // _MSC_VER > 1000
00011 
00012 #include <fcntl.h>
00013 #include <io.h>
00014 #include <stdlib.h> 
00015 #include <windows.h>
00016 #include <math.h>
00017 
00018 //#include <gl/gl.h>
00019 
00020 
00021 
00022 template <class T> class TKoo3d  
00023 {
00024         
00025         public:
00026                 virtual ~TKoo3d()
00027                 {
00028                         
00029                 }
00030                 
00031                 T  v[3];
00032                 inline double vMult(TKoo3d<T>& k)
00033                 {
00034                         return (v[0]*k.v[0]+v[1]*k.v[1]+v[2]*k.v[2]);
00035                 }
00036                 
00037                 inline TKoo3d<T> normalize()
00038                 {
00039                         double betr=betrag();
00040                         return TKoo3d<T>((T)(v[0]/betr),(T)(v[1]/betr),(T)(v[2]/betr));
00041                 };
00042                 inline TKoo3d<T> absVal()
00043                 {
00044                         return TKoo3d<T>(fabs(v[0]),fabs(v[1]),fabs(v[2]));
00045                 };
00046                 inline double betrag()
00047                 {
00048                         return (sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]));
00049                 };
00050                 inline TKoo3d(T xu, T yu, T zu)
00051                 {
00052                         
00053                         v[0]=xu;
00054                         v[1]=yu;
00055                         v[2]=zu;
00056                 };
00057                 inline TKoo3d ()
00058                 {
00059                         
00060                         v[0]=(T)0.0;
00061                         v[1]=(T)0.0;
00062                         v[2]=(T)0.0;
00063                 };
00064                 inline TKoo3d<T> normVZ()
00065                 {
00066                         return(TKoo3d<T>(-v[1],v[0],v[2]));
00067                 };
00068                 inline TKoo3d<T> (T *werte)
00069                 {
00070                         v[0]=werte[0];
00071                         v[1]=werte[1];
00072                         v[2]=werte[2];
00073                 
00074                         
00075                 };
00076                 inline TKoo3d<T> getBar2DCoord(TKoo3d< TKoo3d<T> >& Tri)
00077                 {
00078                         return getBar2DCoord(Tri.v[0],Tri.v[1],Tri.v[2]);
00079                 }
00080                 inline TKoo3d<T> getBar2DCoord(TKoo3d<T>& X, TKoo3d<T>& Y, TKoo3d<T>& Z)
00081                 {
00082                         TKoo3d<T> A=X-Z;
00083                         TKoo3d<T> B=Y-Z;
00084                         TKoo3d<T> C=(*this)-Z;
00085 
00086                         T det=A.v[0]*B.v[1]-A.v[1]*B.v[0];
00087                         T a=(C.v[0]*B.v[1]-C.v[1]*B.v[0])/det;
00088                         T b=(A.v[0]*C.v[1]-A.v[1]*C.v[0])/det;
00089                         T c=1-a-b;
00090                         return TKoo3d<T> (a,b,c);
00091 
00092                 };
00093                 //inline TKoo3d (TKoo3dInt& obj);
00094                 inline TKoo3d<T> operator+(TKoo3d<T>& k)
00095                 {
00096                         return TKoo3d<T>(k.v[0]+v[0],k.v[1]+v[1],k.v[2]+v[2]);
00097                 };
00098                 inline TKoo3d<T> operator-(TKoo3d<T>& k)
00099                 {
00100                         return TKoo3d<T>(v[0]-k.v[0],v[1]-k.v[1],v[2]-k.v[2]);
00101                 };
00102                 inline TKoo3d<T> operator*(float k)
00103                 {
00104                         return TKoo3d<T>(v[0]*k,v[1]*k,v[2]*k);
00105                 };
00106                 inline TKoo3d<T> operator*(TKoo3d<T>& k)
00107                 {
00108                         return TKoo3d<T>(v[1]*k.v[2]-v[2]*k.v[1],-(v[0]*k.v[2]-v[2]*k.v[0]), v[0]*k.v[1]-v[1]*k.v[0]); 
00109                 };
00110                 inline TKoo3d<T> operator/(float k)
00111                 {
00112                         return TKoo3d<T>(v[0]/k,v[1]/k,v[2]/k);
00113                 };
00114                 inline BOOLEAN operator== (TKoo3d<T>& k)
00115                 {
00116                         return (v[0]==k.v[0])&&(v[1]==k.v[1])&&(v[2]==k.v[2]);
00117                 };
00118 
00119                 template <class A> inline TKoo3d(A& o)
00120                 {
00121                         
00122                         v[0]=(T)o.v[0];
00123                         v[1]=(T)o.v[1];
00124                         v[2]=(T)o.v[2];
00125                 };
00126         /*      template <class A> inline void operator=(A& o)
00127                 {
00128                         
00129                         v[0]=(T)o.v[0];
00130                         v[1]=(T)o.v[1];
00131                         v[2]=(T)o.v[2];
00132                 };*/
00133 
00134 
00135 };
00136 
00137 
00138 #endif // !defined(AFX_TKOO3D_H__C733CF65_F6C3_42FF_8BA4_34C3B8B5A6BE__INCLUDED_)

Generated on Mon Jan 19 02:06:39 2004 for flowvis by doxygen 1.3.5