Нахождение координат (x,y,z) вершин квадратной плоскости, повернутой вокруг своего центра в P5 js

Я воссоздаю конические сечения в P5.js и мне нужно найти уравнение квадратной плоскости.

Я знаю размер квадратной плоскости и поворот по каждой оси в градусах от ее центральной точки (как продиктовано ползунками P5).

Я хочу вычислить координаты (x, y, z) четырех вершин этой квадратной плоскости при известных значениях поворота.

Это мой скетч P5.

https://editor.p5js.org/inglog/sketches/HsMUb8UPA

Я хочу использовать эти координаты для создания уравнения плоскости в виде ax+by+cz+d=0

Когда у меня будут вершины квадрата, я воспользуюсь этим калькулятором, чтобы получить уравнение плоскости: https://keisan.casio.com/exec/system/1223596129)

Любые советы о том, как вычислить координаты вершин плоскости, учитывая известное вращение вокруг ее центральной точки?

Связано ли это с преобразованием цилиндрических и декартовых координат? Мне также интересно, связан ли этот ответ с решением (Вращение вершин вокруг точки)

Заранее спасибо за прочтение.


person indymoguler    schedule 01.04.2021    source источник


Ответы (1)


Поскольку существует единственная плоскость, которая проходит через заданный набор из 3 (неколлинеарных) точек, вам не нужны вершины квадрата, чтобы найти уравнение для плоскости. Вам просто нужно 3 случайные точки на плоскости.

Отвечать:

A = (0, slider.value(), 0)
B = (1, slider.value(), 0)
C = (0, slider.value() - sin(slider2.value()), cos(slider2.value()))

Отсюда вы можете получить уравнение плоскости, как они описаны на сайте, который вы дали:

AB = (1, 0, 0)
AC = (0, -sin, cos)
AB x AC = (0, -cos, -sin)

Уравнение:

0x - cos(slider2.value())*y - sin(slider2.value())*z + cos(slider2.value())*slider.value() = 0

упрощается до

cos(slider2.value())*(y - slider.value()) + sin(slider2.value())*z = 0

or

z = (slider.value() - y)/tan(slider2.value())

Я примерно на 99,9% уверен, что это правильное уравнение. Я использовал его для наложения точек на плоскости в вашей программе, и это выглядело правильно.

Как я получил три балла:

Мы знаем, что в центре будет одна точка, которая находится на оси Y. В этот момент x=z=0 и y=slider.value(). Итак, это точка А: (0, slider.value(), 0).

Мы также знаем, что плоскость пересекает плоскость xy по линии, определяемой y=slider.value(). Таким образом, точка B может быть любой точкой на этой линии, давайте произвольно выберем (1, slider.value(), 0).

Третий пункт самый сложный, так как у нас не может быть z=0, и мы должны учитывать угол. Начав с центра, давайте пройдем одну единицу вдоль плоскости, сохраняя x=0 и двигаясь в положительном направлении z. Трудно передать эту точку текстом, но это классическая задача единичного круга: x=0, а y, z находятся на единичном круге с центром в точке A: C = (0, slider.value() - sin(slider2.value()), cos(slider2.value())).

person jstl    schedule 23.04.2021