在c中获取指南针方向

时间:2016-03-16 04:09:34

标签: c compass direction

我使用harvesine公式计算了两个坐标之间的距离和它们之间的角度,我想得到指南针的方向,但我有问题,我发现这个代码得到方向,但我不能得到索引。 请帮助修复这部分

int degree = 30;

char cordNames [] = {'N', 'NE', 'E', 'SE"]', 'S', 'SW', 'W', 'NW', 'N'};
int  coordinateIndex = floor(((degree-22.5)%360)/45);

if(coordinateIndex <0)
{
    coordinateIndex=coordinateIndex+8;
}

result = directions[index+1];

1 个答案:

答案 0 :(得分:1)

这里有各种各样的错误。您引用了从未定义过的resultdirectionsindex;你不能有两个字母的字符变量,你必须使用C风格的字符串(字符数组),即一个数组中的数组,例如:

const char *coord_names[] = { "N", "NE", "E", "SE", "S", "SW", "W", "NW", "N" };

同样在你的int coordinate_index = floor(((degree - 22.5) % 360) / 45);行,这是不正确的C并且不会编译; %模运算符仅适用于整数;你的degree - 22.5会自动返回一个double,所以你必须使用fmod()函数代替或使用cast函数或者使用floor函数或者类似函数(你很可能想要fmod()尽管??我&#39 ;我不确定)degree - 22.5

当然,我确定您已经#include <math.h>,但请确保您不要忘记与-lm建立关联以链接到数学库(适用于floor(),如果您选择使用fmod())。