Splines

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Nebelwade

Betreff: Splines

BeitragSo, Nov 12, 2006 9:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, kann mir bitte jemand sagen, wie ich hier die Geschwindigkeit einbauen kann. Also g1 soll den vorgegeben Pfad folgen und nicht immer gezeichnet werden.

Vielen Dank Nebelwade

Code: [AUSKLAPPEN]

    Graphics 800,600,0
      SetBuffer BackBuffer()
     
            g1 = LoadImage("schiff1.png")
     
            Type schiff
            Field x = x
            Field y = y
           
            Field speedx = speedx
            Field speedy = speedy
     
            Field x1 = x1
            Field y1 = y1
            Field vx1 = vx1
            Field vy1 = vy1
            Field x2 = x2
            Field y2 = y2
            Field vx2 = vx2
            Field vy2 = vy2
            End Type
     
      init(801, 187, 10, 42, -100, 435, 562, 359, 0.1, 0.1)
     
      Local pointx#
      Local pointy#
      Local t#
      Repeat
          Cls
      For schiff.schiff = Each schiff
      For  t = 0 To 1 Step .01
            pointx = schiff\x1*(1-t)^3 + 3*schiff\vx1*(1-t)^2*t + 3*schiff\vx2*(1-t)*t^2 + schiff\x2*t^3
            pointy = schiff\y1*(1-t)^3 + 3*schiff\vy1*(1-t)^2*t + 3*schiff\vy2*(1-t)*t^2 + schiff\y2*t^3
     
            schiff\x = pointx : schiff\y = pointy
            DrawImage g1, schiff\x, schiff\y
     Next
   
     Next
      Flip 1
     Until KeyHit (1)
           
      Function init(x1, y1, vx1, vy1, x2, y2, vx2, vy2, speedx ,speedy)
            schiff.schiff = New schiff
            schiff\x1 = x1
            schiff\y1 = y1
            schiff\vx1 = vx1
            schiff\vy1 = vy1
            schiff\x2 = x2
            schiff\y2 = y2
            schiff\vx2 = vx2
            schiff\vy2 = vy2
            schiff\x = x
            schiff\y = y
            schiff\speedx = speedx
            schiff\speedy = speedy
      End Function
AQUA • GLANS • NIX • ENTIS
 

Dreamora

BeitragSo, Nov 12, 2006 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Am besten verwendest du künftig Source nicht, wenn du nicht weisst was er macht.
Wenn du dir die Berechnungsformel nämlich ansiehst, siehst du das da Geschwindigkeit schon lange drin ist.

v = velocity = Geschwindigkeit
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Nebelwade

BeitragSo, Nov 12, 2006 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, frage mich warum du immer so unfreundlich antwortest. Ist mir hier im Forum schon öfters aufgefallen. Dachte das das hier ein Forum ist, in dem man Hilfe bekommt.

Und ja, der Code ist von MIR, bis auf die Formel, die wurde von SpliceMagic BMX entnommen.

Und zum v = velocity = Geschwindigkeit, das sehe ich nicht. Dachte das die 8 Variablen die Koordinaten sind.

Diese werden so aus SpliceMagic übernommen.

Gruss Nebelwade
AQUA • GLANS • NIX • ENTIS

StepTiger

BeitragSo, Nov 12, 2006 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
koordinaten sind grundsätzlich x und y wenn es um 2d geht

deshalb:

maximal 4 Koordinaten bei 2 Punkten.

Sooo unfreundlich finde ich Dreamoras Antwort nicht einmal.
Und wenn es dein eigener Code ist, dann wundere ich mich, warum du dich an eben diese beiden Variablen nicht mehr erinnern kannst.

Nimms mir nicht übel, aber scheint wirklich wie Copy&Paste
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Nebelwade

BeitragSo, Nov 12, 2006 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
'STEP 1 ---------------  Understanding your PASTE DUMP!!!
'Ok first we are going to use beziers we got from using spline magic..
'After pressing X I can paste the bezier data straight into the IDE

'bezier1.p0x=440         'p0 is the starting point
'bezier1.p0y=25

'bezier1.p1x=100            'p1 is a modifier, this point causes the bending
'bezier1.p1y=250

'bezier1.p2x=320           'p2 is the ending point
'bezier1.p2y=570

'bezier1.p3x=600         'p3 is a modifer like p1, it causes bending.
'bezier1.p3y=250

