Länge von Dreiecks-schenkel
Übersicht

![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm, um die allgemeine verwirrung zu lüften, geb ich euch einfach mal meinen fall:
also, ich habe ein männchen, von dem ich die koordinaten weiß, und einen pfeil, von dem ich die koordinaten weiß. die entfernung kann ich ja ausrechnen, die genaue formal hab ich grad net im kopf. wie kriege ich es jetzt hin, das der pfeil immer auf das männchen zeigt? ach, und 0° ist bei mir rechts, und nicht oben..... |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also die entfernung kriegst du mit dem satz des Phytagoras.
c² = a² + b² <==> c = wurzel (a + b) wobei c die entfernung ist, und a und b die differenzen der beiden koordinaten, also a = x2 - x1 ; b = y2 - y1 Den Winkel kannst du mit ql:ATan oder ql:ATan2 ausrechnen. |
||
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn 0 Grad rechts und 90Grad unten dann
Code: [AUSKLAPPEN] richtung = ATan2(PfY -MannY,PfX -MannX)+180
Denn Pfeil in einem Array drehen, wobei Pfeil(0) nach rechts zeigt |
||
[BB2D | BB3D | BB+]
|
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke, leute, es funzt ![]() |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
so, ein weiteres problem taucht auf, hat jetzt nicht mehr direkt mit dem thema zu tun, aber:
ich habe den code von rallimen benutzt und in eine function KI geschrieben. Das funktioniert auch, mein pfeil dreht sich immer zum object.... wenn ich ihn aber hinbewegen will, aktualisiert er den winkel nicht mehr und brettert los ins nichts..... Code: [AUSKLAPPEN] Function KI() Local newwinkel#=(ATan2(ki\posx# -hero\posy#,ki\posy# - hero\posx#)-180) ; berechnugn des winkels RotateEntity sprite2,0,0,newwinkel ; rotieren der grafik ki\winkel=-newwinkel ; speichern des winkels ;oben funzt alles, wenn es alleine steht. ;sobald dieser part kommt, geht nix mehr.... ki\posx# = ki\posx# + Cos(ki\winkel#)*ki\Geschw# ki\posy# = ki\posy# - Sin(ki\winkel#)*ki\Geschw# PositionEntity sprite2,ki\posx#,ki\posy#,30 End Function |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weiß auch nicht... Vielleicht ist das '-' vor dem Sin der Fehler... Denn wenn alles andere richtig gemacht wurde, kannst du jeweils von Cos und Sin ein '+' setzen... Da die Funktion so von sich aus nicht 'Lauffähig' ist, sende ich dir mal ein kleinen Beispielcode der funzt...Code: [AUSKLAPPEN] Graphics 400,400,0,2
SetBuffer BackBuffer() mx%=0 ;Maus-X-Position my%=0 ;Maus-Y-Position xp#=100 ;Gegner-X-Position yp#=100 ;Gegner-Y-Position rw#=90 ;Gegner-Ist-Rotationswinkel rr#=0 ;Gegner-Soll-Rotationswinkel While Not KeyHit(1) mx=MouseX() my=MouseY() rr=ATan2(my-yp,mx-xp) rw=rw+Sgn(Sin(rr-rw))*2 If Sqr((mx-xp)^2+(my-yp)^2)>40 Then xp=xp+Cos(rw)/2 yp=yp+Sin(rw)/2 End If Color 255,0,0 Line xp,yp,xp+Cos(rw)*10,yp+Sin(rw)*10 Color 255,255,255 Rect mx-4,my-4,9,9,0 Oval xp-4,yp-4,9,9,0 Flip Cls Wend End EDIT: Sehe grad, wenn in deiner Atan2-Funktion zuerst Y dann X abgefragt wird, kannst du eventuell auf die Vernegativierung der Zahlen verzichten. |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
hey, das sieht ganz gut aus....es funzt zumindstt, jetzt muss ich es nur noch umschreiben...sollte aber nicht das problem sein...
So, feddich, und ich muss sagen: das ist genial. Danke!!! |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group