2012-01-02 3 views
1

Может ли кто-нибудь предоставить мне алгоритм для рисования точек на дуге? Я знаю начальную точку, конечную точку и радиус. Мне нужно показать точки на дуге, созданной этой информацией (начальная точка, конечная точка и радиус).рисунок дуги точки

Смотреть изображение для более подробной информации enter image description here

У меня есть Start-точка (х, у), конечная точка (а, б). Я должен рассчитать равное расстояние 5 баллов по дуге. Является ли это возможным?

+2

О какой дуге мы говорим здесь? Предполагая, что вы говорите о [аккордах] (http://en.wikipedia.org/wiki/Chord_ (геометрия)), невозможно даже вытянуть хорду при любых произвольных начальных/конечных точках и радиусе. Например, невозможно иметь аккорд с начальной точкой (0, 0), конечной точкой (100, 100) и радиусом 1. Обычно рисунки аккордов обычно указываются в терминах центра круга, радиуса, и измерения начала/окончания. –

ответ

2

Стандартным алгоритмом для этого является Midpoint circle algorithm (иногда называемый алгоритмом круга Брешенема).

Обратите внимание, что спецификация вашей дуги является неполной. Как правило, две дуги одного и того же радиуса соединяют две заданные точки, одну для центра на каждой стороне линии, соединяющей точки. Кроме того, как указывает @In silico, радиус может быть не меньше половины расстояния между точками.

0

Средство для определения дуги аналогично тому, как это используется в SVG, в котором есть некоторые подробные implementation notes, которые слишком длинны для копирования здесь. Для круговых дуг радиусы x и y равны, поэтому угол оси x не важен. Как отметил Тед Хопп, вам нужен флаг, указывающий, в каком направлении нарисована дуга (в SVG называется large-arc-flag).

Как только у вас есть центр и углы начала и конца дуги, разделите угол на шесть и используйте sin/cos этого угла для построения пяти промежуточных точек.

Смежные вопросы