You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判定点D是否位于以B为圆心、A定朝向的已知半径180°扇形内

点是否在指定180°扇形内的判定方法

扇形判定参考示意图

核心判定逻辑

目标区域是以B为圆心、固定半径、对称轴沿B指向A方向的180°半圆扇形,点D落在区域内需要同时满足两个条件:

  • 点D到圆心B的直线距离不超过扇形半径
  • 点D位于过B点、垂直于BA连线的分界直线靠A的一侧,即BD连线与BA连线的夹角不超过90°

整个计算过程只用到基础四则运算,不需要三角函数、开根号操作,计算效率高且不容易出现精度误差。

分步计算流程

所有点统一使用二维平面坐标(x, y)表示,按以下顺序计算即可:

  1. 确认已知量:A点坐标(Ax, Ay)、圆心B点坐标(Bx, By)、待判定D点坐标(Dx, Dy)、扇形半径r
  2. 计算B指向A的向量分量:BAx = Ax - Bx,BAy = Ay - By
  3. 计算B指向D的向量分量:BDx = Dx - Bx,BDy = Dy - By
  4. 距离校验:计算B到D的距离平方BD_sq = BDx*BDx + BDy*BDy,计算半径平方r_sq = r*r。如果BD_sq > r_sq,说明D在圆形范围外,直接判定不通过。用平方做比较可以省去开根号步骤,减少计算量和精度损失。
  5. 方位校验:计算两个向量的点积dot = BAx*BDx + BAy*BDy。如果dot < 0,说明D在半圆背向A的一侧,判定不通过。
  6. 两项校验全部通过时,即可判定D落在目标扇形区域内。

边界规则说明:如果需求是排除区域边界(即点落在圆弧、直边上不算在区域内),将上述判断条件中的>、<替换为>=、<=即可。

伪代码实现

// 入参定义:
// A: 确定扇形朝向的点,包含x、y两个坐标属性
// B: 扇形圆心点,包含x、y两个坐标属性
// D: 待判定点,包含x、y两个坐标属性
// r: 扇形已知半径
function isDInSector(A, B, D, r):
    // 计算向量分量
    baX = A.x - B.x
    baY = A.y - B.y
    bdX = D.x - B.x
    bdY = D.y - B.y

    // 校验距离是否在半径范围内
    distSquare = bdX * bdX + bdY * bdY
    rSquare = r * r
    if distSquare > rSquare:
        return False

    // 校验是否在朝向A的半圆侧
    dotProduct = baX * bdX + baY * bdY
    if dotProduct < 0:
        return False

    return True

内容的提问来源于stack exchange,提问作者Dromd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:45:38