两个有意思的函数图像

两个有意思的函数图像

1产生类似烟效果的函数:

       最近主要在看粒子系统,比如烟,雾等自然状态的描拟便是非常吸引人的一个领域,而这里有一种基于一个并不复杂函数的烟的轨迹的生成,看上去效果还不错.:)

函数的表达式如下:

x=a0*theta^a1+a2*sin(a3*theta)+a4*sin(a5*theta);

y=a0*theta+a1*sin(a2*theta)+a3*sin(a4*theta);

       所以,自变量仅有一个角度值theta,相当的简单,不过,将这种函数调配出来可是要有艺术和数学的双重感觉的啊。下面是效果图:

看上去还真有那么一回事,这里取的系数值ai分别为:

a0=0.5;a1=1.5;a2=0.2;a3=0.5;a4=1.0;a5=1;

 

Matlab Code:

a0=0.5;

a1=1.5;

a2=0.2;

a3=0.5;

a4=1.0;

a5=1;

 

theta=-10*pi:pi/12:10*pi;

x=zeros(1,length(theta));

y=zeros(1,length(theta));

 

for i=1:1:length(theta)

    x(i)=a0*theta(i)^a1+a2*sin(a3*theta(i))+a4*sin(a5*theta(i));

    y(i)=a0*theta(i)+a1*sin(a2*theta(i))+a3*sin(a4*theta(i));

end

 

plot(x,y);

 

 

2行星轮的轨迹绘制:

       行星轮的运动可以通过下面的图片来说明,两个圆盘被固定在一根杆子的两端,每个圆盘分别以各自的圆心作角速度为w1w2的圆周运动,而整个横杆则以角速度wGan以自身中点为圆心作匀速圆周运动。

   

            图2:行星轮系统

最近在一次创新思维讲座中,就看到有同学设计了基于行星轮的剃须刀,之所以这样做,是有原因的,那是因为当w2,w1均较大于wGan时,这个行星轮的运动轨迹几乎可以扫过整个行星轮系统的外半径,可见效率之高,也足可见那位同学之创意中既有着想象,又有着理性的思考,令人佩服。

                               图3:运行轨迹效果图

 

Matlab Code:

%--data set for round--%

o1x=-50;o1y=0;w1=pi/12;r1=25;theta1=0;

o2x=50;o2y=0;w2=pi/12;r2=25;theta2=0;

 

o1x=-r1;o2x=r2;

 

%--data set for gan--%

rGan=26;wGan=pi/240;

thetaGan=0;

 

%--points data--%

p1xArr=zeros(1,60);p1yArr=zeros(1,60);

p2xArr=zeros(1,60);p2yArr=zeros(1,60);

 

%--init point pos--%

theta1=pi;theta2=0;

 

i=1;

while thetaGan<2*pi

       %--save datas--%

       p1xArr(i)=o1x+r1*cos(theta1);p1yArr(i)=o1y+r1*sin(theta1);

       p2xArr(i)=o2x+r2*cos(theta2);p2yArr(i)=o2y+r2*sin(theta2);   

      

       %--update motion,datas--%

       o1x=rGan*cos(thetaGan+pi);o1y=rGan*sin(thetaGan+pi);

    o2x=rGan*cos(thetaGan);o2y=rGan*sin(thetaGan);

   

    theta1=theta1+w1;

       theta2=theta2+w2; 

       thetaGan=thetaGan+wGan;

 

       i=i+1;

end

 

hold on

       scatter(p1xArr,p1yArr);

    scatter(p2xArr,p2yArr);

hold off

 

你可能感兴趣的:(两个有意思的函数图像)