Schöne Spline durch Waypoints

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Iguan

Betreff: Schöne Spline durch Waypoints

BeitragFr, Mai 26, 2006 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöchen miteinander!

Ich komme wiedermal nicht weiter und brauche einen Rat von euch Profis!

Ich habe einen Gegner, der Waypoints ansteuert.

Pseudo:
Code: [AUSKLAPPEN]

      AbstandX# = Gegner\SPX# - ZielX
    AbstandY# = Gegner\SPY#  - ZielY   
    Gegner\SPSollWinkel# = (ATan2#(AbstandX#,AbstandY#)+360) Mod 360
   
        Wendigkeit# = 3   
    If Gegner\SPIstWinkel# < Gegner\SPSollWinkel# Then
      If Gegner\SPSollWinkel# - Gegner\SPIstWinkel# > 180 Then Gegner\SPIstWinkel# = Gegner\SPIstWinkel# - Wendigkeit#
      If Gegner\SPSollWinkel# - Gegner\SPIstWinkel# < 180 Then Gegner\SPIstWinkel# = Gegner\SPIstWinkel# + Wendigkeit#
    End If
    If Gegner\SPIstWinkel# > Gegner\SPSollWinkel# Then
      If Gegner\SPIstWinkel# - Gegner\SPSollWinkel# < 180 Then Gegner\SPIstWinkel# = Gegner\SPIstWinkel# - Wendigkeit#
      If Gegner\SPIstWinkel# - Gegner\SPSollWinkel# > 180 Then Gegner\SPIstWinkel# = Gegner\SPIstWinkel# + Wendigkeit#
    End If
   
   Gegner\SPIstWinkel# = Gegner\SPIstWinkel# Mod 360
    If Gegner\SPIstWinkel# < 0 Then Gegner\SPIstWinkel# = 360 + Gegner\SPIstWinkel#
   
     
    Gegner\SPX# = Gegner\SPX# - (Sin(Gegner\SPIstWinkel#) * Gegner\Geschw#)
    Gegner\SPY# = Gegner\SPY# - (Cos(Gegner\SPIstWinkel#) * Gegner\Geschw#)



Nun, soweit so gut...
Ich möchte jetzt aber dass der Gegner nie gerade fliegt, sondern stets eine leichte kurve fliegt, die grösser oder kleiner sein kann. So entsteht dan eine schöne saubere Spline. Nur, wie mache ich das? Wendigkeit# müsste dann irgendwie von der Distanz des nächsten Waypoints, Der Soll-Ist-Winkeldifferenz und der GegnerGeschwindigkeit abhängig sein...

mir fällt da leider keine passende Formel ein.

kennt ihr eine Lösung für mein Problem?

Firstdeathmaker

BeitragFr, Mai 26, 2006 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Arbeite vielleicht mit Beziersplinekurven, ich benutze dafür immer die 4. Grades. Dabei kannst du dann 4 Punkte festlegen, wobei der 2. und 3. immer die Start/Endpunkte sind. Wenn dein Raumschiff von einem zum nächsten Splineblock wandert, nimmst du einfach den 4. Punkt und führst eine Punktsymmetrische Spiegelung mit dem 3. durch. Dadurch erhältst du den neuen 1. Punkt des nächsten Splineabschnittes, welches dann nahtlos an das davor anschließt. Hier im Forum im Codearchiv stehen dazu ein paar Beispiele. Allerdings weis ich nicht wie man dort einen eine bestimmte Wendigkeit einbauen kann, da müsste ich jetzt etwas länger überlegen. Ansonsten hilft auch Wikipedia weiter:

http://de.wikipedia.org/wiki/Spline

Oder habe ich dich jetzt vollkommen falsch verstanden?
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Iguan

BeitragFr, Mai 26, 2006 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Firstdeathmaker! Danke für deine Antwort!
Ich möchte gerne Splines, und keine Beziers, da der Gegner DURCH DIE WAYPOINTS fliegen soll. Dein Link über Splines könnte was bringen, nur bin ich kein Mathematiker und verstehe absolut nichts von diesem Zeichenwirrwarr. Sad Ich war auch schon mal googeln, aber habe nichts passendes gefunden.
gibt es denn dafür wirklich keinen Beispiel code? (bei Splinemagic sind das ja beziers)

So eine Kurve bräuchte ich:
http://de.wikipedia.org/wiki/B...lation.png

Henry

BeitragSa, Mai 27, 2006 8:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähem, Splines entstehen in der Regel per Bezier Berechnung; eine andere Art wären die NURBS-Splines (non uniform rational b-splines), und Du möchtest gar nicht wissen, wie die berechnet werden.
Du kommst also nicht drum herum, die mit dem Thema Bezier auseinanderzusetzen.
Aiya Eärendil Elenion Ancalima!

All you have to decide is what to do with the time that is given to you.

Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen!
Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht!

Iguan

BeitragSa, Mai 27, 2006 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, danke! hast wohl recht!

TheShadow

Moderator

BeitragSa, Mai 27, 2006 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
schau mal nach "catmull rom spline" - das ist recht einfach...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

x-pressive

BeitragMo, Mai 29, 2006 9:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutze mal die Forum-Suche. Gab schon einige Threads, in denen Splines und Bezier-Splines diskutiert wurden, samt fertigen Funktionen und allem drum und dran. Ist hilfreicher, als im Web nach mathematischen Theorien zu suchen.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group