【发布时间】:2013-07-19 09:50:33
【问题描述】:
我正在尝试使用 matlab 编写代码,以模拟激光笔的方式,让我的猫喜欢在屏幕上追逐它。这是我到目前为止所做的:
figure('menubar','none','color','k')
h = plot(0,'r.','MarkerSize',20);
xlim([-1 1]); ylim([-1 1])
axis off
phi1=(1+sqrt(5))/2;
phi2=sqrt(3);
step= 0.0001; % change according to machine speed
for t=0:step:100
set(h,'xdata',sin(t+phi1*t),'ydata',cos(phi2*t))
drawnow
end
此代码的“问题”如下:
指针或多或少地以恒定速度移动,并且不会减速到接近停止,然后意外继续。
轨迹在某种程度上是重复的,尽管我尝试使用无理数来制作它,但整体运动从右到左是连续的。我认为更剧烈的轨迹变化会有所帮助。
我知道这不是一个传统的编程问题,但我仍然想解决一个编程问题。感谢您的帮助,当然也愿意接受不使用我添加的代码的新方法来回答我的问题。
【问题讨论】:
-
很棒的项目。但是以牺牲显示器为代价?!
-
您可以实现位置、速度和加速度的概念,并使用参数来控制每一个。在gamedev.stackexchange.com中寻找灵感
-
很有趣。你甚至可以在做这件事时学到一些新东西。模拟strange attractor 或其他混沌吸引子。 :-) 著名的Lorenz attractor 很容易做到。或查看2-D random walks 和Wiener processes 以了解向其他系统/进程添加噪音的方法。
-
混沌振荡器应该满足您的需求。也许是带有适当参数的罗斯勒振荡器。如果这还不够奇怪,您可以使用更复杂的系统。
-
这是什么猫?暹罗猫通常对洛伦兹吸引子路径感到满意,而挑剔的俄罗斯蓝更偏向于@Nigel 提出的罗斯勒振荡器。 Random Walks 只适合普通的 moggy。
标签: matlab game-physics motion