我有两点A,B和角x。假设向量、Aa、和Bb有角x。
如果载体AA'b = 90 degree中存在A',则满足Bb
Compare(A, B) = 0 A‘= B那么A’=BCompare(A, B) > 0否则Compare(A, B) < 0
POINT a, b;
float x; // in radian
int Compare(POINT a, POINT b, float x)
{
}示例:
在图像中,载体A'存在于载体Bb中,而在载体Aa'中不存在B'满足给定条件,因此AE 246><代码>E 147B<代码>E 248。
问:在Compare()函数中,我需要使用哪些代码来获得所需的值?

发布于 2017-07-29 11:00:46
如果你知道如何使用两个向量的点积,那就很简单了。
// Assumed structure:
struct POINTF{
float x, y;
};
// include math.h for sin() and cos()
int Compare(POINTF a, POINTF b, float x)
{
POINTF diff = {a.x-b.x, a.y-b.y};
POINTF base = {cos(x), sin(x)};
float r = diff.x * base.x + diff.y * base.y;
if (r == 0.0f) return 0;
return (r > 0.0f) ? 1 : -1;
}实际上你不需要两个临时向量。上面的代码是为了告诉你两个向量的点积的计算。您可以将代码简化为
int Compare(POINTF a, POINTF b, float x)
{
float r = (a.x - b.x) * cos(x) + (a.y - b.y) * sin(x);
return (r == 0.0f) ? 0 : ((r > 0.0f) ? 1 : -1);
}https://stackoverflow.com/questions/45388235
复制相似问题