Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-09-2002, 14:44   #1 (permalink)
Trainman
 
Benutzerbild von Hamster2k
 
Registriert seit: Sep 2001
Ort: Wien, Österreich
Beiträge: 1.324
Question ersten 3d schritte...

arbeite grad an meinem ersten 3d gehversuch, code ist folgender:
ActionScript:
  1. cos = Math.cos;
  2. sin = Math.sin;
  3. pi = Math.PI;
  4. function point(x,y,z) {
  5.     this.x = x;
  6.     this.y = y;
  7.     this.z = z;
  8.     _global.numpoints ++;
  9. }
  10. point.prototype.rotateX = function(alpha) {
  11.     var rotX21 = 0;
  12.     var rotX22 = cos(alpha);
  13.     var rotX23 = sin(alpha);
  14.     var rotX31 = 0;
  15.     var rotX32 = -sin(alpha);
  16.     var rotX33 = cos(alpha);
  17.     this.y = (rotx21*this.x)+(rotx22*this.y)+(rotx23*this.z);
  18.     this.z = (rotx31*this.x)+(rotx32*this.y)+(rotx33*this.z);
  19. }
  20. point.prototype.rotateY = function(beta) {
  21.     var rotY11 = cos(beta);
  22.     var rotY12 = 0;
  23.     var rotY13 = -sin(beta);
  24.     var rotY31 = sin(beta);
  25.     var rotY32 = 0;
  26.     var rotY33 = cos(beta);
  27.     this.x = (roty11*this.x)+(roty12*this.y)+(roty13*this.z);
  28.     this.z = (roty31*this.x)+(roty32*this.y)+(roty33*this.z);
  29. }
  30. var breite = 50;
  31. p1 = new point(-breite,breite,breite);
  32. p2 = new point(breite,breite,breite);
  33. p3 = new point(breite,-breite,breite);
  34. p4 = new point(-breite,-breite,breite);
  35. p5 = new point(-breite,breite,-breite);
  36. p6 = new point(breite,breite,-breite);
  37. p7 = new point(breite,-breite,-breite);
  38. p8 = new point(-breite,-breite,-breite);
  39. _root.createEmptyMovieClip("lines",0);
  40. d = 400;
  41. _root.onEnterFrame = function() {
  42.     _root.lines.clear();
  43.     _root.lines.lineStyle(1,0x000000,100);
  44.     for(i=1;i<=numpoints;i++) {
  45.     p = eval("p"+i);
  46.     p.rotateX(pi/180);
  47.     p.y1 = ((p.y*d)/(d+p.z))+200;
  48.     p.x1 = ((p.x*d)/(d+p.z))+200;
  49.     }
  50.     with(_root.lines) {
  51.         moveTo(p1.x1,p1.y1);
  52.         lineTo(p2.x1,p2.y1);
  53.         lineTo(p3.x1,p3.y1);
  54.         lineTo(p4.x1,p4.y1);
  55.         lineTo(p8.x1,p8.y1);
  56.         lineTo(p7.x1,p7.y1);
  57.         lineTo(p6.x1,p6.y1);
  58.         lineTo(p5.x1,p5.y1);
  59.         lineTo(p8.x1,p8.y1);
  60.         moveTo(p3.x1,p3.y1);
  61.         lineTo(p7.x1,p7.y1);
  62.         moveTo(p2.x1,p2.y1);
  63.         lineTo(p6.x1,p6.y1);
  64.         moveTo(p1.x1,p1.y1);
  65.         lineTo(p5.x1,p5.y1);
  66.         moveTo(p4.x1,p4.y1);
  67.         lineTo(p1.x1,p1.y1);
  68.     }
  69. }
(einfach ins erste Frame von _root geben)

mein problem ist jetzt, dass bei der rotation um die x achse y und z der punkte mit der zeit immer kleiner werden, und bei der rotation um die y achse x und z immer kleiner werden, und ich nicht weiss warum.

danke sehr im voraus
__________________
So much to learn and so little time.

Ich liebe dieses Forum!!
Hamster2k ist offline   Mit Zitat antworten
Alt 26-09-2002, 18:39   #2 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Vorm PC
Beiträge: 1.583
ich weiss jetzt nicht vonwo du die matrix hast, ich habe bis jetzt immer mit weltkoordinaten gemacht mit der selben matrix. in deinem beispiel seh ich keine weltkoordinaten.
Gnut ist offline   Mit Zitat antworten
Alt 26-09-2002, 18:40   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Vorm PC
Beiträge: 1.583
übgrigens rotze's engine läuft ohne weltkoordinaten.
Gnut ist offline   Mit Zitat antworten
Alt 26-09-2002, 19:22   #4 (permalink)
Trainman
 
