Winkel berechnen?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

bruce85

Betreff: Winkel berechnen?

BeitragDo, Mai 26, 2011 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich versuche irgendwie den Winkel eines Kreises zu berechnen, leider weiss ich nicht, ob dies möglich ist.
Ich hab mir das so überlegt:
Ich lade das bild in ein PixMap und lese die einzelnen Pixel aus und die Pixeln, die Schwarz sind, möchte ich berechnen, welchen abrall Winkel diese haben, da ich die Daten des Kreises später dann in ein Textdatei speichern möchte um die Kollision des Kreises dann später mit andere Opjekte einfacher zu Prüfen.

Edit: Hier mal ein Bild:
user posted image

BlitzMax: [AUSKLAPPEN]
Function WinkelBerechnen()
Local Pixel:Int
For Local j:Int=0 Until 99
For Local i:Int=0 Until 99
Pixel = ReadPixel(tmpPix,i,j)
If getPixmapRed(tmpPix,i,j) = 0 And getPixmapGreen(tmpPix,i,j) = 0 And getPixmapBlue(tmpPix,i,j) = 0 Then
Kreis.Winkel... = ?
EndIf
Next
Next
End Function


Ich weiss leider nicht, ob es Vielleicht andere Sinnvolle Methode gibt oder so.
Kann mir Vielleicht jemand helfen, wie ich das berechnen könnte?

Ich bedanke mich schonmal im Voraus.

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Xeres

Moderator

BeitragDo, Mai 26, 2011 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Der "Winkel eines Kreises"? Was soll damit gemeint sein?
Die Abprall-Berechnungen zweier Kreise sind unnötig zwischen zu speichern und ich kann mir auch nicht vorstellen, dass es damit schneller geht.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bruce85

BeitragDo, Mai 26, 2011 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Dir.
Wie könnte ich die Abprall-Berechnungen zweier Kreise dann berechnen?

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Xeres

Moderator

BeitragDo, Mai 26, 2011 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Generell gibt es eine Kollision, wenn die Kreismittelpunkte sicher näher sind als die die Summe ihrer Radien.
Mit Atan2 kannst du den Kollisionswinkel bestimmen und dann weiter verfahren, wie du es für richtig hältst, je nach dem ob du noch Massen in Betracht ziehen willst oder einfach die Geschwindigkeit(Vektoren) tauschst.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bruce85

BeitragDo, Mai 26, 2011 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich werde es später mal testen, vielen Dank.

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

bruce85

BeitragSo, Mai 29, 2011 0:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo nochmal,
wie kann ich den Winkel bei diesem Object berechnen:
http://s7.directupload.net/fil...6k_png.htm
also, wenn z.B. ein anderes Object mit diesem Object Kollidiert, dann möchte ich den Abrallwinkel berechnen.

Gibt es in BlitzMax Vielleicht schon fertige Source oder so?

Danke schonmal.

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

bruce85

BeitragMi, Jun 01, 2011 0:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Weiss denn keiner wie ich das machen könnte?

Ich hab als Spieler jetzt nur ein einfache Kreis erstellt und wenn der Spieler mit dem Ball kollidiert, dann möchte ich den Abrallwinkel berechnen.

Ich hab das mal so versucht:
BlitzMax: [AUSKLAPPEN]
WinkelTest = ATan2(SpielerX-BallX,SpielerY-BallY)
If ImagesCollide(spieler_png,SpielerX,SpielerY,0,ball_png,BallX,BallY,0) Then
BallSpeed = Speed+2.0
BallWinkel = WinkelTest
EndIf


Das funktioniert nicht richtig, also der Abrallwinkel stimmt nicht korrekt.

Wie muss ich das genau mit Atan2 berechnen?

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

BlitzMoritz

BeitragMi, Jun 01, 2011 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
1.) Bei ATan2 sind die beiden Argumente vertauscht: erst die y-Differenz, dann die x-Differenz
2.) Wieso benutzt du ImagesCollide(), wenn es sich doch nur um Kreise dreht?
3.) Dein geschildertes Beispiel passt haargenau zum BPS#6. Warum schaust du nicht dort 'mal hinein, dafür ist die Reihe ja da.
 

bruce85

BeitragMi, Jun 01, 2011 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die antwort.
Ich bin dabei ein Spiel zu schreiben, also ich hab ein Großes Kreis genommen für den Spieler, der im Spiel bewegt oder gedreht werden kann und wenn der den Ball berührt, dann soll der Ball in der richtigen Winkel abgestoßen werden.
Funktionieren tut es, nur stimmt der Abstoßwinkel nicht richtig.

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group