Während ich an der SVG-Implementierung für Internet Explorer arbeitete, um auf einem eigenen VML-Format zu basieren, kam ich zu einem Problem der Übersetzung eines elliptischen SVG-Bogens in einen elliptischen VML-Bogen. zwei Winkel für zwei Punkte auf Ellipsen und Längen von Radien, In SVG wird ein Lichtbogen gegeben durch:Wie man den Mittelpunkt einer Ellipse durch zwei Punkte und Radiusgrößen berechnet
In VML wird ein Lichtbogen gegeben durch zwei Paare von Koordinaten für zwei Punkte auf Ellipsen und Größen von Ellipsen Grenzbox
So ist die Frage: Wie man Winkel von zwei Punkten auf Ellipse zu zwei Paaren ihrer Koordinaten ausdrückt. Eine Zwischenfrage könnte lauten: Wie finde ich den Mittelpunkt einer Ellipse anhand der Koordinaten eines Punktpaars auf ihrer Kurve?
Update: Lassen Sie uns eine Vorbedingung haben, dass eine Ellipse normalerweise platziert wird (ihre Radien sind parallel zur linearen Koordinatensystemachse), daher wird keine Rotation angewendet.
aktualisieren: Ellipsenelement, sondern auf „a“ elliptischen Bogen Befehl in SVG: diese Frage nicht zu SVG zusammenhängt Pfadelement (SVG Paths: The elliptical arc curve commands)
Um explizit zu sein: t1 = a1 + a2, t2 = a1-a2, x0 = x1 - a * cos (t1), y0 = y1 - b * sin (t1) – AndrewS
Könnten Sie bitte ein Beispiel schreiben, das von einem SVG-Bogen in einen VML-Bogen konvertiert? z.B. "A80 80 0 1 0 200 200" erzeugt einen großen Bogen im Uhrzeigersinn mit einem Radius von 80 bis 200.200. Wie könnte dies in VML repliziert werden? Vielen Dank! – DeadPassive
Ist y0 = y1 - b * sin (t1) korrekt, oder sollte das sin (t2) sein? – DeadPassive