Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-08-2005, 14:03   #1 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
Berechnung der Winkelhalbierenden

Hallo!
Ich habe 3 Punkte mit x/y Koordinaten: np, n, nn
es wird ein Winkel aufgespannt np-->n-->nn
nun möchte ich den Vektor berechnen der diesen Winkel halbiert.
Wie macht man sowas?

(Brauche das zur Berechnung der Vertex-Normalen eines Polygons. Also von Jedem Eckpunkt des Polygons einen nach außen gerichteten Vektor.)

danke
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 09-08-2005, 14:59   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
z.B. so:
ActionScript:
  1. public function getBisector(v:Vector2D) : Vector2D
  2.     {
  3.         return getNormalize().getPlus(v.getNormalize());
  4.     }
  5.  
  6. // mit
  7.  
  8. public function getNormalize(Void) : Vector2D
  9.     {
  10.         var ln:Number = this.length();
  11.  
  12.         return (new Vector2D(x / ln, y / ln));
  13.     }
  14.  
  15.  
  16.  
  17. public function getPlus(v:Vector2D) : Vector2D
  18.     {
  19.         return (new Vector2D(x + v.x, y + v.y));
  20.     }
  21.  
  22. public function length(Void) : Number
  23.     {
  24.         return Math.sqrt(x * x + y * y);
  25.     }
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 09-08-2005, 16:07   #3 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
ok, danke!
so hab ich mir das uch gedacht, nur ist mir das etwas umständlich vorgekommen.

der "Bisector" Vektor muss dann ja nochmal normalisiert werden oder?

also insgesamt 3 mal normalisieren.


kannst dir mal ansehen wofür ich das gebraucht hab --> Anhang balloon2.zip

hier mein (etwas unübersichtlicher) Code:
ActionScript:
  1. function vertexNormal(np, n, nn){
  2.  
  3. // Einfachere Formel!?
  4.  
  5. var dpx = np._x - n._x;
  6. var dpy = np._y - n._y;
  7. var dnx = nn._x - n._x;
  8. var dny = nn._y - n._y;
  9.  
  10. var nx = -dny;
  11. var ny = dnx;
  12. var na = Math.sqrt(nx*nx+ny*ny);
  13. if(na==0){
  14. nx = 1; ny = 0;
  15. }else{
  16. nx /= na;
  17. ny /= na;
  18. }
  19. var px = dpy
  20. var py = -dpx;
  21. var pa = Math.sqrt(px*px+py*py);
  22. if(pa==0){
  23. px = 1; py = 0;
  24. }else{
  25. px /= pa;
  26. py /= pa;
  27. }
  28. var fx = nx + px;
  29. var fy = ny + py;
  30. var fa = Math.sqrt(fx*fx+fy*fy);
  31.  
  32. if(fa==0){
  33. fx = 1; fy = 0;
  34. }else{
  35. fx /= fa;
  36. fy /= fa;
  37. }
  38. return {x:fx, y:fy};
  39. }
Angehängte Dateien
Dateityp: zip balloon2.zip (2,1 KB, 11x aufgerufen)
__________________
Some Flash Worx

Geändert von Alphanimal (09-08-2005 um 16:09 Uhr)
Alphanimal ist offline   Mit Zitat antworten
Alt 09-08-2005, 16:43   #4 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Wenn du ne Vektor-Klasse verwenden würdest, wäre es eine Zeile.
Vielleicht etwas langsamer, aber sicher nicht wesentlich.

EDIT:
schickes Schlabberteil, das du da gebastelt hast.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)

Geändert von Janoscharlipp (09-08-2005 um 16:53 Uhr)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 10-08-2005, 00:00   #5 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
ok...
hab eine ganz einfache Methode gefunden:
ActionScript:
  1. nx =  dy/da;
  2. ny =  -dx/da;

funktioniert, wenn ich die Kräfte nicht auf die Vertices wirken lasse, sondern auf die Polygon-Kanten.
nx, ny: Normalvektor
dx, dy: abstand zwischen den vertices in x/y
da:abstand zwischen den vertices sqr. (zum normalisieren)

hab ich aus einem göttlichen tutorial üver Soft Body Dynamics:
http://panoramix.ift.uni.wroc.pl/~ma...osoftbody.html
__________________
Some Flash Worx
Alphanimal 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:41 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele