Может кто-нибудь помочь мне с проблемой геометрического преобразования? - PullRequest
0 голосов
/ 18 сентября 2011

Мне нужно нарисовать круговую дугу между двумя заданными точками. У меня также есть радиус дуги. Я понимаю, что это можно сделать с помощью стандартных canvas API, но мне нужно разобраться и со случаем эллиптических дуг. Этот код является обобщенным решением. Единственная проблема сейчас в том, что это не работает!

Математическая концепция этого кода - https://math.stackexchange.com/questions/53093/how-to-find-the-center-of-an-ellipse.

Мой JS-код является реализацией этого. Мой код JS можно найти по адресу http://jsfiddle.net/BkEnz/2/. В идеале оба круга должны проходить через две маленькие розовые точки.

Я надеюсь, что кто-нибудь может указать мне правильное направление. Вот уже несколько дней я пытаюсь решить эту проблему!

1 Ответ

0 голосов
/ 23 сентября 2011

Исправлена ​​эта проблема.Исправленный рабочий код: http://jsfiddle.net/ZxRBT.

Обратите внимание на строку

var t = translate(-R1R2x, -R1R2y, IDENTITY_TRANSFORM());

В моей предыдущей версии кода эта строка была

var t = translate(-R1R2x, -R1R2y, sr);

Поэтому, когда я былвычисляя значения C1 и C2, используя следующий код

C1 = compose(vut, [[R1x],[R1y],[1]]);
C2 = compose(vut, [[R2x],[R2y],[1]]);

Я также применял композицию sr к R1x,R1y и R2x,R2y, но эти точки уже были в sr координата.

Это была серьезная ошибка, которую я очень долго упускал из виду.

...