Elegantere Lösung für Winkelberechnung
Übersicht

![]() |
HubsiBetreff: Elegantere Lösung für Winkelberechnung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hai beisammen.
Ich habe einen realen Winkel als Integer gegeben und suche nun den nächstliegenden 45°-Schritt dazu. Ich habe auch eine funktionierende Lösung dafür geschrieben, aber mich stört etwas der "unhandliche" und wenig ästhetisch wirkende Code. BlitzBasic: [AUSKLAPPEN] tmp_int=(ATan2(ball_y-p\y,ball_x-p\x)+360) Mod 360 ; Winkel real Ein wüstes Select...Case-Konstrukt wie Ihr seht, aber mir fällt nichts ein wie ich das schön mathematisch runterbrechen könnte. Hat da vielleicht jemand eine Idee für mich? |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN] For angle:Int = 0 To 360 Beachte: ... schreibt man 0.5*Part statt Part/2, klappt's nicht ![]() |
||
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Interessant oO
Genau das selbe hatte ich die tage auch irgendwo versucht, aber immer mit 0.5*wert. Gibt es einen besonderen grund, warum sich das scheinbar gleiche * 1/2 bzw /2 anders verhalten? Wird das eventuell anders gerundet? |
||
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klar: Die Integer-Variable Part bleibt ein Integer, wenn man sie durch die "Integer 2" teilt. Wenn man sie jedoch mit einem Float multipliziert wie 0.5, mutiert der Term insgesamt zu einem Float und rechnet ab da an "genau" (und verliert dabei den hier gewollten Rundungseffekt). Übrigens würde das Gleiche auch passieren, wenn man durch 2.0 anstatt durch 2 dividiert. | ||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen lieben Dank ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group