Länge von Dreiecks-schenkel

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Goodjee

BeitragSo, Jan 29, 2006 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jan 29, 2006 11:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Jan 29, 2006 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jan 29, 2006 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
danke, leute, es funzt Exclamation
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Goodjee

BeitragSo, Jan 29, 2006 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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/

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Jan 29, 2006 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jan 29, 2006 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
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/

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group