Пересечение лучей и треугольников C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Пересечение лучей и треугольников C++

Сообщение Anonymous »

Я проверяю, пересекает ли луч треугольник. На данный момент я использую следующий код, чтобы проверить, есть ли пересечение между треугольником и лучом от начала координат до середины треугольника:

Код: Выделить всё

Ray *ray = new Ray(Vec3(0), chosenTriangle->GetTriangleMidpoint());
Рядом находится объект Vec3, который я использую для хранения векторных операций:

Код: Выделить всё

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 

Подробнее здесь: [url]https://stackoverflow.com/questions/28165548/ray-triangle-intersection-c[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»