Alle tutorials über winkelberechnung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mas93

Betreff: Alle tutorials über winkelberechnung

BeitragMo, Mai 07, 2007 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute,
Ich brauche unbedingt einige tutorials zur Winkelberechnung.
Das mit sin() + Cos() bewegung(GTA steuerrung) kann ich schon.

Aber ich hab noch keine ahnung wie man z.b ein Bild an ein anderes ausrichtet usw.

das geht glaube ich mit atan2 oder so.

Also wäre nett wenn ihr mir einfach mal paar sachen reinposten würdet.

Weil ohne winkel komm ich in meinen Spielen einfach nichmehr weiter.


Und jetzt kommt mir bitte nicht mit Suche anwerfen oder so.(Auf diesen Satz bekommt bestimmt noch was zurrück^^)
hab ich schon gemacht. Hab aber nich so viel gefunden bis auf die GTA steuerrung.


mfg
Marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

BladeRunner

Moderator

BeitragMo, Mai 07, 2007 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.

Keine Anfragen in FAQ und Tuts, danke.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Silver_Knee

BeitragMo, Mai 07, 2007 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ATAN
ATAN2
BLITZBASE
Arrow suche anwerfen Wink
sonst Code: [AUSKLAPPEN]

            /C
           / |
          /  y
         /   |
        /    |
       A--x--B
der winkel bei A id ATan(x,y) oder Tan(y/x) je nach geschmack
bei der 2. Variante ist die gefahr x=0 (dann ist y/0 -> Fehler) deshalb ist die erste zu empfehlen
x und y sind abstände also:
x=xB-xA;da xB=xC => x=xC-yA
y=yC-yB;da yB=yA => y=yC-yA
winkel=ATan2(x,y)
wie das mit dem winkel aussieht imuss man jetz von der image aus sehen

mas93

BeitragMo, Mai 07, 2007 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm ok.
Danke das du dir die mühe gemacht hast, aber kannst du mir das so erklären das es auch ein 8 klässler checkt???

Und was genau bringt mir das??
Könntest du mir da n beispiel nennen?

mfg marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Silver_Knee

BeitragMo, Mai 07, 2007 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
gib mal andere variablennamen an zb: Code: [AUSKLAPPEN]

            /bild2
           / |
          /  y
         /   |
        /    |
   bild1--x--B
dein code um den winkel in dem bild1 zu stehen hat ist also der Code: [AUSKLAPPEN]
x=xBild2-xBild1
y=yBild2-yBild1

winkel=ATan2(x,y)

mas93

BeitragDi, Mai 08, 2007 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, danke, das sah schon besser aus^^

Mal schauen ob ich das richtig verstanden habe.

x=x koordinate des 2.bilds - x koordinate des 1.bilds
y=y koordinate des 2.bilds - x koordinate des 1.bilds

das unten is dann klar.

Is das so richtig???

und was bringt mir der winkel dann?
muss ich das bild soviel drehen damit es auf das eine bild ausgerichtet ist??


mfg
marius


P.S.: Sry wenn ich so blöde fragen stelle, aber ich blicks halt noch nich so.
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

skey-z

BeitragDi, Mai 08, 2007 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
nicht nur die Blitzsuche liefert dir Ergebnisse, auch bei Wikipedia sollte man sein Glück versuchen

http://de.wikipedia.org/wiki/Winkel
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

mas93

BeitragDi, Mai 08, 2007 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
so, habs jetzt selbeer herausgefunden.
Ich habs so gemacht:

Code: [AUSKLAPPEN]

Graphics 640,480,16,2
SetBuffer BackBuffer()
pic1=LoadImage("gegner.png")
pic2=LoadImage("kanone.png")

gy=400
gx=400

MidHandle pic2

winkel=0
 
Repeat
Cls



x=300-gx
y=300-gy

Winkel=ATan2(x,y)

RotateImage pic2,180-winkel

DrawImage pic1,gx,gy
DrawImage pic2,300,300

Text 20,20,winkel



Flip


Until KeyHit(1)

End



