Steigung berechnen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Bigmichi

Betreff: Steigung berechnen

BeitragDi, Jun 08, 2004 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics3D 1024,768,16,1
SetBuffer BackBuffer()








Type Obj
   Field x#,y#
   Field speed
   Field id
End Type




o.obj = New obj
o\x = 10
o\y = 10
o\id = 1


o.obj = New obj
o\x = 600
o\y = 400
o\id = 2


Local x#,y#,x1#,y1#,x2#,y2#

Repeat
If KeyDown(1) Then End
Cls
For o.obj = Each obj
   Color 255,255,255
   Oval o\x,o\y,20,20
   
   Select o\id
   Case 1
      x1 = o\x
      y1 = o\y
   Case 2
      x2 = o\x
      y2 = o\y
   End Select
   
   steigung# = Float((y2-y1)/(x2-x1))
   
   If o\id = 1 Then
      o\x = o\x + .1
      o\y = o\y + steigung/10
   End If
Next






Text 0,0,steigung







Flip
Forever






dieses Beispiel hat mir "Izewind" gemacht auf die frage wie ich ein Objekt auf eina nderes direkt zufahren lassen kann nur mein Problem ist nun dass ich unterschiedlcihe geschwindigkeiten bekomme umsohöher die Differenz von beiden Y ist um so schneller fährt der Ball -.-

Kann man das irgendwie eiheitlichen ?

wäre sehr dankebar =)
 

Edlothiol

BeitragDi, Jun 08, 2004 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht so.Code: [AUSKLAPPEN]
neuesteigung# = Sin(Atan2(steigung,1)) / Cos(Atan2(steigung,1)) * Bewegungsgeschwindigkeit
Der Code berechnet den Winkel, in den die Steigung zeigt, und daraus wieder eine Steigung mit konstanter Länge. Habs jetzt nicht ausprobiert, bin mir nicht sicher ob das klappt.

Bigmichi

BeitragDi, Jun 08, 2004 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
das klappt irgendwie nicht Sad könntest du vielleicht das in den Bsp cod eeinarbeiten ? wäre echt nett =)

Kabelbinder

Sieger des WM-Contest 2006

BeitragMi, Jun 09, 2004 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab auch mal n bisschen herumgetüftelt. (Mit Schrittwert und so) Ich habe dashier herausbekommen. Es gibt wirklich nur minimale Veränderungen der Geschwindigkeit, die lassen sich bei diesem Konzept mit Steigung glaube ich nicht verhindern, da die einzelnen "stationen" die das Objekt anläuft nur sehr selten auf einer linie aus pixeln liegen. Wenn das nicht der Fall ist, bewegt sich die Kugel eben in nicht wahrneknbaren ZickZack-Bahnen auf das andere Objekt zu, dadurch verändert sich glaube ich auch die Geschwindigkeit.

Atan2 wäre eine Lösung, aber ich bin noch nicht so vertraut damit.

Dashier hab ich mal im Codearchiv entdeckt, vielleicht hilft dir das:

https://www.blitzforum.de/view...ight=atan2

Also mein Code:

Code: [AUSKLAPPEN]
Graphics 1024,768
SetBuffer BackBuffer()

Global x1#,x2#,y1#,y2#,eckx#,ecky#,schiebx#,schieby#,schritt#
Const geschwindigkeit = 5

x1 = 200
y1 = 200
MoveMouse 400,400

Delay 2000
Repeat

x2 = MouseX()
y2 = MouseY()

eckx = x1
ecky = y2
schritt = Sqr((eckx - x2)^2+(ecky - y1)^2)/geschwindigkeit
If schritt < 1 Then schritt = 1
schiebx = (x2 - eckx)/schritt
schieby = (y1 - ecky)/schritt
x1 = x1 + schiebx
y1 = y1 - schieby

Oval x1,y1,20,20
Oval x2,y2,20,20
Text 0,0,"Speed " + Str$((schiebx + schieby)/2),0,0

Flip
Cls
Until KeyHit(1)
End
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Bigmichi

BeitragMi, Jun 09, 2004 22:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey mega super dolel Danke =) Very Happy Very Happy Very Happy

Da freut mansich echt auf das Forum bei solcher Hilfe =) echt danke =)

Kabelbinder

Sieger des WM-Contest 2006

BeitragDo, Jun 10, 2004 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Kein Problem Very Happy
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group