Hei!
Käytössä on Linux Mint 9 ja siinä uusi Inkscape.
Tässä on esimerkkinä .SVG nelikulmio jota on hieman kallistettu.
<g inkscape:label="Taso 1" inkscape:groupmode="layer" id="layer1" style="opacity:1"> <path transform="matrix(0.97444,0.22467,-0.22467,0.97444,0,0)" style="fill:#008000;fill-opacity:0.49804;stroke:none" d="M 336.27,225.54 L 701.58,225.54 C 723.79,225.54 741.67,243.42 741.67,265.63 L 741.67,491.94 C 741.67,514.16 723.79,532.04 701.58,532.04 L 336.27,532.04 C 314.05,532.04 296.17,514.16 296.17,491.94 L 296.17,265.63 C 296.17,243.42 314.05,225.54 336.27,225.54 z" id="rect2818" /> </g>
Javalle siirrettynä kysymykseni on, kuinka tuo matrix(0.97444,0.22467,-0.22467,0.97444,0,0) kuuluu laskea, minulla ei ole aiempaa kokemusta matrix laskuista.
//.....
Kiitos..
Minua hämmentää tuo matrix funktion syntaksi, koska mistä se tietää että pitääkö tehdä 1x6, 2x3, 3x2 vai 6x1 matriisi?
kpzpt kirjoitti:
kuinka tuo matrix(0.97444,0.22467,-0.22467,0.97444,0,0) kuuluu laskea
Olettaisin, että se palauttaa seuraavan näköisen matriisin (kohdassa input) http://www.wolframalpha.com/input/?i={{0.97444,
Tuolla kun sitten kertoo esim. koordinaatin 336.27,225.54 niin saa uuden koordinaatin, jota on kierretty origon suhteen 13° ( Lasku ja tulos: http://www.wolframalpha.com/input/?i={{0.97444,
Rotate!
Eli tässä on siis tuon yllä olevan matrixin rotate ??
[ cos(m1), -sin(m3) , 0 ] [ sin(m2), cos(m4) , 0 ]
ja tässä scaling ??
[ sx=m1, 0 , 0 ] [ 0 , sy=m4 , 0 ]
ja tässä translate ??
[ 1 , 0 , x=m5 ] [ 0 , 1 , y=m6 ]
Tulevatko nämä todella kaikki samasta matrixista ??
Sori että kyselen alkeita, tässä ensimmäisiä matrixeja vääntelen !!
Ei.
http://www.w3.org/TR/2003/REC-SVG11-20030114/images/coords/Matrix.png
matrix(a,b,c,d,e,f)
=
|a b c|
|d e f|
|0 0 1|
Edit.
Tai juu, samalla matriisilla voi siirtää, kääntää ja skaalata.
Hihi!
Katseleppas tuota sinun Matrix.png kuvaa ja sitten tuota esimerkki matrixiasi ??
hihi!
--
Mutta, joo, täytyypäs illalla testailla tuota Inkscapea ja Java .SVG koodin lukijaa/piirtäjääni.
Uusin Inkscape todellakin ei enää automaattisesti laske matrixeja vaan ne joutuu
nyt laskemaan käyttäjä itse käsin, kenties parempi näin, kenties huonompi, molempi lause kerää true ja false tilanteita.
//.....
Kiitos..
Ups, =)
mun moka.
Hyvä että huomasit.
Lisäys:
Kun Inkscape tallentaa alkuperäiset pisteet sekä matriisit, vähenee pyöristysvirheet.
Eli jos pyörität jotain muotoa useampaan kertaan käyttämällä edellisen pyöräytyksen tulosta seuraavan laskentaan, muoto ei ole välttämättä (riippuen kulmasta) enää sama kuin alkupepäinen muoto.
kayttaja-2499 kirjoitti:
Ups, =)
mun moka.Hyvä että huomasit.
Lisäys:
Kun Inkscape tallentaa alkuperäiset pisteet sekä matriisit, vähenee pyöristysvirheet.
Eli jos pyörität jotain muotoa useampaan kertaan käyttämällä edellisen pyöräytyksen tulosta seuraavan laskentaan, muoto ei ole välttämättä (riippuen kulmasta) enää sama kuin alkupepäinen muoto.
KorjausLisäykseen!
Juuri tämä uusin Inkscape on tuonut mukanaan uuden ominaisuuden tähän kyseiseen ongelmaan, ja juuri tämän takia olen tämän kysymyksen esittänyt, eli, uusimmassa Inkscapessa ei enää x ja y arvoja pyöritetä objekteja käänneltäessä/jne. vaan ainoastaan itse matrix arvot muuttuvat, näin objektit eivät enää menetä "muotojaansa".
Minulla on oma Java .SVG reader/drawer rakennettu tuolla wanhalla joka menettää hieman tarkkuuttaansa, ja nyt siis olen korjaamassa myös itse kun kerran myös Inkscape on taas jälleen kehittynä.
( korjaus. )
Minulla oli kirjoitus virhe tuossa edellisessä viestissäni, siinä puhuin että "ei enää automaattisesti laske matrixeja" tarkoitus oli sanoa että ei enää automaattisena laske pisteiden sijainteja pyöritellessä/skaalatessa vaan käyttää matrixeja.
//.....
Kiitos..
Aihe on jo aika vanha, joten et voi enää vastata siihen.