数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
楼主: 胡安尼特

[求助]图形的粘合

[复制链接]
发表于 2003-7-29 19:46:43 | 显示全部楼层

好的

我尽力,正好暑假也较有时间。
虽然我在准备建模比赛^_^
 楼主| 发表于 2003-7-30 00:16:25 | 显示全部楼层

现在根据祯和画图的原理 我设想:
这样实现  把第一祯画(不透明)上背景的三维海底和t1时刻的动点的图像,然后将第二祯(透明)画上背景的三维海底和t2时刻的动点的图像,依次。。。。这样每祯中的海底就会重叠看起来还是一个海底 而动点在播放的时候也就有了轨迹 实现了动画的效果
但是现在我遇到问题是通过怎么杨的设置是每祯的透明不透明,开始每祯的属性应该是默认的 是不透明的
各位大虾有经验的 指点^_^re一下!!!
发表于 2003-7-30 01:54:32 | 显示全部楼层

你这样的方法不也是把背景加入每一帧里面了吗?对你要做的东西我不是很清楚,但是心
里还是有一点数的,下面只能根据我对你的程序的理解把我的方法说出来。
根据你的设想看的出可以把两条船(是两条船吧?^_^)看成两个图片.打个比方,那个背景
就相当于画在画布上的一幅静态的画,而那两条船则是画在无色的玻璃上的,这样在画布前
面移动这两块玻璃,把整个画面组合起来就产生了动画效果.
现在的关键就是如何做出这块玻璃来,也就相当于你说的透明效果.首先你要选出一块矩形
区域来绘制那条船,也就是说找出一块合适的"玻璃",它的面积在容纳整条船的前提下应该
尽量小,以减少后面的运算量.它都是矩形的,但船并不是矩形的,而且要保证"玻璃"上没有
绘制船的地方要透明.换一种说法就是在这些地方要能够看到背景,那你只需要在这些区域
内将背景显示出来就可以.一般来说事先将这些区域绘制上特殊的颜色,然后在复合的时候
将此处绘制上背景色就可以了.
至于景物的运动,因为该区域为矩形那么坐标变换只需要找一个点进行变换就可以了,区域
内的其它部分以该点为参考点绘制.
这是计算机图形学上的方法,在这里行不行的通,还需要考虑一下.
发表于 2003-7-30 02:01:54 | 显示全部楼层

这里可能会用到一定的复合运算,就是说那个小的矩形区域所覆盖的地方,都要重新绘制一
遍,至于该显示景物还是背景则有具体的运算决定.
 楼主| 发表于 2003-7-30 04:28:44 | 显示全部楼层


做了一个数据量小的程序试了一下
效果很差 要仔细看才看得到动点。
还有就是加不进去两个动点
t=linspace(0,2*pi,400)
theta=0:pi/100:2*pi;
x=2.*cos(theta);
y=2.*sin(theta);
z=2.*theta;
plot3(x,y,z);
[x1,y1]=meshgrid(t);
zh=0*ones(size(x1));
theAxes=axis;
m=moviein(400);
for i=1:400
  plot3(x1,y1,zh);
  hold on
  plot3(x(i),y(i),z(i),'.');
   hold off
   grid on
    axis(theAxes);
    m(:,i)=getframe;
end
movie(m,20);
发表于 2003-7-30 04:47:44 | 显示全部楼层

看到了
效果的确不是很理想
闪得挺厉害的

代码我也看了
好像你没有完全理解我的意思
也或许是实现起来真的有些困难
<IMG border=0 SRC=images/brow/regular_smile.gif>
 楼主| 发表于 2003-7-30 04:52:19 | 显示全部楼层

t=linspace(0,2*pi,400)

theta=0:pi/100:2*pi;

x=2.*cos(theta);

y=2.*sin(theta);

z=2.*theta;

plot3(x,y,z);

[x1,y1]=meshgrid(t);

zh=0*ones(size(x1));

theAxes=axis;

m=moviein(400);

for i=1:400

  plot3(x1,y1,zh);

  hold on

  plot3(x(i),y(i),z(i),&#39;.&#39;);

   hold off

   grid on

    axis(theAxes);

    m(:,i)=getframe;

end

movie(m,20);

编了个运算量小的程序,效果不好 仔细看才看得到动点哈
还有平面的生成速度太慢了 是怎么回事哦
怎么才能把另外一个动点加进去啊?
发表于 2003-7-30 04:52:20 | 显示全部楼层

<BLOCKQUOTE><strong>引用</strong>:<HR Size=1>原文由 <b>胡安尼特</b> 发表:
做了一个数据量小的程序试了一下
效果很差 要仔细看才看得到动点。
<HR SIZE=1></BLOCKQUOTE>
换一下点的颜色
或者是背景色
发表于 2003-7-30 05:48:20 | 显示全部楼层

还不如拿Flash做个动画呀
如果进行模拟的话用OpenGL也可以呀(开个玩笑<IMG border=0 SRC=images/brow/wink_smile.gif>)
Matalb里面有的操作似乎无法完成

不过可以看看有没有其他变通的办法<IMG border=0 SRC=images/brow/regular_smile.gif>
 楼主| 发表于 2003-7-30 18:36:42 | 显示全部楼层

难!无什么内容!
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

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

GMT+8, 2024-11-30 13:35 , Processed in 0.057286 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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