00001
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
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
00077 inline TKoo3d<T> operator+(TKoo3d<T>& k)
00078 {
00079 return TKoo3d<T>(k.v[0]+v[0],k.v[1]+v[1],k.v[2]+v[2]);
00080 };
00081 inline TKoo3d<T> operator-(TKoo3d<T>& k)
00082 {
00083 return TKoo3d<T>(v[0]-k.v[0],v[1]-k.v[1],v[2]-k.v[2]);
00084 };
00085 inline TKoo3d<T> operator*(float k)
00086 {
00087 return TKoo3d<T>(v[0]*k,v[1]*k,v[2]*k);
00088 };
00089 inline TKoo3d<T> operator*(TKoo3d<T>& k)
00090 {
00091 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]);
00092 };
00093 inline TKoo3d<T> operator/(float k)
00094 {
00095 return TKoo3d<T>(v[0]/k,v[1]/k,v[2]/k);
00096 };
00097 inline BOOLEAN operator== (TKoo3d<T>& k)
00098 {
00099 return (v[0]==k.v[0])&&(v[1]==k.v[1])&&(v[2]==k.v[2]);
00100 };
00101
00102 template <class A> inline TKoo3d(A& o)
00103 {
00104
00105 v[0]=(T)o.v[0];
00106 v[1]=(T)o.v[1];
00107 v[2]=(T)o.v[2];
00108 };
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118 };
00119
00120
00121 #endif // !defined(AFX_TKOO3D_H__C733CF65_F6C3_42FF_8BA4_34C3B8B5A6BE__INCLUDED_)