Benutzerbild von Hamster2k
 
Registriert seit: Sep 2001
Ort: Wien, Österreich
Beiträge: 1.324
weltkoordinaten????
__________________
So much to learn and so little time.

Ich liebe dieses Forum!!
Hamster2k ist offline   Mit Zitat antworten
Alt 26-09-2002, 19:23   #5 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
tja das ist ein Rundungsproblem:
Flash rechnet (glaub ich) mit 8 Stellen hinter den Komma, was dahinter kommt wird abgeschnitten, klingt bedeutungslos geade bei sinus oder cosinuswerten ist es aber schon ein guter Teil und wenn das jetzt ständig gemacht wird, dann siehst Du es irgendwann.

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 26-09-2002, 19:24   #6 (permalink)
Trainman
 
Benutzerbild von Hamster2k
 
Registriert seit: Sep 2001
Ort: Wien, Österreich
Beiträge: 1.324
und wie kann ich das umgehen?
__________________
So much to learn and so little time.

Ich liebe dieses Forum!!
Hamster2k ist offline   Mit Zitat antworten
Alt 26-09-2002, 20:00   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Vorm PC
Beiträge: 1.583
ok, ist doch nicht die selbe ich benutze 4x4 du und rotze 3x3:

deswegen hier:

3-D Gittermodelle

einfach abschreiben und anpassen, da ist schon xyz-rotation in eine ;o)
Gnut ist offline   Mit Zitat antworten
Alt 26-09-2002, 20:40   #8 (permalink)
Trainman
 
Benutzerbild von Hamster2k
 
Registriert seit: Sep 2001
Ort: Wien, Österreich
Beiträge: 1.324
das mag sein, aber das ist exakt dasselbe was ich mach, nur dass alles in einem schritt ist... das löst mein problem net
__________________
So much to learn and so little time.

Ich liebe dieses Forum!!
Hamster2k ist offline   Mit Zitat antworten
Alt 26-09-2002, 20:45   #9 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Vorm PC
Beiträge: 1.583
was hast du denn dagegen rotze's optimierung zu benutzen?
Gnut ist offline   Mit Zitat antworten
Alt 26-09-2002, 20:46   #10 (permalink)
Trainman
 
Benutzerbild von Hamster2k
 
Registriert seit: Sep 2001
Ort: Wien, Österreich
Beiträge: 1.324
und was gegen rundungsfehler spricht ist, dass der grad des "dünnerwerdens" nicht von den durchgeführten operationen, sondern von der rotation abhängt, also wenn ich das ganze schneller rotieren lass, wirds auch schneller kleiner, obwohl die rechenoperationen eigentlich weniger werden.
__________________
So much to learn and so little time.

Ich liebe dieses Forum!!
Hamster2k ist offline   Mit Zitat antworten
Alt 26-09-2002, 20:46   #11 (permalink)
Trainman
 
Benutzerbild von Hamster2k
 
Registriert seit: Sep 2001
Ort: Wien, Österreich
Beiträge: 1.324
hab nix dagegen, nur löst es mein problem net...
__________________
So much to learn and so little time.

Ich liebe dieses Forum!!
Hamster2k ist offline   Mit Zitat antworten
Alt 26-09-2002, 20:49   #12 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Vorm PC
Beiträge: 1.583
wo ist dein problem? kannst du das nicht anpassen oder was?
Gnut ist offline   Mit Zitat antworten
Alt 26-09-2002, 20:54   #13 (permalink)
Trainman
 
Benutzerbild von Hamster2k
 
Registriert seit: Sep 2001
Ort: Wien, Österreich
Beiträge: 1.324
mein problem ist, dass wenn man das von mir oben gepostete script laufen lässt der würfel immer kleiner wird, und ich nicht weiss warum...
dürfte eigentlich nicht so sein.

ich kann rotzes script einbauen, aber das würde nichts ändern...
__________________
So much to learn and so little time.

Ich liebe dieses Forum!!
Hamster2k ist offline   Mit Zitat antworten
Alt 26-09-2002, 21:03   #14 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Vorm PC
Beiträge: 1.583
nein weil er seine dreh-koordinaten nicht überschreibt, damit entsteht keine rundungsfehler.
Gnut ist offline   Mit Zitat antworten
Alt 26-09-2002, 21:09   #15 (permalink)
Trainman
 
Benutzerbild von Hamster2k
 
Registriert seit: Sep 2001
Ort: Wien, Österreich
Beiträge: 1.324
hmmm.... das kann sein... ich probiers schnell aus
__________________
So much to learn and so little time.

Ich liebe dieses Forum!!
Hamster2k 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 13:00 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele