Genauer Abstand zwischen zwei Winkeln
Übersicht

![]() |
ToeBBetreff: Genauer Abstand zwischen zwei Winkeln |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier mal ne kleine Funktion die den genauen Abstand zwischen zwei winkeln berechnet. Was ich mit Genau meine ? Nämlich die +/- abstände. Stellt euch mal vor winkel 1 ist 315° und winkel2 ist 45° (logischerweise würde man hier über null rechnen, also 90°. Wenn man aber winkel2-winkel1 rechnet, hat man -225°. Ist zwar richtig aber nicht brauchbar wenn man Object1 zu Object zwei drehen möchte. Also benutz man diese Function hier :
Code: [AUSKLAPPEN] Function Absw#(w1#,w2#)
w1 = win(w1) w2 = win(w2) w4# = win(w1+180) If (w2 < 180 And w1 < 180) Or (w2 => 180 And w1 =>180) Then w3 = w2-w1 ElseIf (w2 < 180 And w1 => 180) If w4 > w2 Then w3 = 360 - (w1-w2) Else w3 = -(w1-w2) EndIf ElseIf (w2 => 180 And w1 < 180) If w4 < w2 Then w3 = 360 - (w1-w2) Else w3 = -(w1-w2) EndIf EndIf Return w3 End Function Function win#(w#) If w < 0 w = 360 + w If w > 360 w = w - 360 Return w End Function Sry hatte ich vergessen ![]() Und schon kann man den richtigen abstand ermitteln ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
- Zuletzt bearbeitet von ToeB am Do, Okt 22, 2009 19:00, insgesamt 2-mal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Uhm... was ist die Funktion win? | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Absw(30,330) hat Folgendes geschrieben: 660
ToeB, so kann man das leider nicht gebrauchen, mach es bitte noch lauffähig. Ich kann nicht ganz nachvollziehen, ob die Funktion nun eine Drehsinnunterscheidung machen soll oder nicht. Wenn nicht, tut's auch einfach dieses hier: BlitzBasic: [AUSKLAPPEN] Function Absw#(w1#,w2#) mfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
- Zuletzt bearbeitet von Holzchopf am Do, Okt 22, 2009 19:13, insgesamt einmal bearbeitet
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nevermind, verlesen ![]() |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Holzchopf, dass hast du aber sehr Sanft ausgedrückt. ![]() Du hast mir meinen Zug versaut, das wollte ich auch schreiben. Also, siehe meine Signatur. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie wäre es mit dem hier:
Code: [AUSKLAPPEN] Abstand=Abs((540+(w2-w1)Mod 360)Mod 360-180)
Da ist ein "Abs" weniger drin... ![]() mfG mpmxyz Edit: Da hatte sich gestern abend ein kleiner Rechenfehler eingeschlichen... ![]() |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
- Zuletzt bearbeitet von mpmxyz am Fr, Okt 23, 2009 10:42, insgesamt einmal bearbeitet
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn wir schon dabei sind. Ich benutzte folgende Funktion:
Code: [AUSKLAPPEN] Function ADif#(a1#, a2#)
a1 = (a2 Mod 360) - (a1 Mod 360) If a1 > 180 Return a1 - 360 ElseIf a1 < -180 Return a1 + 360 EndIf Return a1 End Function Die ist übrigens (zumindest in meinen Tests) nicht nur schneller, sondern funktioniert auch vernünftig. Zumindest denke ich, dass die Funktion mit den Parametern (30, 330) -60 ausgeben sollte, da man sich schließlich hierbei im Uhrzeigersinn dreht. Holzchopfs Version gibt hier allerdings 60 zurück. Für (-330, 60) wird dann allerdings -30 zurückgegeben, obwohl es hier ganz klar gegen den Uhrzeigersinn geht(-330° = 30°). Und nein, Holzchopf hat nicht nur das Vorzeichen vertauscht, ansonsten würde bei (30, 60) ja nicht (korrekterweise) 30 ausgegeben werden. EDIT: @mpmxyz: Die Zeile hat tatsächlich weniger Funktionsaufrufe. Das nützt ihr allerdings wenig, da die Ergebnisse die sie liefert nicht korrekt sind(von 0 zu 0 sind es sicherlich NICHT 60 Grad). |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group