如何检查Objective-C中的两个CGV向量是否相等?
我有两个向量:如何检查Objective-C中的两个CGV向量是否相等?,objective-c,sprite-kit,Objective C,Sprite Kit,我有两个向量: CGVector vector1 = CGVectorMake(1,2); CGVector vector2 = CGVectorMake(1,2); 如何检查vector1是否等于vector2?这不是一个容易的问题。你认为“平等”在这里是什么意思 从某种意义上说,如果它们的dx值相等,并且它们的dy值相等,则它们是相等的 但在另一种意义上,也许你想知道的是它们的dx和dy值之间的比率是否相等,因为这毕竟应该是一个向量——也就是说,也许CGVectorMake(1,2)和CG
CGVector vector1 = CGVectorMake(1,2);
CGVector vector2 = CGVectorMake(1,2);
如何检查vector1是否等于vector2?这不是一个容易的问题。你认为“平等”在这里是什么意思 从某种意义上说,如果它们的
dx
值相等,并且它们的dy
值相等,则它们是相等的
但在另一种意义上,也许你想知道的是它们的
dx
和dy
值之间的比率是否相等,因为这毕竟应该是一个向量——也就是说,也许CGVectorMake(1,2)和CGVectorMake(2,4)在非常真实的意义上是相同的向量,因为它们指向相同的方向
换句话说,在某些情况下,大小和方向必须相等,但在其他情况下,方向必须相等。你需要对此做出决定
这里有一些有用的CGVector实用程序:
但是在比较浮动时要小心,因为由于舍入误差,比较可能是错误的,因此您可能需要检查每个组件的差异是否非常接近于零
if( (abs(vector1.dx - vector2.dx) < verysmallnumber) && (abs(vector1.dy - vector2.dy) < verysmallnumber) )
if((abs(vector1.dx-vector2.dx)
其中abs是一个绝对值函数“因为这毕竟应该是一个向量”–是的,向量是向量,但这怎么意味着只有它们的方向才重要呢?@paramagnetic croissant它一点也不意味着它;一切都取决于他打算使用的向量。这就是为什么这不是一个容易的问题。我是说他需要决定“相等”是什么意思。我要说向量是由方向和方向组成的magnitude@coryknapp然后OP应该在我引用的链接上看到
ccvFuzzyEqual
实用程序函数。
if( (abs(vector1.dx - vector2.dx) < verysmallnumber) && (abs(vector1.dy - vector2.dy) < verysmallnumber) )