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

共面矩形与直线相交所得分割段面积的三角函数求解方法

矩形被平面内直线分割的单侧面积无交点计算方法

你预期的无需求解交点的通用闭式公式确实存在,全程仅通过基础三角函数和算术运算即可得到结果,完全适配无线性代数模块的运行环境。

参数约定

所有参数均可直接通过几何关系测量/计算得到,不需要坐标求解,完全匹配你提到的A1 = f(d,r,u,c)函数入参形式:

  • r、u对应矩形两个正交邻边的方向与长度,取半长分别为w、h(即矩形沿r方向全长为2w、沿u方向全长为2h,直接用全长代入的话对应调整系数即可)
  • d为待计算面积的一侧对应的直线法向量方向为正方向时,矩形几何中心到直线的垂直带符号距离
  • 直线法向量与r方向的夹角为θ,可通过三角函数直接得到sinθ、cosθ值
  • c为中心偏移修正量,已整合到带符号距离d的计算中,不需要额外单独计算

分场景闭式公式

先利用矩形对称性做预处理:将θ的取值归一化到[0, π/2]区间,同时对sinθ、cosθ取绝对值,仅通过4个分支判断即可覆盖所有直线位置、朝向的场景:

  • 当d >= w*cosθ + h*sinθ:直线完全落在矩形待计算侧的反方向,待求面积为0
  • 当d <= -(w*cosθ + h*sinθ):直线完全落在矩形待计算侧的外侧,待求面积为矩形总面积4*w*h
  • 当直线与矩形存在交线时,先计算两个中间阈值:
    • 矩形沿法向量方向的最大半跨度:s = w*cosθ + h*sinθ
    • 邻边切割切换阈值:t = abs(w*cosθ - h*sinθ)
      再按距离区间匹配公式:
    • 若abs(d) <= t:直线穿过矩形的一组平行对边,待求区域为直角梯形/矩形,面积为2*w*h*(1 + d/s)
    • 若t < d < s:直线穿过矩形相邻的两条边,待求区域为直角三角形,面积为(s - d)*(s - d)/(2*sinθ*cosθ)
    • 若-s < d < -t:直线穿过矩形相邻的两条边,待求区域为矩形切去一个小直角三角形的多边形,面积为4*w*h - (s + d)*(s + d)/(2*sinθ*cosθ)

实现提示

  • 全程运算仅涉及加减乘除、绝对值、最值判断、正弦余弦计算,没有矩阵运算、没有交点求解步骤,代码实现门槛极低
  • 角度归一化不需要复杂变换:对任意朝向的直线,只需要把夹角对π/2取余,再把结果映射到0到90度区间即可,靠距离的符号就能覆盖所有朝向的计算
  • 若需要计算直线另一侧的面积,直接把d取反代入公式,用矩形总面积减去当前结果即可做校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:09:23