PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neue Koordinaten anhand X, Y, Winkel, Distanz



hoschi111
22.01.2016, 13:37
Ahoi,

ich suche eine Formel,
die mir eine neue Position im Koordinatensystem sucht.
Gegeben sind:

X, Y, Z; Z kann vernachlässigt werden, da gleichgesetzt wird.
Ausrichtungswinkel, der zur nächsten Koordinate zeigt.
Entfernung zur zu suchenden neuen Position.

Der Winkel wird mit +-180 Grad angegeben.

Kann mir da jemand behilflich sein?

blackberry
22.01.2016, 21:11
Du solltest zumindest zwei Winkel und eine Länge haben, weil du dich sonst immer nur in einer Ebenen bewegst. Außerdem sollte man wissen was deine Winkel messen -- Winkel zur X-Achse in der XY-Ebene, beispielsweise.
Sobald du dich da festgelegt hast, kannst du deinen Richtungsvektor mit Rotationsmatrizen (https://en.wikipedia.org/wiki/Rotation_matrix) berechnen, entsprechend der gewünschten Schrittweite skalieren und zu deiner alten Position addieren.

nom
23.01.2016, 14:49
Die Tatsache mit -+180 und Z vernachlässigen, lässt mich auf einen Aimbot o.ä. für ein Source-Engine Game schließen :P
Wenn ich damit richtig liege kannst mir mal ne PM schicken. Die Formel aus meinem Source zu extrahieren is etwas kompliziert, da ein paar Sonderfälle auftauchen

Cystasy
23.01.2016, 15:04
Hätte auch spontan beim lesen auf Aimbot getippt^^ Die Entfernung etc. sollte man aber mit ein paar Checks relativ hinbekommen denke ich.. vorallem wenn man die Z Achse weglässt.

hoschi111
23.01.2016, 17:20
Hey, ich danke euch für die Antworten.
Es handelt sich in der Tat um ein Spiel. Allerdings nicht um einen Aimbot, sondern präzises Teleporten.

blackberry
23.01.2016, 20:19
http://s23.postimg.org/8cgelfc7f/image.png
Der Winkel ist hier im Bogenmaß angegeben.

maoshe
25.01.2016, 04:22
um was für ein koordinatensystem handelt es sich? kartesiches oder iwas in richtung positionsbestimmung aufm planeten erde?

hoschi111
25.01.2016, 15:24
Hab die Lösung schon.



Private Function Rotate(ByVal x As Single, ByVal y As Single, ByVal viewangle As Single) As PointF
viewangle = CSng(viewangle * Math.PI / 180.0)
Return New PointF(CSng(x * Math.Cos(viewangle) - y * Math.Sin(viewangle)), CSng(x * Math.Sin(viewangle) + y * Math.Cos(viewangle)))
End Function


Dim x As Single = 50
Dim y As Single = 0
Dim viewangle As Single = 127.5


Dim r As PointF = Rotate(x, y, viewangle)

Dim newX as Single = 160.0 + r.X
Dim newY as Single = 40 + r.Y