我一直试图弄清楚如何在几个小时内完成这项工作。我有两个方程式以(x,y)格式绘制
x = v*cosd(theta)*t;
y = -(g*t.^2)/2 + v*sind(theta)*t;
plot(x,y)
变量v,theta,xanimal,yanimal在程序运行后由用户输入填充。 xanimal和yanimal基本上是单点的位置,而v和theta是进入上面创建轨迹的方程式的变量。 我正在寻找的是一些条件语句,用于确定点(xanimal,yanimal)是在图上还是在图(x,y)的0.5之内。 由于通过用户输入填充等式的值,因此绘图(x,y)不断变化。
我尝试过不同的事情。
One Attempt
for i=1:max(x)
if xanimal == x(i) && yanimal == y
disp('Success')
end
end
此方法也无效
Second Attempt
Xmax_animal = xanimal +.5;
Xmin_animal = x-.5;
Ymax_animal = y+.5
Ymin_animal = y-.5
Y_animal = linspace(max(y),min(y),1)
if(Y_animal>max1)
disp('food fight')
else
a = find(y >= Y_animal);
b = x(a);
d = b(1);
c1 = b(end);
if (Xmax_animal >= d) && (d >= Xmin_animal)
set(handles.edit5, 'String', 'Success')
提前致谢!
答案 0 :(得分:0)
您需要一个距离函数,它使用两个坐标而不是分别使用每个坐标。以下应该有效:
function d = dist(x , y, xpoint, ypoint)
d = sqrt( (x - xpoint).^2 + (y - ypoint).^2 );
end
你可以调用这个点给它你的x和y向量以及你的xanimal和yanimal点来产生一个距离数组。然后使用
if sum(d < 0.5) > 0
disp('Close enough!');
else
disp('too far away');
end