C#中判断坐标距离固定主坐标更近的数学逻辑实现咨询
坐标接近度判断实现方案
核心逻辑说明
用欧式距离平方作为接近度判断指标,值越小代表坐标越接近主坐标,天然适配正负值、超主坐标值的所有场景,且无需开平方计算,性能优于实际距离计算,完全匹配暴力遍历找最近点的需求。
代码实现
初始化定义
// 固定主坐标 const double xmain = 110.0; const double ymain = 120.0; // 最近坐标存储变量 double nearestx = 0.0; double nearesty = 0.0; // 最近点距离平方记录,初始赋值为无穷大 double min_dist_sq = INFINITY;
新坐标处理逻辑
// 动态输入的坐标 double x = 80.0; double y = 90.0; // 计算当前点到主坐标的距离平方 double dx = x - xmain; double dy = y - ymain; double current_dist_sq = dx * dx + dy * dy; // 距离小于当前记录的最小值则更新 if (current_dist_sq < min_dist_sq) { min_dist_sq = current_dist_sq; nearestx = x; nearesty = y; }
可选扩展
- 若x、y轴权重不同,可按需添加加权系数,例:x轴重要性为y轴2倍时,距离平方计算改为
current_dist_sq = 2 * dx * dx + dy * dy - 若需要输出接近度百分比供展示,可在遍历结束后基于最大距离换算:
// 假设遍历结束后得到所有点中的最大距离平方max_dist_sq double current_near_percent = 100 * (1 - sqrt(current_dist_sq) / sqrt(max_dist_sq));
内容的提问来源于stack exchange,提问作者Yuuta
相关产品推荐
相关产品推荐

