Splines
Übersicht

![]() |
NebelwadeBetreff: Splines |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
Nebelwade |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() Gruss Nebelwade |
||
AQUA • GLANS • NIX • ENTIS |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() Gruss Nebelwade |
||
AQUA • GLANS • NIX • ENTIS |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group