如何用四个参数画一头大象?
泰勒猫爱丽丝
2024年06月05日 16:17

这b站文章里面不能像知乎加代码?那我就放这里吧

这是画大象的 matlab 代码

%%%%%%%%%%%%%%%%%

clear all;clc

num=101;

k=1:5;

t=linspace(0,2*pi,num);

Ax=[0,0,12,0,-14];

Bx=[50,18,0,0,0];

Ay=[-60,0,0,0,0];

By=[-30,8,-10,0,0];

eye=20;

x=Ax*cos(k'*t)+Bx*sin(k'*t);

y=Ay*cos(k'*t)+By*sin(k'*t);

plot(y,-x,eye,eye,'O','MarkerFaceColor','r')

%%%%%%%%%%%%%%%%%%%%%

这是动鼻子的 matlab 代码

%%%%%%%%%%%%%%%%%%%%%

clear all;clc

%参数变量

num=101;

k=1:5;

t=linspace(0,2*pi,num);

%大象参数

Ax=[-60,0,0,0,0];

Bx=[-30,8,-10,0,0];

Ay=[0,0,-12,0,14];

By=[-50,-18,0,0,0];

%眼睛和鼻子参数

eye=20;

wigg=40;

%参数方程得到轮廓

x=Ax*cos(k'*t)+Bx*sin(k'*t);

y=Ay*cos(k'*t)+By*sin(k'*t);

%找到摇鼻子位置

A=20;

nose=find(x>wigg);

nose_m=find(x>=max(x));

%制作动画

move_num=100;

v=VideoWriter('elephant.avi','Motion JPEG AVI');

v.Quality=95;

v.FrameRate=10;

open(v)

for i=0:move_num

  y0=zeros(1,num);

  y0(nose)=A*sin(2*pi*i/move_num)*exp(-(nose-nose_m).^2/40);

  plot(x,y+y0,eye,eye,'O','MarkerFaceColor','r')

   

  frame=getframe(gcf);

  writeVideo(v,frame)

end

close(v)

%%%%%%%%%%%%%%%%%%%%%