@vaselekk

Какой алгоритм использовать для нахождение уравнения поверхности по 3 точками?

Я использую метод "разложения определителя координат вершин" для нахождения общего уравнения (поверхности) в пространстве (т.к Ax + By + Cz + D = 0) . вот код на js:
var a21 = (o2["verhina2"][0] - o2["verhina1"][0])
var a22 = (o2["verhina2"][1] - o2["verhina1"][1])
var a33 = (o2["verhina3"][2] - o2["verhina1"][2])
var a23 = (o2["verhina2"][2] - o2["verhina1"][2])
var a31 = (o2["verhina3"][0] - o2["verhina1"][0])
var a32 = (o2["verhina3"][1] - o2["verhina1"][1])

var A_plosha = (a22*a33 - a23*a32)
var B_plosha =(a23*a31 - a21*a33)
var C_plosha =  (a21*a32 - a22*a31)

var D_plosha = (A_plosha * (-1 * o2["verhina1"][0])) + (C_plosha * (-1 * o2["verhina1"][2])) + (B_plosha * (-1 * o2["verhina1"][1]))

Ну такой метод определения общего уравнения поверхности слишком неєфективный (для трассировки полигонов), так что: какой алгоритм лучшего всего использовать для нахождение общего уравнения поверхности?
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Пусть точка p=(x,y,z) принадлежит плоскости. Пусть 3 точки - p1, p2, p3.

Тогда вектор (p-p1) должен раскладываться на вектора p2-p1 и p3-p1.

Т.е. определитель матрицы 3x3 из этих трех векторов должен быть нулевым.

det {{x-p1x, p2x-p1x, p3x-p1x},
 {y-p1y, p2y-p1y, p3y-p1y},
 {z-p1z, p2z-p1z, p3z-p1z}} = 0


Раскрываете определитель по первому столбцу и получаете
A = det({{p2y-p1y, p3y-p1y}, {p2z-p1z, p3z-p1z}})
И т.д.
D = -p1x*A-p1y*B-p1z*C
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы