c++ 怎么判定点在圆的哪个范围

来源:百度知道 编辑:UC知道 时间:2024/05/31 18:05:53
把一个半径R中心原点的圆8等份,给出每等份的斜率范围MATH = {SLOPE1,SLOPE2,SLOPE3,SLOPE4,SLOPE5,SLOPE6,SLOPE7,SLOPE8};
#define SLOPE1 9999
#define SLOPE2 1
#define SLOPE3 0
#define SLOPE4 -1
#define SLOPE5 -9999
#define SLOPE6 1
#define SLOPE7 0
#define SLOPE8 - 1
由于不能用角度,用了8条斜率大概判断点的范围,现在任意给出一点,然后判断那点在圆的哪个区域,怎么用程序写判断点在哪个区域?即怎么用程序实现利用当前斜率数组实现此功能
如果是要求是16等分呢?设计要求容易扩展的

斜率k=(double)y/x
x>0,比较k和SLOPE1 SLOPE2 SLOPE3 SLOPE4 SLOPE5,处于哪相邻两个之间,4个间隔对应4个区域
x<0,比较k和SLOPE5 SLOPE6 SLOPE7 SLOPE8 SLOPE1,处于哪相邻两个之间,4个间隔对应另外4个区域

16等分的话
x>0,比较k和SLOPE1 SLOPE2 ... SLOPE9,处于哪相邻两个之间,8个间隔对应8个区域
x<0,比较k和SLOPE9 ... SLOPE16 SLOPE1,处于哪相邻两个之间,8个间隔对应另外8个区域

只用斜率不能准确判断点的范围。
因为1,3象限的斜率一样,2,4,象限的斜率一样。
所以先要根据x,y值正负组合,判断在第几象限,再考虑斜率范围。

另外还要处理特殊点,例如,x,y 同时为0,x为0且y不为0,y为0且x不为0.

o