以下是文字是根据帮助文件得来的,如果有出入请大神指正
这个类用于描述三维空间中的单条Bezier曲线(大于等于2阶--Bezier曲线的除数等于控制点数),其主要目的是用于方便的保持(maintain)三维空间中Bezier曲线的控制点集,该类的对象在shapes3d库中被BezTube类用于创建一个tube,这个tube沿着y轴[0,1,0]旋转弯曲。
阶次图形(Degree Shape)
2 直线
3 二次 bezier
4 三次 bezier
以此类推
也可以被用作Extrusion的路径
以下例程是本人测试用例,展示了BezTube类是如何被P_Bezier3D控制的
import peasy.*;
import shapes3d.*;
import shapes3d.utils.*;
PVector[] v=new PVector[]{new PVector(10,0,0),new PVector(200,0,0)};
BezTube bzt;
P_Bezier3D pbz3d;
PeasyCam cam;
int degree;
void setup()
{
cam=new PeasyCam(this,300);
size(800,600,P3D);
//P_Bezier3D pbz3d=new P_Bezier3D(v,v.length);
//bzt=new BezTube(this,pbz3d,20,10,15);
//bzt.stroke(color(255));
//bzt.drawMode(BezTube.WIRE);
//frameRate(30);
}
void draw()
{
background(0);
pbz3d=new P_Bezier3D(v,v.length);
bzt=new BezTube(this,pbz3d,20,10,15);
bzt.stroke(color(255));
bzt.drawMode(BezTube.WIRE);
lights();
bzt.draw();
}
void keyPressed()
{
degree++;
if(degree%3==0)
v=new PVector[]{new PVector(10,0,0),new PVector(200,0,0)};//两个控制点的Bezier是一条直线
if(degree%3==1)
v=new PVector[]{new PVector(10,0,0),new PVector(200,-100,0),new PVector(300,100,0)};//三个控制点的Bezier为二次曲线
if(degree%3==2)
v=new PVector[]{new PVector(10,0,0),new PVector(200,-100,0),new PVector(300,100,0),new PVector(400,0,0)};//四个控制点的Bezier为三次曲线
}