Matlab 为什么函数参数被认为是未定义的变量?
我已经四处寻找了一段时间,但我似乎找不到描述和回答我一直遇到的问题的东西。也就是说,我在一个Matlab 为什么函数参数被认为是未定义的变量?,matlab,Matlab,我已经四处寻找了一段时间,但我似乎找不到描述和回答我一直遇到的问题的东西。也就是说,我在一个ball类中定义了一个函数,该函数检查它是否与另一个球相交(由于球保持在同一个z平面上,并且所有球的半径都相同,我将问题简化为相交圆的问题)。此函数如下所示(其中obj和other都属于ball类,并且ball类包含长度为3的位置向量): 函数相交=球相交(obj,其他) 相交=(对象位置(1)-other.position(1))^2+(对象位置(2)-other.position(2))^2必须使用两
ball
类中定义了一个函数,该函数检查它是否与另一个球相交(由于球保持在同一个z平面上,并且所有球的半径都相同,我将问题简化为相交圆的问题)。此函数如下所示(其中obj
和other
都属于ball
类,并且ball
类包含长度为3的位置向量):
函数相交=球相交(obj,其他)
相交=(对象位置(1)-other.position(1))^2+(对象位置(2)-other.position(2))^2必须使用两个输入参数调用球相交
最有可能的情况是,您希望将ball
的第56行更改为如果ball\u交叉点(obj,other)
,或者如果obj.ball\u交叉点(other)
,采纳您的第一个建议,我认为第二个建议也会奏效。在许多其他语言中,可以调用成员函数,而不必显式地提到调用者——我想在Matlab中是不行的。
function intersected = ball_intersection(obj, other)
intersected = (obj.position(1)-other.position(1))^2+(obj.position(2)-other.position(2))^2 <= (2*ball.radius)^2;
end
Undefined variable other.
Error in ball/ball_intersection (line 29)
intersected = (obj.position(1)-other.position(1))^2+(obj.position(2)-other.position(2))^2 <= (2*ball.radius)^2;
Error in ball/move (line 56)
if ball_intersection(other)
Error in finalproject (line 41)
cueball.move(0.0001, 0, 0, 9.32, 4.65, otherball);