有人可以指出我正确的方向,指定一个不连续的功能的事件吗?例如,假设我有沿x轴移动的Object1,并且我还有另一个在x = 100时垂直移动的Object2。
我希望每当Object1通过x = 100时触发事件函数,并且两个对象之间的距离为10。这个问题是当事件触发时,距离必须从d = 10跳到 - 1和我这对我不起作用,因为功能不连续。
function [value, isTerminal, direction] = myEvent(t, z)
distBetweenObj = z(1)-z(2)
if abs(distBetweenObj) < tol && objectsCollider(z(1),z(2))
value = -1;
isTerminal = 1; % the event should be triggered at this point
direction = -1; % but for some reason it doesn't
else
value = distBetweenObj;
isTerminal = 0;
direction = -1;
end
end
任何人都有任何想法如何指定此功能?
答案 0 :(得分:0)
我找到了解决问题的方法。可以运行ode求解器,直到对象达到x = 100,然后在事件函数外单独检查第二个对象是否在距离第一个对象10个单位之内,然后再次集成,如果还有其他事情需要完成。