so, jetzt will ich aber das sich das bild in jedem schleifendurschlauf an das andere anpasst.

Wenn ich das jetzt so lasse wie es gerade ist dreht sich das bild ja immer weiter im kreis, weil als winkel ja immer noch der errechnete grad ist.

Wie mache ich das ambesten(Ich hoffe ihr wisst was ich meine)


mfg marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Silver_Knee

BeitragDi, Mai 08, 2007 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
das problem ist dass du immer von vorne drehst: nachdem du es um 1° gedreht hast ist das das neue um 0° grdrehte bild....
die 1. idee wäre ein original zu machen das zu kopieren und die kopie zu drehen. danach schmeiß ich die kopie weg und kopiere von neuem....
die 2. idee wäre ein original 360 mal zu kopieren, diese kopien entsprechend zu drehen und dann die gebrauchte kopie z zeichnen
die 3. idee wäre dass es keinem schwein auffällt wenn das bild um 5° falsch gedreht ist.... und schon bräuchte man nurnoch 72 bilder was den speicher schont...
der entsprechende befehl den du immer braichst ist kopie=CopyImage(original)

mas93

BeitragDi, Mai 08, 2007 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
vielen dank, Ich hab die 2. verwendet.

Code: [AUSKLAPPEN]

Graphics 640,480,16,2
SetBuffer BackBuffer()
pic1=LoadImage("gegner.png")
pic2=LoadImage("kanone.png")
MidHandle pic2

Dim picc2(360)

For i = 0 To 360
  picc2(i) = CopyImage(pic2)
RotateImage picc2(i),i
Next

gy=400
gx=400


winkel=0
 
Repeat
Cls

gy=MouseY()
gx=MouseX()

x=300-gx
y=300-gy

Winkel=ATan2(x,y)


DrawImage pic1,gx,gy
DrawImage picc2(180-Winkel),300,300

Text 20,20,winkel



Flip

Until KeyHit(1)

End


Vielen dank nochmal!
DU hast das echt gut erklärt.

mfg
marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

mas93

BeitragMi, Mai 16, 2007 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics 1024,768,16,1
SetBuffer BackBuffer()

Type player
 Field x
 Field y
 Field mx
 Field my
 Field typ
 Field life
 Field winkel
End Type

Dim orange(359)
Dim rot(359)

Global orangep=LoadImage("gfx\orange.png")
 MidHandle orangep

Global rotp=LoadImage("gfx\rot.png")
 MidHandle rotp



TFormFilter 0
For i = 0 To 359
  rot(i) = CopyImage(rotp)
    RotateImage rot(i),i

orange(i) = CopyImage(orangep)
    RotateImage orange(i),i
Next

team=Input("2= orange 1=rot:  ")
p.player=New player
p\typ=team


Repeat


For p.player=Each player

 p\my=MouseY()
 p\mx=MouseX()

 p\x=300-p\mx
 p\y=300-p\my

 p\winkel=ATan2(p\x,p\y)
If p\typ=1 Then DrawImage rot(180-p\winkel),p\x,p\y
If p\typ=2 Then DrawImage orange(180-p\winkel),p\x,p\y

Next


Until KeyHit(1)


warum wird hier nichts angezeigt?
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Seoman

BeitragDo, Mai 17, 2007 9:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Du bist im Vollbildmode mit DoubleBuffering... Du malst also alles in den Backbuffer und Windows steckt seine Nase nur in Fensteranwendungen... Insofern musst du Flip verwenden.
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

mas93

BeitragSa, Mai 19, 2007 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, das mit dem flip war n blöder fehler^^
Danke.

aber ich hab n n neues problem:
Code: [AUSKLAPPEN]

;Pfeile abfragen
For s.schuss=Each schuss
 wx=s\x-mx
 wy=s\y-my

s\Winkel=ATan2(wx,wy)

s\x = s\x + Sin(-s\winkel)*s\speed
      s\y = s\y + Cos(-s\winkel)*s\speed
      DrawImage pfeil(1),s\x,s\y
Text 200,200,s\winkel
Next


Warum bewegt sich der schuss nicht??

mfg
Marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group