Rotations Problem
Übersicht

![]() |
mas93Betreff: Rotations Problem |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Leute,
Ich bin gerade dabei von BB3d auf Bmax umzusteigen... jetzt gibts aber n Problem, was jetzt eigentlich nich speziell was mit Bmax zu tun hat... Da ich aber in Bmax programmiere poste ichs mal hier... Folgendes Szeniario xD Ich habe ein Raumschiffbild, welches gemidhandled wird und an koordinate xy gezeichnet wird. Dazu habe ich noch ein Waffenbild(auch midhandled), welches an Koordinate x+wx,y+wy gezeichnet wird. Jetzt sollen sich beide Bilder zur Mausausrichte. Das ist auch kein Problem, mittels Atan2 hab ich ja den Winkel... Wenn ich aber jetzt beide Bilder in dem Winkel drehen lasse, stimmt die possition der Waffe natürlich nichtmehr... Ich hoffe ihr versteht was ich meine, hier ein Bild: Wie lässt sich das ausgleichen/beheben? Gibts da nen Trick, oder muss man das i-wie berechnen(Wenn ja, wie?) Wäre nett wenn ihr mir weiterhelfen könntet mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
amon |
![]() Antworten mit Zitat ![]() |
---|---|---|
vielleicht hab ich es falsch verstanden - aber, es kann nicht "ein" winkel sein - es müssen immer zwei winkel sein (einer fürs schiff, einer für die kanone). die beiden winkel sind zwar sehr ähnlich - aber fast nie gleich | ||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hast du recht, aber das ist nicht das Problem ![]() |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Du musst die Position der Waffe neu berechnen (x+wx * cos + wy * sin , y+wy * cos - wx * sin) wobei cos/sin aus dem rotationswinkel berechnet werden ^^ | ||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm, ok...
also was genau wird bei dir in der klammer berechnet? Die neue x und y possition der waffe(also x vor und y hinter dem komma?) weil die rechnugn da sah etwas wild aus^^ |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
wieso sieht meine Rechnung wild aus? ich habe lediglich Deine Koordinaten (so wie Du sie gepostet hast) angepasst ![]() |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm ich denk ich habs irgendwie noch nich ganz raus, sry.
Ich poste hier mal meinen code zum anzeigen des Bildes: Code: [AUSKLAPPEN] DrawImage w.image,sp.x+t.ws_x1*Cos(sp.winkel)+t.ws_y1*Sin(sp.winkel),sp.y+t.ws_y1*Cos(sp.winkel)-t.ws_y1*Sin(sp.winkel)
sp.x und sp.y sind die koordinaten des schiffs sp.winkel der der winkel von schiff zu maus t.ws_x1 xpos der waffe usw Ich weiss, blöde variablenbenennung, will ich aber so machen, weil das ganze später ziemlich flexibel sein soll... also nich ohne grund |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
DrawImage w.image,sp.x+t.ws_x1*Cos(sp.winkel)+t.ws_y1*Sin(sp.winkel),sp.y+t.ws_y1*Cos(sp.winkel)-t.ws_x1*Sin(sp.winkel)
Auch bei einem flexiblen Programm kann man die Variablen vernünftig bennen ![]() |
||
- Zuletzt bearbeitet von Ava am Do, Aug 07, 2008 20:41, insgesamt einmal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay, kleine Skizze...
Mitte ist dein Schiff in einem bestimmten Winkel (Linie A-B, 0°) In einem bestimmten Radius (A-C) befindet sich das Geschütz das ebenfalls einen bestimmten winkel besitzt. Ich würde dir also vorschlagen statt x,y Position für Waffen Winkel und Radius festzulegen, die entsprechden Koordinaten werden dann berechnet. Edit: Für x|y lassen sich verschiedene Radien verwenden, dann ist das ganze halt Oval... Ich hoffe ich verwirre nicht noch mehr ![]() |
||
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) |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm, ich hab das angepasst ava, aber das functioniert immer noch nicht.
ist immer noch genau wie davor... und Xeres, hmm hört sich eigentlich logisch an, nur kapier ich jetzt grade garnichts mehr^^ vorallem den Satz hab ich nach 10 mal lesen nich kapiert: Zitat: Ich würde dir also vorschlagen statt x,y Position für Waffen Winkel und Radius festzulegen, die entsprechden Koordinaten werden dann berechnet.
oder hat jemand evtl sowas schonmal gemacht und hat n ganz kleines codebeispiel? s kann ja nur ne linie und n kreis oder so sein, die sich richtig ausrichten... wäre echt ne Hilfe. mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] Local main_x:Float = 400.00
Local main_y:Float = 200.00 Local option_offset_x:Float = 100.00 Local option_offset_y:Float = 50.00 Repeat Cls Local angle:Float = ATan2(MouseY() - main_y, MouseX() - main_x) Local option_x1:Float = main_x + (option_offset_x * Sin(angle) + option_offset_y * Cos(angle)) Local option_y1:Float = main_y + (option_offset_y * Sin(angle) - option_offset_x * Cos(angle)) Local option_x2:Float = main_x + (-option_offset_x * Sin(angle) + option_offset_y * Cos(angle)) Local option_y2:Float = main_y + (option_offset_y * Sin(angle) - -option_offset_x * Cos(angle)) DrawOval ( main_x - 32 , main_y - 32, 64, 64 ) DrawLine ( main_x , main_y , main_x + Cos(angle) * 64, main_y + Sin(angle) * 64 ) DrawOval ( option_x1 - 16, option_y1 - 16, 32, 32 ) DrawOval ( option_x2 - 16, option_y2 - 16, 32, 32 ) Flip Until KeyHit(key_escape) End Sorry, mein Fehler, hatte Cos und Sin vertauscht ^^ |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ahh, ok vielen dank für die Hilfe, habs jetzt hinbekommen! | ||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Bitte Bitte ![]() |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab noch ein kleines Problem mit dem Zeichnen der Waffen...
Die koordinaten stimmen nun nichtmehr ganz... Umso mehr die x Possition der Waffe von der X possition des Schiffs abweicht, desto mehr wird die waffe an der falschen possition gezeichnet... normal sollte die x possition der waffe z.b 20 pixel links von der schiffpossition sein. So steht es auch im code, doch gezeichnet wird sie viel weiter links... alles etwas irreführend. Hier der zeichencode: Code: [AUSKLAPPEN] DrawImage w.image,sp.x+Cos(sp.winkel-t.wsx[i])*t.wsy[i],sp.y+Sin(sp.winkel-t.wsx[i])*t.wsy[i]
sp.x+y schiff koordinaten sp.winkel winkel des Schiffes t.wsx[i],t.wsy[i] x+y koordinaten der waffe Könnt ihr mir sagen, warum sich die Possitionen so "verfälschen"? |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
AutoMidHanlde? richtiges i in t.wsx[i]? | ||
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) |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, automidhandle is drinne, aber die 20 pixel sollen von der mitte des Schiffes weg sein, müsste also stimmen... | ||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
BamBam |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eine etwas unmathematische Idee (nicht 100% sicher ob es funktioniert)
Wenn beide Bilder die gleiche größe haben (am besten Quadratisch) und alles was du davon nicht willst halt transparent. Liegen nun beide Bilder auf der gleichen Koordinate und du drehst beide mit dem gleichen winkel, sollte die position der waffe im verhältnis zum schiff eigentlich gleich bleiben! Lasse mich gerne eines Besseren belehren! |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
mas93 hat Folgendes geschrieben: Code: [AUSKLAPPEN] DrawImage w.image,sp.x+Cos(sp.winkel-t.wsx[i])*t.wsy[i],sp.y+Sin(sp.winkel-t.wsx[i])*t.wsy[i]
sp.x+y schiff koordinaten sp.winkel winkel des Schiffes t.wsx[i],t.wsy[i] x+y koordinaten der waffe Du hast eine scheussliche Variablenbenennung. Wenn du da nicht mal was dran änderst, wirst du noch oft Probleme haben. Und was Xeres vorhin meinte: Du positionierst die kleine Waffe nicht mehr mit dem X- und Y-Offset relativ zum Mittelpunkt, sondern mit einem Winkel und einem Radius. Der Winkel gibt demnach an, in welcher Richtung vom Schiffsmittelpunkt aus gesehen sich die Waffe befindet und der Radius gibt an, wie weit weg sie ist. So wie der Code dasteht... ... muss t.wsx[i] der Winkel der kleinen Waffe sein ... und muss t.wsy[i] der Radius der kleinen Waffe sein Ist das der Fall? |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BamBam, deine Lösung verschwendet massig Speicherplatz auf der Grafikkarte. Siher ist es so recht einfach, aber dafür wirst Du sehr viel RAM zusauen- das geht für einzelne Bilder ja mal in Ordnung, aber bei vielen müllt man sich nur unnötig den Speicher zu. | ||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group