Bezier 4 Interpolation

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Markus2

Betreff: Bezier 4 Interpolation

BeitragFr, Jul 01, 2005 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Interpolation die 4 Punkte benutzt .

1 und 4 ist Start und Ende
2 und 3 sind die Hilfspunkte dazwischen

Damit kann man einfach Kurven darstellen
wobei der mu Wert 0 der Start ist und 1 das Ende

Code: [AUSKLAPPEN]


Graphics 640,480,0

Type TV2D
 Field x:Float
 Field y:Float
 
 Function Create:TV2D()
  Local T:TV2D=New TV2D
  Return T
 End Function
End Type

Local mu:Float

Local p:TV2D=TV2D.Create()
Local p1:TV2D=TV2D.Create()
Local p2:TV2D=TV2D.Create()
Local p3:TV2D=TV2D.Create()
Local p4:TV2D=TV2D.Create()

SetV2D p1,0,100
SetV2D p2,100,0
SetV2D p3,200,200
SetV2D p4,300,100

For mu=0.0 To 1.0 Step 0.01

 Bezier4 p,p1,p2,p3,p4,mu
 
 Circle p1,6
 Circle p2,6
 Circle p3,6
 Circle p4,6

 Plot p.x,p.y

Next
Flip
WaitKey
End

Function Bezier4(p:TV2D Var,p1:TV2D,p2:TV2D,p3:TV2D,p4:TV2D,mu:Float)

 'MR 01.07.2005

 'Four control point Bezier interpolation
 'mu ranges from 0 To 1, start To End of curve

 Local mum1:Float,mum13:Float,mu3:Float

 mum1 = 1.0 - mu
 mum13 = mum1 * mum1 * mum1
 mu3 = mu * mu * mu

 p.x = mum13*p1.x + 3.0*mu*mum1*mum1*p2.x + 3.0*mu*mu*mum1*p3.x + mu3*p4.x
 p.y = mum13*p1.y + 3.0*mu*mum1*mum1*p2.y + 3.0*mu*mu*mum1*p3.y + mu3*p4.y
 'p.z = mum13*p1.z + 3.0*mu*mum1*mum1*p2.z + 3.0*mu*mu*mum1*p3.z + mu3*p4.z

End Function

Function SetV2D(v:TV2D Var,x:Float,y:Float)
 v.x=x
 v.y=y
End Function

Function Circle(p:TV2D,r)
   DrawOval p.x-r,p.y-r,r*2,r*2
End Function

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group