Schiff in gewünschte Richtung
Übersicht BlitzBasic Allgemein
KryanBetreff: Schiff in gewünschte Richtung |
Di, Dez 23, 2003 14:58 Antworten mit Zitat |
|
---|---|---|
Hallöchen,
weiss jemand zufälligerweise, wie man ein Schiff in eine gewünschte Richtung dreht. Im Klartext: Ich klicke irgendwo hin und das Schiff dreht sich dann in die Richtung? |
||
Jan_Ehemaliger Admin |
Di, Dez 23, 2003 15:03 Antworten mit Zitat |
|
---|---|---|
willst du es Theoretisch, wenn ja, dann benutzte die Dreiecksberechnung um den Winkel auszurechnen, dannn Drehst u es in die kürzere Richtung solange bis der Winkel erreicht ist, und dann fährst du in diese Richtung (wird mit Winkel + sin + cosin berechnet) | ||
between angels and insects |
Kryan |
Di, Dez 23, 2003 15:12 Antworten mit Zitat |
|
---|---|---|
Kannst mal ein Beispiel machen?
Hab 2 Tage dafür schon geopfert! |
||
TheShadowModerator |
Di, Dez 23, 2003 15:54 Antworten mit Zitat |
|
---|---|---|
ATAN2 | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Vertex |
Di, Dez 23, 2003 15:57 Antworten mit Zitat |
|
---|---|---|
Winkel zwischen Punkt P1 und P2:
Winkel = ATan((P2Y - P1Y) / (P2X - P1X)) Tan ergibt sich ja aus Gegenkathete durch Ankathete. ATan ist der umkehrwert für Tan: Winkel = ATan(Tan(Winkel)) mfg olli |
||
TheShadowModerator |
Di, Dez 23, 2003 16:07 Antworten mit Zitat |
|
---|---|---|
ATAN2 ist besser | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Kryan |
Di, Dez 23, 2003 21:14 Antworten mit Zitat |
|
---|---|---|
Nach inem Wissensbuch über Mathematik habe ich so eine trigonomische Formel in BBCode umgewandelt.
Dürfte so aussehen: Function Winkel(X1,Y1,X2,Y2) For I=1 To 360 If Y1+Y2=X1+X2*(sin(I)/cos(I)) Then Return I Next End Function Klappte aber nicht,ich nehme lieber Vertex Lösung! |
||
konstantin |
Di, Dez 23, 2003 21:19 Antworten mit Zitat |
|
---|---|---|
ATAN2
Achja, dieses Thema hat heute schonmal jemand gefragt. Da kam folgendes raus: Code: [AUSKLAPPEN] Graphics 640, 480, 16, 2 SetBuffer BackBuffer() Global x_mouse = 0 Global y_mouse = 0 Global pointer_length = 100 Global pointer_x = 640 / 2 Global pointer_y = 480 / 2 Global pointer_x2 = 0 Global pointer_y2 = 0 Global alpha = 0 Function PrintKO() Text 10, 10, x_mouse + " | "+ y_mouse + " | " + alpha + "°" End Function Function PrintPO() Line pointer_x, pointer_y, pointer_x2 + pointer_x, pointer_y2+pointer_y End Function Function Setalpha() Alpha = (ATan2(pointer_y - MouseY(), pointer_x - MouseX())+360) Mod 360: Alpha = Alpha - 180 Pointer_x2 = Cos(alpha) * pointer_length pointer_y2 = Sin(alpha) * pointer_length End Function While Not KeyDown(1) Cls x_mouse = MouseX() y_mouse = MouseY() SetAlpha() PrintKO() PrintPO() Flip() Wend |
||
RallimenSieger des 30-EUR-Wettbewerbs |
Do, Dez 25, 2003 11:00 Antworten mit Zitat |
|
---|---|---|
hier mal meine Function zum ermitteln der Gradzahl
einfach mal auprobierenCode: [AUSKLAPPEN] Graphics 800,600,16,2
Wenn es gegen den Uhrzeigersinn gehen solldann müssen die werte in der ATAN getauscht werden, allerdings ist dann 0Grad nach unten glaube ich , aber das läßt sich ja dann rausfinden
SetBuffer BackBuffer() Repeat x= MouseX () Y= MouseY () Rect 398 ,298,4,4,1; mitte winkel = Objekt_richtung_grad_Kurzversion(x,y ,400 ,300) ;winkel = Objekt_richtung_grad(x,y ,400 ,300) Text 100,100, winkel + " Grad" Flip Cls Until KeyHit (1) End Function Objekt_richtung_grad(Zielpunkt_X,Zielpunkt_Y,Ausgangspunkt_X,Ausgangspunkt_Y ) Waagerechte = Zielpunkt_X -Ausgangspunkt_X Hoehe = Zielpunkt_Y -Ausgangspunkt_Y ;0 grad ist hier nach oben und im Uhrzeigersinn wird er höher grad =ATan2(Hoehe ,Waagerechte)+90 If grad < 0 Then grad = grad+360 Return grad ; ;0 grad ist hier nach links und im Uhrzeigersinn wird er höher ;grad =ATan2(Hoehe ,Waagerechte)+180 ;Return grad ; gegen den uhrzeiger End Function Function Objekt_richtung_grad_Kurzversion(Zielpunkt_X,Zielpunkt_Y,Ausgangspunkt_X,Ausgangspunkt_Y ) grad =ATan2(Zielpunkt_Y -Ausgangspunkt_Y, Zielpunkt_X -Ausgangspunkt_X)+90 If grad < 0 Then grad = grad+360 Return grad End Function Vieleicht hilft es auch anderen die da noch was in diese Richtung brauchen |
||
[BB2D | BB3D | BB+]
|
Übersicht BlitzBasic Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group