Я работаю над программой, которая рисует фигуры на основе ввода файла cgm. Я пытаюсь нарисовать эллиптическую дугу, и она дает начальную часть в виде начального и конечного вектора от центра дуги. Мне нужна помощь в расчете угла к вектору, чтобы я мог рисовать.
Я пытался использовать стандарт atan2 (y / x), но потом я обнаружил, что он действителен для кругов, а не для эллипсов.
Это изображение дает пример того, что я пытаюсь сделать. Я ищу углы А и Б.
редактировать: это связано с моим другим вопросом Вот. (Также обратите внимание, что этот вопрос основан на математике, стоящей за моей проблемой, в то время как другой вопрос был о помощи в программировании с qt.)
Вики-страница на эллипсы вроде показывает, почему математика не работает, но я не уверен, как ее реализовать.
Углы А и В, которые вы рисуете на своей картине, на самом деле не имеют ничего общего с эллипсом.
Просто рассчитайте один раз угол между осью X и линией от начала координат до точки (75,50). Это дано arctan(50/75) = 33.69°
. А по симметрии он такой же, как угол к точке (75, -50).
Тогда, с помощью простой тригонометрии, для угла A
ты получаешь A = 360° - 33.69°
тогда как для B
ты получаешь B= 180° + 33.69°
,
принимая во внимание A
это та же информация, которая получается atan2(-50, 75)
, Тем не менее, результат atan2
находится в (i) в радианах и (ii) в диапазоне [-pi, pi]
, Вы могли бы добавить 2*pi
и выразить это в углах, и вы получите тот же результат, что и выше.
Других решений пока нет …