声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1628|回复: 5

[图像处理] 如何不关闭窗口重绘三维图形?

[复制链接]
发表于 2009-3-10 22:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我目前正在做一个动态的三维随机航迹模拟;
预定航迹数k为可变参量;现在的运行结果是:点击运行,打开窗口,画出k个航迹的运动轨迹(一个小点在已知的航迹譬如抛物线中移动,从起始点移动到终点,结束);

但是老板要求:在不关闭窗口的情况下,刷新坐标轴内(即白色部分)的图像,具体举例:第一次,一个k=8的航迹的模拟结束了(进过了一个动态的过程),随机刷新,然后产生一个新的k=3(k为随机)的航迹的模拟过程,以此类推,直到人为关闭的时候该窗口才结束;

请问大概可以使用什么方法和什么函数?同学们有什么好的建议么?谢谢解答!!

================================================================
我把画图整个的程序传上来,请同学们指正!需要的同学也可以拿去参考。
================================================================

下面贴一点画图部分的程序:

h=plot3(pos_a_x,pos_a_y,pos_a_z,'*',pos_b_x,pos_b_y,pos_b_z,'*');
grid on;
axis([-r_max r_max 0 r_max 0 1e3]);
title('炮弹模式下的航迹演示图');
xlabel('X轴');ylabel('Y轴');zlabel('Z轴');
hold on;
figure(1);
………………
………………
set(h,'EraseMode','xor','MarkerSize',10);
………………
………………
set(h,'XData',pos_a_x,'YData',pos_a_y,'ZData',pos_a_z)

trace_paodan.m

4.75 KB, 下载次数: 6

回复
分享到:

使用道具 举报

发表于 2009-3-10 23:26 | 显示全部楼层
试试 用 input 输入k的值,然后每次k 值 plot 显示在图片中,hold on 即可。
发表于 2009-3-11 09:23 | 显示全部楼层
修改如红色部分所示:
……
while 1
m1=linspace(0,180,k+1)/180*pi;%把180°分成16份
……
   pause(0.5);
end;
k=input('Please input positive integer k:');
reset(gca);
end
 楼主| 发表于 2009-3-11 09:58 | 显示全部楼层
非常感谢上面两位同学的建议;
我使用了第二位同学的方法,经过测试,发现运行结果是:运行一次航迹后,在command窗口提示:“Please input positive integer k:”, 按照提示输入k的值,就能接着运行第二次程序,以此类推,知道手动关闭窗口结束程序!


不过老板说不要输入k,直接自动刷新;
我现在正在考虑,如何不手动输入k,而通过程序中的某段语句或者函数自动选择k的值,并且赋给要重画的窗口。
 楼主| 发表于 2009-3-11 10:07 | 显示全部楼层
呵呵,我刚才试了一下,其实很简单;
把第二位同学的这段语句中标红的一句改掉:
while 1
m1=linspace(0,180,k+1)/180*pi;%把180°分成16份
……
   pause(0.5);
end;
k=input('Please input positive integer k:');——>改成:k=ceil(rand(1)*8);应该就可以了;
reset(gca);
end
发表于 2009-3-11 11:16 | 显示全部楼层

回复 5楼 selaro 的帖子

呵呵,原来要随机生成k啊,没注意到。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 19:30 , Processed in 0.158360 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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