[Help] Winkel aus 2 Punkten

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

TheGamePope

Betreff: [Help] Winkel aus 2 Punkten

BeitragSo, Jul 25, 2010 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi. Ich arbeite zurzeit an einem bone system, bei dem man auch bilder an die bones anfügen kann. Mein problem ist allerdings, das der winkel des bildes nicht richtig berechnet wird. Die frage ist bloß, wo ist der fehler? Hier der code:

Code: [AUSKLAPPEN]

Type Vec2
               Field X
               Field Y
end Type

Function CalculateAngleFromPoints:Float( point1:Vec2, point2:Vec2)
      _x = Abs(point1.x-point2.x)
      _y = Abs(point1.y-point2.y)
      If (point1.x>point2.x And point1.y<point2.y)
         _add = _add+90
      ElseIf (point1.x<point2.x And point1.y>point2.y)
         _add = _add+180
      ElseIf (point1.x>point2.x And point1.y>point2.y)
         _add = _add+270
      EndIf
      If (_y=0)
         Return ATan(0)+_add
      EndIf
      Return ATan(Float(_x)/Float(_y))+_add
   End Function
 

n-Halbleiter

BeitragSo, Jul 25, 2010 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ATan2 dürfte hier dein Freund sein. BlitzMax: [AUSKLAPPEN]
Type Vec2
Field X
Field Y
End Type

Function CalculateAngleFromPoints:Float( point1:Vec2, point2:Vec2)
Return (ATan2(Point2.y-Point1.y,Point2.x-Point1.x)+360) Mod 360
End Function


Dafür lege ich allerdings meine Hand nicht ins Feuer. Ist ungetestet, müsste aber funktionieren (sollte ich nicht irgendwo einen Denkfehler haben).

Übrigens: Das Teil befindet sich in BRL.Math. Falls du ein Framework verwendest.
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)
  • Zuletzt bearbeitet von n-Halbleiter am So, Jul 25, 2010 12:17, insgesamt einmal bearbeitet
 

TheGamePope

BeitragSo, Jul 25, 2010 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die schnelle Antwort. Funktioniert aber leider nich. Jetzt dreht sichs garnichtmehr...
 

n-Halbleiter

BeitragSo, Jul 25, 2010 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Dummer Fehler meinerseits, tut mir Leid. Habe ihn oben jetzt korrigiert.

Du musst Zitat:
(ATan2(Point2.y-Point1.y,Point2.x-Point2.x)+360)

zu Zitat:
(ATan2(Point2.y-Point1.y,Point2.x-Point1.x)+360)

umändern.. Rolling Eyes
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)
 

TheGamePope

BeitragSo, Jul 25, 2010 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja. Vielen vielen dank funktioniert sehr gut.

/request close

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group