Strahlendreieck-Schnittpunkt C++C++

Programme in C++. Entwicklerforum
Guest
 Strahlendreieck-Schnittpunkt C++

Post by Guest »

Ich teste, ob ein Strahl ein Dreieck schneidet. Im Moment verwende ich den folgenden Code, um zu testen, ob es einen Schnittpunkt zwischen einem Dreieck und dem Strahl vom Ursprung zum Mittelpunkt des Dreiecks gibt:

Code: Select all

Ray *ray = new Ray(Vec3(0), chosenTriangle->GetTriangleMidpoint());
Daneben befindet sich das Vec3-Objekt, das ich zum Speichern der Vektoroperationen verwende:

Code: Select all

template
class Vec3
{
public:
T x, y, z;
Vec3() : x(T(0)), y(T(0)), z(T(0)) { }
Vec3(T xx) : x(xx), y(xx), z(xx) { }

Vec3(T xx, T yy, T zz) : x(xx), y(yy), z(zz) {}
Vec3& normalize()
{
T nor2 = length2();
if (nor2 > 0) {
T invNor = 1 / sqrt(nor2);
x *= invNor, y *= invNor, z *= invNor;
}
return *this;
}

Vec3 operator * (const T &f) const { return Vec3(x * f, y * f, z * f); }
Vec3 operator * (const Vec3 &v) const { return Vec3(x * v.x, y * v.y, z * v.z); }
T dot(const Vec3 &v) const { return x * v.x + y * v.y + z * v.z; }
Vec3 operator - (const Vec3 &v) const { return Vec3(x - v.x, y - v.y, z - v.z); }
Vec3 operator + (const Vec3 &v) const { return Vec3(x + v.x, y + v.y, z + v.z); }
bool operator == (const Vec3 &v) { return x == v.x && y == v.y && z == v.z; }
Vec3 operator - () const { return Vec3(-x, -y, -z); }
T length2() const { return x * x + y * y + z * z; }
T length() const { return sqrt(length2()); }
Vec3 CrossProduct(Vec3 other)
{
return Vec3(y*other.z - other.y*z, x*other.z - z*other.x, x*other.y - y*other.x);
}
friend std::ostream & operator

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post