计算机图形学第二次实验报告

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档