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:
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]Ray *ray = new Ray(Vec3(0), chosenTriangle->GetTriangleMidpoint()); [/code] Daneben befindet sich das Vec3-Objekt, das ich zum Speichern der Vektoroperationen verwende: [code]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
Ich habe Zeile (oder zwei Punkte GLM :: VEC3 oder Punktstart und Richtung) und Objekte (geladen mit Hilfeantrieb) ... wie kann ich Schnittpunkt (GLM :: VEC3) Schnittpunkt der Linie und Objekte auf...