Bezier 4 Interpolation
Übersicht BlitzMax, BlitzMax NG Codearchiv & Module
Markus2Betreff: Bezier 4 Interpolation |
Fr, Jul 01, 2005 22:08 Antworten mit Zitat |
|
---|---|---|
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 |
||
Übersicht BlitzMax, BlitzMax NG Codearchiv & Module
Powered by phpBB © 2001 - 2006, phpBB Group