roland2 писал(а):
moveTo(x1,y1);
curveTo(x2,y2,anc1_x,anc1_y);
где:
x1,y1: начальная точка отрезка на сфере (экранные координаты)
x2,y2: конечная точка отрезка на сфере (экранные координаты)
необходимо определить:
anc1_x,anc1_y: координаты точки, определяющей кривизну отрезка, так чтобы выглядело как будто он лежит на поверхности сферы.
Macavity писал(а):
Не очень понятно (по Вашему описанию) к чему относится Ваша задача.
Вот чего хочет вопрошающий (гипотеза, разумеется)...
"Отрезок на сфере" при проектировании (центральном, параллельном) на плоскость (экран) будет выглядеть дугой плоской выпуклой кривой. В частности, если отрезок на сфере есть почти
-окружность, то это может быть почти окружность на экране, или некий овал с маленьким вырезом, но
roland2 пока об этом не задумывается. Он молча предполагает относительно короткую кривую. И рассчитывает представить её кривой Безье 2-го порядка, то бишь кусочком параболы. Я рисовал эту параболу среди прочих коников (или коник?)
в этом сюжете (она там красненькая, а остальные кривые --- рациональные
). Его точка "anc1_x,anc1_y" --- контрольная точка этой кривой
. Обозначение "anc", наверное, из какой-то его системы, и происходит от якоря (anchor).
Т.е. ему надо (как-то) спроектировать начальные и конечние точки на эту самую плоскость-экран, туда же спроектировать 3D-касательные, и сосчитать искомый якорь в точке пересечения полученных 2D-касательных.
Я так думаю.
UPD. ... Либо, что то же самое, сосчитать 3D-точку пересечения 3D-касательных к "отрезку на сфере", и её спроектировать вслед за начальной и конечной точками.
Если я Вас правильно понял,
roland2, то это и есть решение задачки. Как проектировать Вашу сферу на экран --- этого никто не знает, кроме Вас. Позаботьтесь, чтобы дуги были достаточно короткими. Длинную разбейте на кусочки. С поворотом не более
.