2014-06-24 8 views
-2

저는 3 차원의 심장을 만들고 싶습니다. 재료, 조명 등과 같이 심장에 적어도 2 가지 효과를 추가하고 싶습니다. 그리고 심장을 사용하여 애니메이션을 만드십시오. 애니메이션은 좋은 생각이 들게됩니다. 내 상상력은 심장이 움직일 수 있다는 것입니다. 여러 번 충돌 한 후 벽을 향해 돌면서 심장이 커졌습니다. 어려움과 위험이 닥칠수록 한 사람이 더 강해질 수 있음을 의미합니다.MatLab에서 3 차원 공간을 효과적으로 만들려면 어떻게해야합니까?

는 I는 차원 HEART 완료했지만 MATERIALS OR ANIMATION없이 :

HERE
%(x^2 + (9/4)y^2 + z^2 - 1)^3 - x^2z^3 - (9/80)y^2z^3 = 0 -3<=x,y,z<=3 
[x,y,z]=meshgrid(linspace(-3,3));       %做出网格meshgrid          
p=(x.^2+(9/4)*y.^2+z.^2-1).^3-x.^2.*z.^3-(9/80)*y.^2.*z.^3; %实现结果的表达 
isosurface(x,y,z,p,0);          %使用函数做图mesh surf 

axis equal; 
axis off; 
view(0,35);   %视角的控制 
colormap([1 0 0]); %绘图颜色红色 
brighten(1.0);  %增亮 
camlight left;  %光源位置 
lighting p;  %光照模式 

는 I에 대해 공 벽

figure(1);%定义函数 
axis([-5.1,5,-0.05,1.05]);%绘制二维图形 
hold on;%保持当前图形及轴系所有的特性 
axis('off');%覆盖坐标刻度,并填充背景 
%通过填充绘出台阶及两边的挡板 
fill([4.12,4.22,4.22,4.12],[-0.05,-0.05,1.05,1.05],'y'); 
fill([-5,-3.2,-3.2,-5],[-0.05,-0.05,0,0],'g'); 
fill([-3.2,-2.8,-2.8,-3.2],[-0.05,-0.05,0.2,0.2],'g'); 
fill([-3.2,-1.4,-1.4,-3.2],[0.2,0.2,0.25,0.25],'g'); 
fill([-1.4,-1,-1,-1.4],[0.2,0.2,0.45,0.45],'g'); 
fill([-1.4,0.4,0.4,-1.4],[0.45,0.45,0.5,0.5],'g'); 
fill([0.4,0.8,0.8,0.4],[0.45,0.45,0.7,0.7],'g'); 
fill([0.4,2.0,2.0,0.4],[0.7,0.7,0.75,0.75],'g'); 
fill([2.0,2.3,2.3,2.0],[-0.05,-0.05,0.75,0.75],'g'); 
fill([2.3,4.12,4.12,2.3],[-0.05,-0.05,0,0],'g'); 
%x2=line([-5,5],[0.25,0.25],'color','g','linestyle','-', 'markersize',50)%设置台阶边框线,颜色,擦试方式 
%line([-5,5],[0.5,0.5],'color','b','linestyle','-', 'markersize',50)%设置球与地面接触面的颜色,擦试方式 
%line([-5,5],[0.75,0.75],'color','b','linestyle','-', 'markersize',50)%设置球与地面接触面的颜色,擦试方式 
head=line(-5,1,'color','r','linestyle','.','erasemode','xor', 'markersize',60);%设置小球颜色,大小,线条和擦试方式 
%body=line(-5,1,'color','b','linestyle','-','erasemode','none'); %描绘轨迹线 
%设置初始条件 
while 1 
t=4; 
dt=0.001; 
w=0; 
dw=0.001; 
w=0;%设置球弹起的初始位置 
%设置球弹起的高度 
while t<=4.12 
    t=dt+t; 
if w<=1 
    w=dw+w; 
else 
    w=-1; 
end 
y=(-w*w)+1; 
set(head,'xdata',t,'ydata',y);%设置球的运动 
%set(body,'xdata',t,'ydata',y);%描绘轨迹线 
drawnow; 
end %结束程序 
w=0;%设置球弹起的初始位置 
%设置球弹起的高度 
while t>=2.11 
    t=t-dt; 
if w<=1 
    w=dw+w; 
else 
    w=-1; 
end 
y=(-w*w)+1; 
set(head,'xdata',t,'ydata',y);%设置球的运动 
%set(body,'xdata',t,'ydata',y);%描绘轨迹线 
drawnow; 
end %结束程序 
w=0;%设置球弹起的初始位置 
    %设置球弹起的高度 
while t>=1.11 
    t=t-dt; 
if w<=1 
    w=dw+w; 
else 
    w=-1; 
end 
y=(-w*w)/4+1; 
set(head,'xdata',t,'ydata',y);%设置球的运动 
%set(body,'xdata',t,'ydata',y);%描绘轨迹线 
drawnow; 
end %结束程序 
w=-0.71;%设置球弹起的初始位置 
    %设置球弹起的高度 
while t>=-0.62 
    t=t-dt; 
if w<=1 
    w=dw+w; 
else 
    w=-1; 
end 
y=(-w*w)/2+1; 
set(head,'xdata',t,'ydata',y);%设置球的运动 
%set(body,'xdata',t,'ydata',y);%描绘轨迹线 
drawnow; 
end %结束程序 
w=-0.71;%设置球弹起的初始位置 
    %设置球弹起的高度 
while t>=-2.31 
    t=t-dt; 
if w<=1 
    w=dw+w; 
else 
    w=-1; 
end 
y=(-w*w)/2+0.75; 
set(head,'xdata',t,'ydata',y);%设置球的运动 
%set(body,'xdata',t,'ydata',y);%描绘轨迹线 
drawnow; 
end %结束程序 
w=-0.71;%设置球弹起的初始位置 
    %设置球弹起的高度 
while t>=-4 
    t=t-dt; 
if w<=1 
    w=dw+w; 
else 
    w=-1; 
end 
y=(-w*w)/2+0.5; 
set(head,'xdata',t,'ydata',y);%设置球的运动 
%set(body,'xdata',t,'ydata',y);%描绘轨迹线 
drawnow; 
end %结束程序 
for i=0:0.01:200%设置延时 
    y=i+2; 
    if(y>199) 
    end 
end 
end 
대항 실행 인터넷에서 검색 한 내용 IS

어떻게 상상력을 발휘할 수 있습니까? 불가능할 경우 유사성은 양호합니다 짧은 시간 동안 matlab을 공부하기 시작했습니다. 도움을 청합니다!

+0

"좋은 생각"이란 무엇을 의미합니까? 당신의 마음으로 무엇을하고 싶습니까? 마음이 멋지지만 유용한 답을 얻기 위해 성취하고자하는 것에 대해 좀 더 구체적이어야합니다. – Trilarion

답변