Возьмите две оставшиеся вершины равнобедренного треугольника с учетом некоторых ограничений. - PullRequest
2 голосов
/ 08 июля 2020

Вопрос по тригонометрии:

Я хочу найти способ случайной выборки координат двух оставшихся вершин C2 и C3 равнобедренного треугольника с учетом одной начальной координаты C1. У меня есть координата одной вершины (C1), угол между вершиной и двумя оставшимися вершинами (назовем его тета) и расстояние между C1 и двумя оставшимися вершинами C2 и C3 ( назовем его R: под равнобедренным треугольником я имею в виду, R описывает как расстояние от C1 до C2, так и от C1 до C3)

Как я могу случайно выберите две допустимые точки C2 и C3, которые удовлетворяют условиям: расстояние theta градусов (относительно C1) и одинаковое расстояние R от C1?

Отношения Я знаю, что здесь актуальны:

h = R * cos(0.5 * theta) # the length of the line between C1 and the 'base' of the triangle, i.e. the line between C2 and C3

x = R * sin(0.5 * theta) # half the length of the base, i.e. the line between C2 and C3

введите описание изображения здесь

1 Ответ

2 голосов
/ 08 июля 2020

Это довольно легко сделать, выбрав случайный угол между линией Ox и линией (c1, c2), назовем это альфа.

Вот код Джулии

c1 = [0,0]
R = 5
theta = 0.3

function rotation_matrix(theta::Real)
    @. theta * [1 -1; 1 1] |> [cos sin; sin cos]
end

alpha = 2pi * rand(Float64)

c2 = R * rotation_matrix(alpha) * [1,0] + c1
c3 = R * rotation_matrix(alpha + theta) * [1,0] + c1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...