matlab跳动的心脏,Matlab绘制跳动的心

相信不少程序猿在情人节,被女票要求用程序语言编写表白程序。我参考网上的资料,用matlab编写了心跳的动画。

下图是网上流传的心形数学表达式:

0818b9ca8b590ca3270a3433284dd417.png

我觉得最后一个表达式跟传统的心形是最像的,这个表达式是用极坐标表示的,编写和控制极为方便。第二个心形表达式也比较像,但是这个表达式使用了隐函数,编写并控制起来不容易。

由于最后一个心形图案的中心点在十字交叉部分,要让心形图案跳动起来,只需要控制心形图案随时间变化而改变大小。为了打造生动的跳动动作,我用分段三角函数来模拟跳动幅度,当然也可以直接提供你自己心跳的曲线函数。

Matlab中提供movie函数用于制作动画,以及cla函数用于擦除所有当前绘制的图案。为了效率可以只擦除必要的部分。

gcp=figure;

M=moviein(100,gcp);

heartSpeed=15;

radiusRate=3;

for i = 1:100

axis([-20 20 -20 20]);

cla(gcp);

x=[];

y=[];

for t = 0:0.01:2*pi

r=(sin(t)*sqrt(abs(cos(t))))/(sin(t)+7/5)-2*sin(t)+2;

r = radiusRate * r;

x=[x,r*cos(t)*(0.5+0.5*HeartRate(i,heartSpeed))];

y=[y,r*sin(t)*(0.5+0.5*HeartRate(i,heartSpeed))];

end

hold on;

fill(x,y,'r');

M(:,i)=getframe;

end

movie(M,1);

function ratio=HeartRate(i,heartSpeed)

i=mod(i,heartSpeed);

if i < heartSpeed / 2

ratio=sin( i/heartSpeed*pi);

elseif i >= heartSpeed / 2 && i < heartSpeed * 3/4

ratio=2*cos(i/heartSpeed*2/3*pi);

else

ratio = 0;

end

在很多计算机图形学领域里面,sin函数经常被用来模拟现实中的振动和波动,比如nehe的opengl教程里面,可以用sin函数模拟人走路时身体的上下摆动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值