Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-10-2005, 18:33   #1 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
Matrix Scale Rotate ....

einfachheits halber habe 2 MC die in einander verschachtelt sind (konten speter 100te verschachtelungen werden)

also Master
und Master.Slave

jetzt dreh ich den Master mit myMatrix.rotate(radians);

ergebnis Master und Slave sind verdreht
das ist OK

nun will ich den Slave Scalen undzwar horisontal
myMatrix.scale(2, 1);

PROBLEM !!!!

es Scalt zwar aber die scalierung ist verdreht da ja der Master verdreht ist

wie kan ich das umrechnen

heist ich habe ein clip mit

30º drehung
(a=0.866025403784439, b=0.5, c=-0.5, d=0.866025403784439, tx=0, ty=0)
in dem ein clip ist (der adaptiert diese drehung ebenfals was beabsichtigt ist)

(a=2, b=0, c=0, d=1, tx=0, ty=0)

das wurde den Slave auf 2*breite setzen (tuts auch)
das problem ist das es im coordinatensystem des Masters geschiet
und das will ich NET !


hat jemand ne antwort oder die adresse zu einem guten matamatik forum ???

danke im vorraus (sitze seit 2 wochen dran und kein vorwerts komen)
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 16-10-2005, 18:50   #2 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
erstellst du die mc's komplett per as, oder sind es rechtecke, die attacht/dubliziert werden?

beim zweiten sehe ich eher keine Lösung... weil du dabei aus nem rechteck nen parallelogramm machen müsstest und ich nicht wüsste, wie man aus nem rechteck per as nen parallelo gramm macht, wenn es ein gezeichnetes rechteck is

Geändert von pape (16-10-2005 um 18:51 Uhr)
pape ist offline   Mit Zitat antworten
Alt 16-10-2005, 19:03   #3 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
ActionScript:
  1. _root.createEmptyMovieClip("Master", 0);
  2. TM = new flash.geom.Transform(Master);
  3. _bmp1 = new flash.display.BitmapData(150, 150, false, 0x00FF0000);
  4. Master.attachBitmap(_bmp1, 0);
  5. Master.createEmptyMovieClip("Slave", 1);
  6. TS = new flash.geom.Transform(Master.Slave);
  7. _bmp2 = new flash.display.BitmapData(50, 50, false, 0x000000FF);
  8. Master.Slave.attachBitmap(_bmp2, 1);
  9. //
  10. M = new flash.geom.Matrix();
  11. M.translate(100, 50);
  12. TM.matrix = M;
  13. //Rotate Master
  14. M.identity();
  15. M.rotate(45/180*Math.PI);
  16. Tmp = TM.matrix.clone();
  17. M.concat(Tmp);
  18. TM.matrix = M;
  19. //Scale Slave
  20. M.identity();
  21. M.scale(2, 1);
  22. Tmp = TS.matrix.clone();
  23. M.concat(Tmp);
  24. TS.matrix = M;
  25. ////////////////////////////
  26. //
  27. //
  28. //SO sols aussehen !!!!!!
  29. //
  30. _root.createEmptyMovieClip("Master1", 1);
  31. TM1 = new flash.geom.Transform(Master1);
  32. _bmp1 = new flash.display.BitmapData(150, 150, false, 0x00FF0000);
  33. Master1.attachBitmap(_bmp1, 0);
  34. _root.createEmptyMovieClip("Slave1", 2);
  35. TS1 = new flash.geom.Transform(Slave1);
  36. _bmp2 = new flash.display.BitmapData(50, 50, false, 0x000000FF);
  37. Slave1.attachBitmap(_bmp2, 1);
  38. //
  39. M = new flash.geom.Matrix();
  40. M.translate(350, 50);
  41. TM1.matrix = M;
  42. TS1.matrix = M;
  43. //
  44. M.identity();
  45. M.rotate(45/180*Math.PI);
  46. Tmp = TM1.matrix.clone();
  47. M.concat(Tmp);
  48. TM1.matrix = M;
  49. M.identity();
  50. M.rotate(45/180*Math.PI);
  51. Tmp = TS1.matrix.clone();
  52. M.concat(Tmp);
  53. TS1.matrix = M;
  54. //
  55. M.identity();
  56. Orgmatrix = TS1.matrix.clone();
  57. M.a = 2;
  58. M.d = 1;
  59. //
  60. M.tx = Orgmatrix.tx;
  61. M.ty = Orgmatrix.ty;
  62. //
  63. Orgmatrix.tx = 0;
  64. Orgmatrix.ty = 0;
  65. Orgmatrix.concat(M);
  66. TS1.matrix = Orgmatrix;
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 16-10-2005, 19:05   #4 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
P.S

liege ich falsch wen ich sage das alle rechtecke paralelograme sind ???
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 16-10-2005, 19:19   #5 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
Willst du eine isometrische Perspective ?

Code:
import flash.display.*;
import flash.geom.*;

var tile: BitmapData = new BitmapData( 64, 64, false, 0xffcc00 );

var clip: MovieClip = this.createEmptyMovieClip( 'clip', 0 );
clip.attachBitmap( tile, 0 );

var cm: Matrix = clip.transform.matrix;

cm.createBox( 2, 1, Math.PI/4, 128, 64 );

clip.transform.matrix = cm;
Für die Drehung kommt dann noch etwas Code dazu...
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 16-10-2005, 19:50   #6 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
Zitat:
Zitat von Xeef
liege ich falsch wen ich sage das alle rechtecke paralelograme sind ???
nein.

