среда, 3 августа 2011 г.

Стрелки - формулы для координат.

Недавно понадобилось рисовать стрелки в программе (4fun среда для моделирования с преферансом и поэтессами), проблема - зная две точки - начало и конец отрезка, нарисовать стрелку. Решение ниже.

Итак, дано:

Даны точки (x0 ; y0) и (x1 ; y1). Дан угол между отрезками (для удобства вычислений взят 45 градусов). Дана длина мелких отрезков. Нужно найти координаты (x3 ; y3) и (x4 ; y4).

Находим угловой коэффициент прямой, проходящий через точки (x0 ; y0) и (x1 ; y1):

Делаем выкладки, для угловых коэффициентов прямых (x1 ; y1)(x3 ; y3) и (x1 ; y1)(x4 ; y4) :

Обозначим длину отрезка (x1 ; y1)(x3 ; y3) как L. Зная это L и r, можем найти x:



Теперь легко найти y:


Как видно, получили для (x3 ; y3) (x4 ; y4) по две пары точек. Нам нужно взять из них ближайшие к точке (x0 ; y0). Т.е. оценить расстояния:

Или, упростив:

Алгоритм


Берем такие (x3 ; y3) и (x4 ; y4), при которых минимально

и

соответственно.

P.S. Все картинки кликабельны.