#math #vector #geometry #2d
#математика #вектор #геометрия #2d
Вопрос:
Я хочу построить треугольник в реальном мире для представления 2D «усечения при просмотре», используя координаты пользователя, направление (градусы, в настоящее время обращенные к истинному северу) и фиксированные расстояния, которые представляют, как далеко они могут видеть.
Я представлял, как рисую линию на расстоянии K1 от точки пользователя в направлении заголовка и отмечаю временную точку, затем рисую перпендикулярную линию в этой точке к предыдущей линии и отмечаю по 2 точки с каждой стороны от перпендикулярной линии на расстоянии K2 от точки.
Это дало бы мне 3 балла, которые мне нужны. Для тех, кто силен в математике, во-первых, возможно ли это, а во-вторых, можете ли вы дать мне несколько советов о том, как к этому подойти? Спасибо.
Ответ №1:
В декартовых координатах:
Предположим:
Y
ось — северная.K2
является ли расстояние от «временной точки» до двух создаваемых вами точек- Текущая позиция равна
(Cx, Cy)
- Заголовок
(H)
— это угол по часовой стрелке от оси Y. - Временная точка — это
(Tx, Ty)
- Оставшиеся две точки — это
(Px, Py)
и(Qx, Qy)
Затем:
Tx = Cx K1 * sin(H)
Ty = Cy K1 * cos(H)
Px = Tx - K2 * cos(H)
Py = Ty K2 * sin(H)
Qx = Tx K2 * cos(H)
Qy = Ty - K2 * sin(H)
При вычислениях (Tx, Ty)
используется sin(H)
с координатами x и cos(H)
с координатами y, поскольку угол измеряется от оси Y. При вычислении (Px, Py)
и (Qx, Qy)
вы используете тот факт, что если (a, b)
это некоторый вектор, то любое кратное (-a, b)
является вектором, перпендикулярным первому. Следовательно, (sin(H), cos(H))
превращается в (-sin(H), cos(H))
и (cos(H), -sin(H))
. Это выпадает из определения скалярного произведения в двумерном декартовом пространстве и не зависящего от координат факта, что скалярное произведение перпендикулярных векторов равно нулю.