Ich glaub ich kann dir hier nicht weiterhelfen, weil ich kein Flash8 besitze und scheinbar neue Funktionen dabei sind die du benutzt.. dachte es ginge ums verständnis...^^

Man könnte mit moveTo, LineTo usw. arbeiten um die sachen zu zeichnen und das könnte man vektoriell machen und dann über satz von pythagoras oder evtl. trigonometrie nach rotation manuell das scalen aufsplitten in die koordinaten der eckpunkte bzw. in die vektoren...

pape
pape ist offline   Mit Zitat antworten
Alt 16-10-2005, 20:13   #7 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
worum es geht

es soll eine art grapicheditor sein

du kanst drehen,scale,skew ....

UND

die objecte konen verschachtelt werden

z.B

BackGorund (das Mehr)
BackGorund.Schiff (ein schiff)

wen ich nunBackGorund drehe (45º) dreht sich das schiff mit (ist ja ein child von BackGorund)

jetzt wo ich nicht weiter komme
jetzt will ich das Schiff scalen (_xscale)
es solte breiter werden
was es aber tut ist das es breiter und hoher wird (es bleibt ein rechteck)
es solte aber eine raute werden

wen ihr den code laufen laesst seht ihr 2 * B(laues in rote rechteck)
das linke ist was ich kriege das rechte ist was ich brauche
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 16-10-2005, 22:52   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
du willst das objekt ja nicht über seine x-/y- achse scalieren, sondern über seine diagonale. darum: drehen, scalieren, zurückdrehen.
mehrere transformationen können in einer matrix aufmultipliziert werden:
ActionScript:
  1. var cRad = Math.PI/180;
  2. //
  3. _root.createEmptyMovieClip("Master", 0);
  4. TM = new flash.geom.Transform(Master);
  5. _bmp1 = new flash.display.BitmapData(150, 150, false, 0x00FF0000);
  6. Master.attachBitmap(_bmp1, 0);
  7. Master.createEmptyMovieClip("Slave", 1);
  8. TS = new flash.geom.Transform(Master.Slave);
  9. _bmp2 = new flash.display.BitmapData(50, 50, false, 0x000000FF);
  10. Master.Slave.attachBitmap(_bmp2, 1);
  11. //
  12. M = new flash.geom.Matrix();
  13. M.rotate(45*cRad);
  14. M.translate(100, 50);
  15. TM.matrix = M;
  16. //
  17. M.identity();
  18. M.rotate(45*cRad);
  19. M.scale(2, 1);
  20. M.rotate(-45*cRad);
  21. TS.matrix = M;
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (16-10-2005 um 23:19 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 17-10-2005, 00:23   #9 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
hgseib dein beispiel als denk anstos hat mir gefelt danke !

das scheint jetzt zu funktionieren wer bok hat bitte testen
werds die tage in die anwendung einbauet und hofentlicht tut es wirklich
und es scheint mir nicht nur so

ActionScript:
  1. var cRad = Math.PI/180;
  2. //
  3. _root.createEmptyMovieClip("Master", 0);
  4. Master.Matrix = new flash.geom.Transform(Master);
  5. Master._bmp = new flash.display.BitmapData(150, 150, false, 0x00FF0000);
  6. Master.attachBitmap(Master._bmp, 0);
  7. Master.createEmptyMovieClip("Slave", 1);
  8. Master.Slave.Matrix = new flash.geom.Transform(Master.Slave);
  9. Master.Slave._bmp = new flash.display.BitmapData(50, 50, false, 0x000000FF);
  10. Master.Slave.attachBitmap(Master.Slave._bmp, 1);
  11. //
  12. TempMatrix = new flash.geom.Matrix();
  13. TempMatrix.rotate(45*cRad);
  14. TempMatrix.translate(100, 50);
  15. Master.Matrix.matrix = TempMatrix;
  16. //
  17. TempMatrix = new flash.geom.Matrix();
  18. TempMatrix.scale(1, 2);
  19. TempMatrix.rotate(-45*cRad);
  20. TempMatrix.translate(80, 60);
  21. Master.Slave.Matrix.matrix = TempMatrix;
  22. //
  23. //
  24. //
  25. //
  26. //
  27. //
  28. //
  29. Matrix_Apply = new flash.geom.Matrix();
  30. Matrix_Apply.scale(1.5, 1);
  31. Master.Slave.Matrix.matrix = MatrixWrap(Master.Matrix.matrix, Master.Slave.Matrix.matrix, Matrix_Apply);
  32. //
  33. function MatrixWrap(Matrix_Parent, Matrix_Self, Matrix_Apply) {
  34.  var Matrix_Parent = Matrix_Parent.clone();
  35.  var Matrix_Self = Matrix_Self.clone();
  36.  var Matrix_Apply = Matrix_Apply.clone();
  37.  var Matrix_Return = new flash.geom.Matrix();
  38.  //
  39.  
  40.  var X = Matrix_Self.tx;
  41.  Matrix_Self.tx = Matrix_Parent.tx =0;
  42.  var Y = Matrix_Self.ty;
  43.  Matrix_Self.ty = Matrix_Parent.ty = 0;
  44.  //
  45.  Matrix_Return.concat(Matrix_Self);
  46.  Matrix_Return.concat(Matrix_Parent);
  47.  Matrix_Return.concat(Matrix_Apply);
  48.  Matrix_Parent.invert();
  49.  Matrix_Parent.tx += X;
  50.  Matrix_Parent.ty += Y;
  51.  Matrix_Return.concat(Matrix_Parent);
  52.  return Matrix_Return;
  53. }
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele