【问题标题】:effectively emulating a laser pointer for my cat using Matlab使用 Matlab 为我的猫有效地模拟激光笔
【发布时间】: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

此代码的“问题”如下:

  1. 指针或多或少地以恒定速度移动,并且不会减速到接近停止,然后意外继续。

  2. 轨迹在某种程度上是重复的,尽管我尝试使用无理数来制作它,但整体运动从右到左是连续的。我认为更剧烈的轨迹变化会有所帮助。

我知道这不是一个传统的编程问题,但我仍然想解决一个编程问题。感谢您的帮助,当然也愿意接受不使用我添加的代码的新方法来回答我的问题。

【问题讨论】:

  • 很棒的项目。但是以牺牲显示器为代价?!
  • 您可以实现位置、速度和加速度的概念,并使用参数来控制每一个。在gamedev.stackexchange.com中寻找灵感
  • 很有趣。你甚至可以在做这件事时学到一些新东西。模拟strange attractor 或其他混沌吸引子。 :-) 著名的Lorenz attractor 很容易做到。或查看2-D random walksWiener processes 以了解向其他系统/进程添加噪音的方法。
  • 混沌振荡器应该满足您的需求。也许是带有适当参数的罗斯勒振荡器。如果这还不够奇怪,您可以使用更复杂的系统。
  • 这是什么猫?暹罗猫通常对洛伦兹吸引子路径感到满意,而挑剔的俄罗斯蓝更偏向于@Nigel 提出的罗斯勒振荡器。 Random Walks 只适合普通的 moggy。

标签: matlab game-physics motion


【解决方案1】:

这个问题太棒了,我想我会花 15 分钟的时间来亲自试一试。在 YouTube 对激光技术进行广泛研究后,我认为使用运动方程在随机点之间移动会很有效:

n = 20; %number of steps
pos = [0,0]; % initial position
vel = 4; % laser velocity
acc = 400; % laser acelertation
dt = 0.01; % timestep interval
figure
set(gcf,'Position',get(0,'Screensize'));
for i=1:n
    point = rand(1,2);
    dist = 1;
    while dist > 0.05 % loop until we reach the point
        plot(pos(1),pos(2),'o','color','r','MarkerFaceColor','r')
        axis equal
        xlim([0,1])
        ylim([0,1])
        drawnow
        % create random point to move towards
        dist = pdist([point;pos],'euclidean');
        % calculate the direction & mag vector to the point
        dir = (point-pos)/norm((point-pos));
        mag = norm(point-pos);
        % update position
        displ = vel*dt - 0.5*acc*mag*dt^2;
        pos = pos + dir*displ;
    end
end

玩弄这些参数,直到找到你的猫喜欢的东西:0)

【讨论】:

  • 对于更自然的运动,我建议不要使用正态分布,而是使用幂律或利维分布。对数正态分布也可以在紧要关头工作。
  • 我试过正态分布,但我还是更喜欢均匀分布!我想真正的仲裁者必须是猫,尽管我不确定您将如何设置定量实验来评估这一点......!
猜你喜欢
  • 1970-01-01
  • 2012-11-09
  • 2017-06-28
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
相关资源
最近更新 更多