00001 #ifndef MATH3DUTILS_H
00002 #define MATH3DUTILS_H
00003
00004 #include "oaw/misc/vectorc.h"
00005 #include "oaw/misc/matrixc.h"
00006
00007 #define PI 3.1415926535897932384626433832795
00008
00009 #include "../oawconfig.h"
00010
00011 OAW_BEGIN_NAMESPACE
00012
00013 OAW_DLLMAPPING Vector4C MultRotations(const Vector4C &a, const Vector4C &b);
00014 OAW_DLLMAPPING double GetAngle2D(double x, double y);
00015
00016 OAW_DLLMAPPING VectorC CalcLinearDecomposition(VectorC p, VectorC p1, VectorC p2, VectorC p3);
00017 OAW_DLLMAPPING Vector2C MapTexCoord(VectorC v, VectorC p1, VectorC p2, VectorC p3, Vector2C tp1, Vector2C tp2, Vector2C tp3);
00018 OAW_DLLMAPPING Vector3C MapNormal(VectorC v, VectorC p1, VectorC p2, VectorC p3, VectorC n1, VectorC n2, VectorC n3);
00019
00020 OAW_DLLMAPPING short IsectLineSphere(VectorC startP,const VectorC& endP, const VectorC& sphereCenter, double radius,
00021 VectorC& isect1, double& t1, VectorC& isect2, double& t2);
00022 OAW_DLLMAPPING int IsectLineSphere(const VectorC &a, const VectorC &e, double r, VectorC *pSec1, VectorC *pSec2);
00023
00024 OAW_DLLMAPPING short IsectLineTriangle(short cull, short ccw,VectorC startP,const VectorC& endP,const VectorC& p1,const VectorC& p2,const VectorC& p3, VectorC& isect, double&);
00025 OAW_DLLMAPPING short IsectLineTriangleP(short bfcull, short ccw,VectorC& startP, const VectorC& endP,double* p1,double* p2,double* p3, VectorC& isect, double&);
00026 OAW_DLLMAPPING short IsectLineTriangleP(short bfcull, short ccw,VectorC& startP, const VectorC& endP,float* p1,float* p2,float* p3, VectorC& isect, double&);
00027 OAW_DLLMAPPING short IsectLineTrianglePP(short cull,VectorC& startP, const VectorC& endP,float* p1,float* p2,float* p3, VectorC& isect, double&);
00028 OAW_DLLMAPPING short IsectLineWithBox(VectorC startP, VectorC endP, const VectorC& boxCenter, const VectorC& boxSize, double& t, VectorC& s, VectorC& n);
00029 OAW_DLLMAPPING int IsectLineEllipse(const VectorC &a, const VectorC &u, double A, double B, double C, VectorC *pSec1, VectorC *pSec2);
00030 OAW_DLLMAPPING short IsectLineCylinder(const VectorC &vStart, const VectorC &u, const VectorC &vCenter, double fHeight, double fRadius, short bTop=1, short bSide=1, short bBottom=1, VectorC *pSec=0);
00031 OAW_DLLMAPPING short IsectLineCone(const VectorC &vStart, const VectorC &vEnd, const VectorC &vCenter, double fHeight, double fRadius, short bBottom=1, short bSide=1, VectorC *pSec=0);
00032
00033 OAW_DLLMAPPING short PointIsInBox(VectorC p, const VectorC& boxCenter, const VectorC& boxSize);
00034
00035 OAW_END_NAMESPACE
00036
00037 #endif