Оценивая треугольник на конкретной (Х,Y) координат [закрыт]


Дано: 3 вершины треугольника в трехмерном пространстве, координаты x, y точки На этом треугольнике (включая площадь треугольника).

Требуется: координата z данной точки.

Все 3 вершины треугольника имеют разные координаты (x,y) (это координаты heightmap), поэтому случай множественных(бесконечных) совпадений не требует обработки.

Я пытаюсь сделать это в C, что означает, что алгоритм, работающий на простых числовых типах, например, поплавки, будет лучшим(без матрицы или вектора оперативный).

1 2

1 ответ:

Это обычно делается с векторами / матрицами, которые являются просто более короткими нотациями для базовых операций.

  • Выберите точку отсчета из трех вершин O = (ox, oy) = Point1
  • Сделайте два вектора U=(ux,uy) = point2-O; V=(vx,vy) = point3-O

  • Решить линейную систему x, y = u * U + v*V для u и v

    X = u * (p2x-ox) + v * (p3x-ox)
    y = u * (p2y-oy) + v * (p3y-oy)

Проверьте, что 0 Если да, то точка x, y находится внутри треугольника и
z = u*(p2z-oz)+v*(p3z-oz)