Расстояние до края эллипса с учетом вектора - PullRequest
1 голос
/ 20 октября 2019

Я пытался понять это некоторое время и не нашел ответа. Дано: Высота эллипса, Ширина эллипса, X-положение вектора, Y-положение вектора, Направление вектора.

Найти расстояние до края круга

Вот простая диаграмма: Расстояние до края круга

Я наткнулся на этот пост: Рассчитать столкновение точек между точкой данного вектора и краем круга Но это для круга, а не для эллипса.

Это мой первый пост здесь. Я был бы очень благодарен за любую помощь или указатели по этому поводу.

1 Ответ

1 голос
/ 20 октября 2019

Один из довольно простых способов сделать это - представить эллипс и вектор в их декартовых формах

x ^ 2 / a ^ 2 + y ^ 2 / b ^ 2 = 1, гдеa & b - длины большой (половинной ширины) и малой (половинной высоты) осей, а центр эллипса предполагается равным (0,0)

и

y - ypos = m (x - xpos), где xpos и ypos - положение вашего вектора, а m - наклон, косинус угла (направления), который он составляет с xось.

Решите их вместе, чтобы получить перехват, и используйте Пифагор для вычисления расстояния.

Предполагается, что центр эллипса находится в точке (0,0), а осипараллельны осям координат x и y. Если это не так, то вам понадобится более общее уравнение для эллипса, которое подробно обсуждается здесь, в Википедии .

Как указывает Вирдан в своем комментарии, вы можете получить 0, 1 или 2 решения.

0, если вектор начинается вне эллипса и полностью его пропускает.

1, если вектор является касательным к эллипсу.

2, есливектор либо проходит через эллипс, либо его начальная точка находится внутри эллипса.

В случае 2 решений допустимы значения 0,1 или 2

Если направление вектора направлено отэллипс, тогда решения для обратного вектора, тот, который указывает на 180 градусов в противоположном направлении. Это может также относиться к касательному решению. Таким образом, решение (решения) недопустимо по вашим критериям.

Если начальная точка находится внутри эллипса, то одно решение будет для результата, которого вы хотите, а другое - для обратного вектора. Таким образом, будет действительным только одно решение.

Если вектор проходит через эллипс, тогда оба решения действительны, ваш выбор, если вы игнорируете самое дальнее.

...