Wieder mal Winkelfuktionen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Shinkiro1

ehemals "Espada"

Betreff: Wieder mal Winkelfuktionen

BeitragFr, Mai 22, 2009 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
bevor ihr schreibt: "Benutz die Suchfunktion" => hab ich schon gemacht, verstehs aber trotzdem nicht
Ich scheine echt ein bisschen schwer von Begriff mit Winkelfunktionen zu sein, hier mein Problem.

user posted image

Der rote kreis stellt den spieler dar, das blaue kreuz den mouse-cursor.
Nun will ich den Winkel bekommen egal wo sich der mouse-cursor befindet, das ganze natürlich von spielerposition aus.

Zumindest Codeansätze wären nett, weil erklärungen hab ich mir schon genügend ohne erfolg durchgelesen.

mdg Espada
Blog :: Ein RPG in 3 Monaten erstellen
Twitter :: News zum Projekt

Noobody

BeitragFr, Mai 22, 2009 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Angle# = ATan2( MouseY() - SpielerY#, MouseX() - SpielerX# )
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

Xeres

Moderator

BeitragFr, Mai 22, 2009 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal ein Beispiel für Sin/Cos geschrieben, hilft dir das?


Code: [AUSKLAPPEN]
AppTitle("Sinus & Kosinus")
Graphics(800, 600, 0, 2)
SetBuffer BackBuffer()
Local timer = CreateTimer(60)

Const KEY_Escape = 1, KEY_UP = 200, KEY_DOWN = 208
Const KEY_LEFT = 203, KEY_RIGHT = 205
Local radius = 150, winkel = 45, x, y

Repeat
   
   If KeyDown(KEY_UP) Then radius = ((radius + 1)+300) Mod 300
   If KeyDown(KEY_DOWN) Then radius = ((radius -1)+300) Mod 300
   If KeyDown(KEY_LEFT) Then winkel = ((winkel + 1)+360) Mod 360
   If KeyDown(KEY_RIGHT) Then winkel = ((winkel - 1)+360) Mod 360
   
   x = 400 + Cos(winkel) * radius
   y = 300 - Sin(winkel) * radius
   
   ;** Der Radius:
   Color(255, 0, 0)
   Line(400, 300, x, y)
   Text(400 + Cos(winkel) * radius/2, 300 - Sin(winkel) * radius/2, "Atan2: "+ATan2(y-300,x-400))
   ;** Die 0° Linie:
   Color(0, 0, 255)
   Line(400, 300, 400 + Cos(0) * radius, 300)
   Text(400 + Cos(0) * radius, 300, " 0°", False, True)
   
   ;*** Sinus:
   Color(255, 255, 0)
   Line(400, 300, 400, 300 - Sin(winkel) * radius)
   Line(x, y, 400, 300 - Sin(winkel) * radius) ;Zum Trabant
   Text(380, 300 - Sin(winkel) * radius/2, "Sin", True, True)
   
   ;*** Kosinus:
   Color(0, 255, 0)
   Line(400, 300, 400 + Cos(winkel) * radius, 300)
   Line(x, y, 400 + Cos(winkel) * radius, 300) ;Zum Trabant
   Text(400 + Cos(winkel) * radius/2, 300, "Cos")
   
   Color(255, 255, 255)
   ;** Die Mitte...
   DrawKreis(400, 300, 10)
   ;** Die Umlaufbahn...
   DrawKreis(400, 300, radius, False)
   ;** Der Trabant...
   DrawKreis(x, y, 5)
   
   Text(10, 10, "Winkel: "+winkel+"°")
   Text(10, 25, "Sinus: "+Sin(winkel))
   Text(10, 40, "Kosinus: "+Cos(winkel))
   
   Flip(0)
    WaitTimer(timer)
    Cls
Until KeyHit(KEY_Escape)
End


Function DrawKreis(fx, fy, fr, solid=1)
   Oval(fx-fr, fy-fr, fr*2, fr*2, solid)
End Function
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)
 

Kruemelator

BeitragFr, Mai 22, 2009 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Welcher Winkel den? Ich sehe in deinem Bild mehrere Winkel.

Gruß Kruemelator

Shinkiro1

ehemals "Espada"

BeitragFr, Mai 22, 2009 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow, Nobodys Code hat funktioniert ...
@Xeres: Das ist denke ich ein super Beispiel, danke dir, werde mir das mal anschauen.

@Kruemelator: Naja, mit den lilanen dreieck wollte ich zeigen, dass ich zwar einen ansatz hätte, wie man den winkel berechnet, aber es nicht umsetzten kan -.-

Thanks @ all
Blog :: Ein RPG in 3 Monaten erstellen
Twitter :: News zum Projekt

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group