00001
00002
00003
00004
00005 #pragma once
00006
00007 #include "Geo.h"
00008
00009 namespace GEO
00010 {
00011
00012 struct Line
00013 {
00014 Vector3 pos;
00015 Vector3 dir;
00016
00017
00018 inline Line() {}
00019 inline Line(const Vector3 &inPos, const Vector3 &inDir)
00020 { pos=inPos; dir=inDir; }
00021 };
00022
00023
00024 struct Plane
00025 {
00026 float c0,c1,c2,c3;
00027
00028
00029 inline Plane()
00030 { c0=c1=c2=c3=0.0f; }
00031
00032 inline Plane(const Vector3 &inPos, const Vector3 &inNormal)
00033 {
00034 Normal()=inNormal;
00035 Renormalize();
00036 c3=-VecDot(inPos,Normal());
00037 }
00038
00039 inline Plane(float inC0,float inC1,float inC2,float inC3): c0(inC0), c1(inC1), c2(inC2), c3(inC3)
00040 { Renormalize(); }
00041
00042
00043 inline Vector3& Normal() const { return *((Vector3*)this); }
00044
00045
00046 inline void Renormalize() { Normal().Normalize(); }
00047 };
00048
00049 };