数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 12070|回复: 20

谁知道三维投影方面的知识啊 据说可以实现动画和静态三维的结合

[复制链接]
发表于 2003-7-29 19:49:16 | 显示全部楼层 |阅读模式
只是听说了这个说发 不知道那是个什么dd 也没见过相关资料 请各位ggjj们指教哈^_^
 楼主| 发表于 2003-7-29 20:26:38 | 显示全部楼层

555555555555555
郁闷了
但愿有人知道!
发表于 2003-7-29 20:35:32 | 显示全部楼层

三维投影和动画静态结合没有太大的联系吧
三维投影只是矩阵变换
动画与静态结合可能要考虑很多东西的

ps:不要着急呀!
 楼主| 发表于 2003-7-29 20:38:01 | 显示全部楼层

呵呵 就是有点急了 其他的完成很久了 就是这个dd卡了我几天了
最迟明天我就得交上去了
发表于 2003-7-29 21:00:44 | 显示全部楼层

能上QQ吗?
最好不要在这里版聊
发表于 2003-7-29 21:11:24 | 显示全部楼层

matlab动画有两种形式,你用的可能是第一种形式,还有一种适合计算需要大量时间,或结果得到的图象过于复杂,用户就必须生成一个影片。
    你可以在matlab中用函数getframe和movie,它提供了捕获和演示所需要的工具。
    你先看一个例子,我再对例子作解释。[x,y,z]=peaks(50);
surfl(x,y,z)
axis([-3 3 -3 3 -10 10])
axis vis3d off
shading interp
colormap(copper)
for i=1:15
    view(-37.5+15*(i-1),30)
    m(i)=getframe;
end
cla
movie(m)
发表于 2003-7-29 21:49:56 | 显示全部楼层

%函数getframe对当前的图象进行一次快照,movie在这些快照都被捕获之后,回头从新播放这些帧序列。函数getframe的输出是一个结构
%,它包含movie所需要的所有信息。
[x,y,z]=peaks(50);
surfl(x,y,z)
axis([-3 3 -3 3 -10 10])          %固定坐标轴
axis vis3d off
shading interp                    %
colormap(copper)
for i=1:15
    view(-37.5+15*(i-1),30)         %更换视角
    m(i)=getframe;                  %将这幅画加到frame结构体中
end
cla                                %为movie清除axis
movie(m)                           %播放
%函数im2frame和函数frame2im实现索引图象和影片之间的转换。
%M(n)=im2frame(x,cmap)将索引图象X和颜色表cmap转换成影片矩阵M的第n帧。im2frame 可以将一系列图象转换成一个影片。
 楼主| 发表于 2003-7-30 00:21:30 | 显示全部楼层

获益匪浅^_^谢谢大侠!
但是解决不了小女子的难处 呵呵
请看看我论坛里面的有篇具体说明,要是有好的idea
不吝赐教哦:)
 楼主| 发表于 2003-7-30 00:43:56 | 显示全部楼层

str1 = fopen('boat.txt','r');
data1 = fscanf(str1,'%f',inf);

t=data1(1:7:26754,1);
x1=data1(2:7:26754,1);
y1=data1(3:7:26754,1);
z1=data1(4:7:26754,1);
x2=data1(5:7:26754,1);
y2=data1(6:7:26754,1);
z2=data1(7:7:26754,1);
k1=(x1)';
m1=(y1)';
l1=(z1)';
k2=(x2)';
m2=(y2)';
l2=(z2)';

plot3(k1,m1,l1);hold on
plot3(k2,m2,l2);hold off
grid on
theAxes=axis;
m=moviein(8000);
for i=1:10:3822
    plot3(k1(i),m1(i),l1(i),'.');
    hold on
    plot3(k2(i),m2(i),l2(i),'*');
    hold off
    str=strcat('t=',num2str(t(i,1)));
    text(k1(i)+10,m1(i),l1(i),str);
    grid on
    axis(theAxes);
    m(:,i)=getframe;

end
movie(m,10);        
这是我实现两个动点同时运动的源程序
然后加进去背景如下:
 楼主| 发表于 2003-7-30 00:47:14 | 显示全部楼层

k1=(x1)';
m1=(y1)';
l1=(z1)';
k2=(x2)';
m2=(y2)';
l2=(z2)';
[k1,m1]=meshgrid(k1);
   l3=0*ones(size(k1));
plot3(k1,m1,l1);hold on
plot3(k2,m2,l2);hold on
plot3(k1,m1,l3);hold off
  grid on
theAxes=axis;
m=moviein(8000);
for i=1:3822
     plot3(k1,m1,l3);hold on
    %plot3(k1(i),m1(i),l1(i),'.');
   %hold on
    plot3(k2(i),m2(i),l2(i),'*');
    hold off
    str=strcat('t=',num2str(t(i,1)));
    text(k1(i)+10,m1(i),l1(i),str);
    grid on
    axis(theAxes);
    m(:,i)=getframe;
end
movie(m,10);   
(暂时实现的一个动点加背景,另一个用%先pass它)   
运行时候 错都不报了 根本出不来东西 直接无响应 把matlab都给我关了
简直无语
各位大侠帮小女子检查一下哪里出了错哦
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-30 08:42 , Processed in 0.133015 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表