Hei Leute!
Sorry, falls das Thema nicht ganz herpaszt... hat aber Armagetron-Bezug.
Angenommen, ich zeichne einen Kreis in einem SVG-Editor (Inkscape in meinem Fall) und dreh/skalier (oder andersherum) denselben, wie kann ich aus der Transformationsmatrix den resultierenden Kreisradius ermitteln?
Beispiel:
Originalkreis (r=50), skaliert auf 50% (r=25), gedreht um 25 Grad (r=25) ergibt: matrix(0.4531, -0.2113, 0.2113, 0.4531, -33.9164, 689.2676)
Der Zahlenverhau soll jetzt 25 ergeben... irgendwie. Existiert dafür eine Formel, resp. geht das überhaupt?
SVG: Kreisradius nach Matrixtransformation?
Re: SVG: Kreisradius nach Matrixtransformation?
Für eine allgemeine Matrix geht das nicht; die macht aus einem Kreis meistens eine Ellipse. Wenn man aber weiß, dass es sich nur um eine Verschiebung/Rotation/Skalierung handelt, bleibt ein Kreis ein Kreis und der Skalierungsfaktor für einen Kreisradius ist einfach
sqrt(m_11*m_11 + m_12*m_12), wobei m_11 und m_12 die beiden Matrixelemente der ersten Zeile sind. Oder Spalte. Ist für die Formel egal. In der von dir verwendeten Matrixnotation wohl einfach die beiden ersten Zahlen.
sqrt(m_11*m_11 + m_12*m_12), wobei m_11 und m_12 die beiden Matrixelemente der ersten Zeile sind. Oder Spalte. Ist für die Formel egal. In der von dir verwendeten Matrixnotation wohl einfach die beiden ersten Zahlen.
Re: SVG: Kreisradius nach Matrixtransformation?
Ich weisz nicht, was drinsteckt. Kann alles sein, auch gleichzeitig: Scherung, Rotation...Wenn man aber weiß, dass es sich nur um [...] handelt
SVG benutzt eine Punkttransformation matrix(a b c d e f) der Art
Code: Select all
|a c e| |x_alt| |x_neu|
|b d f| * |y_alt| = |y_neu|
|0 0 1| | 1 | | 1 |
a * x_alt + c * y_alt + e = x_neu
b * x_alt + d * y_alt + f = y_neu
für quasi alles auszer Verschiebungen. Die Parameter e und f sind für mein Problem unwichtig (SVG transform matrix).
Zur Verfügung hab ich die ursprüngliche Mitte (x,y), den ursprünglichen Radius, die Mittenposition nach der Transformation und die Matrix selbst. Ich brauch aber den transformierten Radius.
Ich hab im Netz nach Matrizeninvertierung gesucht, aber ob dieser Ansatz richtig ist...?
Mir wär schon sehr geholfen, wenn man herausfinden könnte, *ob* eine Scherung/Skalierung in den Zahlen steckt, und wenn ja, mit welchen Werten.
Last edited by Wik on Sat Sep 21, 2013 2:48 pm, edited 1 time in total.
Re: SVG: Kreisradius nach Matrixtransformation?
Problem gelöst. Hab die Seitenmittelpunkte der Bounding Box ermittelt und dann mit Pythagoras... jetzt, scheint's, läuft alles wie gewollt. Danke für den Denkanstosz.