然而,找到一个多边形点是一个普遍的问题,但是我不明白为什么许多人为本初子午线,赤道线和国际日期线设定了边缘条件。本初子午线以西的点的负值和本初子午线以东的点的正值是否解决了任何问题?
下面的函数试图查看矩形内是否存在一个点(即,它使用两个点来确定矩形)。它不对本初子午线或赤道进行任何检查,到目前为止,我还没有找到我的函数失败的单个边缘情况。我是否缺少某些东西,还是有很多程序员不必要地尝试处理这种极端情况?
谁能找到在以下情况下本机函数应返回true / false的任何极端情况?我假设如果有人找到它,它会处理本初子午线,赤道或国际日期线之间的一个点。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct point_s
{
long latitude;
long longitude;
} point_t;
bool find_point_on_plane(point_t *, point_t *, point_t *);
int main(int argc, char * argv[])
{
point_t * london = (point_t *) malloc(sizeof(point_t));
point_t * cambridge = (point_t *) malloc(sizeof(point_t));
point_t * x = (point_t *) malloc(sizeof(point_t));
london->latitude = 51.5074;
london->longitude = -.1278;
cambridge->latitude = 52.2053;
cambridge->longitude = 0.1218;
x->latitude = 52.0;
x->longitude = 0.0;
find_point_on_plane(london, cambridge, x) ? printf("True.\n") : printf("False.\n");
return 0;
}
bool find_point_on_plane(point_t * lower_left, point_t * upper_right, point_t * x)
{
if(x->latitude <= upper_right->latitude &&
x->latitude >= lower_left->latitude &&
x->longitude <= upper_right->longitude &&
x->longitude >= lower_left->longitude)
{
return true;
}
return false;
}
最佳答案