计算机图形学第二次实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号
一、绘制FERGUSON 曲线
1,
改变各点处的一阶导数数值,绘制 FERGUSON 曲线进
行对比分析
A=[100,300;120,200;220,200;270,100;370,100;420, 200;420,300;220,280;100,300];
B=[10,-10;30,-30;30,-30;30,-10;20,20;20,20;-20, 20;-20,10;20,-20];
Q=[2,-2,1,1;-3,3,-2,-1;0,0,1,0;1,0,0,0]; plot(A(:,1),A(:,2)); [m,n]=size(A); hold on for i=1:m-1
for t=0:0.001:1 T=[tA3F2,t,1];
Px=[A(i,1),A(i+1,1),B(i,1),B(i+1,1)]; Py=[A (i, 2),A(i+1,2),B (i, 2),B(i+1,2)]; x=T*Q*Px : y=T*Q*Py' plot(x,y, 'r');
end end
2,FERGUSON 曲线丰满度实验
A=[100,300;120,200;220,200;270,100;370,100;420, 200;420,300;220,280;100,300]; B=[10,-10;30,-30;30,-30;30,-10;20,20;20,20;-20, 20;-20,10;20,-20];
C=[20,-20;60,-60;60,-60;60,-20;40,40;40,40;-40,
姓名 所使用的语言 MATLAB 完成日期
2016/5/9
截图部分
B=[10,-10;30,-30;30,-30;30,-10;20,20;2 0,20;-20,20;-20,10;20,-20];
B=[210,-210;230,-230;
230,-230;230,-210; 220,240;250,250;
-210,230;-220,210;220,-200];
40;-40,40;40,-40];
D=[40,-40;120,-120;120,-120;120,-40;80,80;80,80 ;-80,80;-80,80;80,-80];
Q=[2,-2,1,1;-3,3,-2,-1;0,0,1,0;1,0,0,0];
plot(A(:,1),A(:,2));
[m,n]=size(A);
hold on
for i=1:m-1
for t=0:0.001:1
T=[tA3F2,t,1];
Px=[A(i,1),A(i+1,1),B(i,1),B(i+1,1)];
Py=[A (i, 2),A(i+1,2),B (i, 2),B(i+1,2)];
x=T*Q*Px:
y=T*Q*Py:
Px1= [A(i,1),A(i+1,1),C(i,1),C(i+1,1)];
Py1=[A (i, 2),A(i+1,2),C(i,2),C(i+1,2)];
x1=T*Q*Px1';
y1=T*Q*Py1';
Px2=[A(i,1),A(i+1,1),D(i,1),D(i+1,1)];
Py2=[A (i, 2),A(i+1,2),D(i,2),D(i+1,2)];
x2=T*Q*Px2';
y2=T*Q*Py2';
plot(x,y, 'r');
plot(x1,y1, 'r');
plot(x2,y2, 'r');
end
end
二、绘制Bezier曲线
1、二次Bernstein基函数性质分析
三次Bernstein基函数性质分析
2、绘制任意二次三点Bezier曲线
x=[100 150 200 ];
y=[100 50 100 ];
plot(x,y, 'k' ,‘LineWidth' ,1); k=length(x);
for i=1:k-2
for t=0:0.005:1
Bx=(t A2-2*t+1)*x(1)+(-2*t A2+2*t)*x (2)+ (t A2)*x(3);
By=(t A2-2*t+1)*y(1)+(-2*t A2+2*t)* y(2)+
(t A2)* y(3);
hold on
plot(Bx,By, 'r' , 'LineWidth' ,2);
end
end
3、绘制三次七点Bezier曲线
clear all
hold on
B1=[100,300;120,200;220,200;270,100];
B2=[270,100;370,100;420,200;420,300]
plot(B1(:,1),B1(:,2), '-b');
plot(B2(:,1),B2(:,2), '-b');
for t=0:0.001:1
P=[t*t*t t*t t 1];
Q=[-1,3,-3,1;3,-6,3,0;-3,3,0,0;1,0,0,0];
P1=P*Q*B1;
plot(P1(:,1),P1(:,2), '.b' , 'markersize' ,10);
P1=P*Q*B2;
plot(P1(:,1),P1(:,2), '.b' , 'markersize' ,10); end