Graphics 800,600,0
'For the demo I'm going to rename each of them.
x1=440   'point 0   - Starting Point X
y1=25    'point 0   - Starting Point Y
vx1=100  'point 1   - Curve modifier X
vy1=250  'point 1   - Curve modifier Y
x2=320   'point 2   - Ending Point X
y2=570   'point 2   - Ending Point Y
vx2=600  'point 3   - Curve modifier X
vy2=250  'point 3   - Curve modifier Y


'This is the default bezier data.. notice I'm only using one bezier in this demo.
'If you open spline magic right now, the data it uses to draw that bezier is
'the same data you see above.  I just simply pressed X and dumped it here :)
'END OF STEP 1 ----------------------------------------------------

'STEP 2 ------------------------------------------  Drawing the bezier
Repeat
    Cls
   'Ok, I do not understand the complex math that you read down there.
   'You dont need to either to be using beziers!  Just know this formula, get
   'used to it.  Maybe if you are good with math, you can make even cooler
   'effects!
   
   'What I do understand, is that all the points we plugged in above are used
   'by the math below to create the pointx and the pointy variables.
   'pointx and pointy start at point 0 and eventually end up at point 2
   'The loop is going from 0.0 to 1.0 by an incriment of .10
   'This means that within every incriment the pointx and pointy follow the path
   'we created. 
   For Local t:Float=0 To 1 Step .01   
      Local pointx:Float = x1*(1-t)^3 + 3*vx1*(1-t)^2*t + 3*vx2*(1-t)*t^2 + x2*t^3
      Local pointy:Float = y1*(1-t)^3 + 3*vy1*(1-t)^2*t + 3*vy2*(1-t)*t^2 + y2*t^3
      Plot pointx,pointy
   Next
    Flip
Until KeyHit (KEY_ESCAPE)
'END OF STEP 2 -------------------------------------------------------------
'The bezeir has been drawn.. Now imagine the possibilites.. If you know how to use
'types, and know how to incriment and manage steps well, you can impliment multiple
'bezeirs to start after each other and create a complex pattern.  I'm sure you can
'do it!! :)  Good Luck!


So hier der original Code. Sieht aber etwas anders aus. Und ja tue mich schwer bei den ganzen Kram. Hatte dies nie in der Schule. Sorry Wink

Gruss Nebelwade
AQUA • GLANS • NIX • ENTIS
 

Dreamora

BeitragSo, Nov 12, 2006 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Das wirst du auch nie in der Schule haben. Splines und Bezier gehören zur höheren Mathe, weswegen man sie erst im späteren Studium hat wenn man sich in die entsprechende Richtung der Informatik spezialisiert.
Ansonsten ist das Thema Selbststudium, welches Dank dem Internet sehr viel einfacher ist, als es früher war Smile (da du nicht erst die ganze ihr zu Grunde liegende Mathematik verstehen musst)

Sorry wenn die Antwort böse rüber kam.
Ich habe primär Probleme mit Copy-Paste von Code den man nicht verstanden hat. Man muss sich ja nicht alles von Grund auf erarbeiten, jedoch MUSS (nicht sollte!) man verstehen, was ein Code macht, wenn man ihn verwendet, da man sonst automatische Fragen haben wird später die man sich unmöglich selbst beantworten kann. Eine solche Art von Verhalten wird nur im Beginner Forum geduldet, da es ein Anfängerverhalten ist.
Aber das ist jetzt eigentlich egal.

Also, wenn du die Geschwindigkeit verändern willst, dann musst du die vx, vy entsprechend anpassen.
Bei der zweiten Referenz siehst du ein wenig mehr, wie die Geschwindigkeit definiert ist, wobei die Geschwindigkeit an einem Punkt p einfach die Steigung der Tangente am entsprechenden Punkt ist. Wenn du allerdings überall explizite Kontrolle über eine Geschwindigkeit brauchst, dann wirst du mit anderen Kurvenarten wohl mehr Freude haben. (Catmull-ROM zb)

Hier sind noch ein paar Links damit du dich für weitere Nutzung mit dem Thema auseinander setzen kannst.

Alle
http://www.cse.unsw.edu.au/~lambert/splines/

Spline
http://de.wikipedia.org/wiki/Spline
http://www.ibiblio.org/e-notes/Splines/Bezier.htm

Catmull-ROM
http://www.mvps.org/directx/articles/catmull/
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am So, Nov 12, 2006 17:43, insgesamt einmal bearbeitet

Nebelwade

BeitragSo, Nov 12, 2006 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für Deine ausführliche Antwort. Dann werde ich mir das alles mal anschauen. Hatte die ganze Nacht daran gesessen und leider nur die hälfte verstanden. Mann ist ja nicht mehr der jüngste Wink

Gruss Nebelwade
AQUA • GLANS • NIX • ENTIS

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group