You need to enable JavaScript to run this app. 如何在不改动核心逻辑前提下实现45°旋转矩形的点位置校验
优惠活动
大模型
产品
解决方案
定价
更多

如何在不改动核心逻辑前提下实现45°旋转矩形的点位置校验

矩形等效旋转45°点位置判定方案

核心需求

  • 不改动原有矩形创建、点位置校验的核心概念与逻辑框架
  • 实现效果与矩形绕中心旋转45°后的点位置判定完全等效:原有逻辑判定点在区域内返回TRUE的场景,新逻辑需返回FALSE,对应点落在旋转后矩形区域外的结果

参考说明

原有矩形区域创建与点位置判断的基础组合逻辑可参考下图:
示例图

实现方法

无需修改原有矩形点判定的核心逻辑,仅需对输入点做坐标变换后复用原有逻辑即可:
假设原有轴对齐矩形的判定逻辑为:

// 入参说明:p为待判定点(含x、y坐标属性),rect为矩形参数(含x1左边界、x2右边界、y1下边界、y2上边界属性)
function isPointInOriginalRect(p, rect) {
  return p.x >= rect.x1 && p.x <= rect.x2 && p.y >= rect.y1 && p.y <= rect.y2
}

新逻辑的实现步骤:

  1. 计算矩形的中心坐标:cx = (rect.x1 + rect.x2) / 2,cy = (rect.y1 + rect.y2) / 2
  2. 将待判定点平移到以矩形中心为原点的坐标系:x0 = p.x - cx,y0 = p.y - cy
  3. 对平移后的点做-45°旋转变换(等效于将矩形正向旋转45°),其中cos45 = sin45 = Math.sqrt(2) / 2:
    • x_new = x0 * cos45 + y0 * sin45
    • y_new = -x0 * sin45 + y0 * cos45
  4. 将变换后的点平移回原坐标系得到新的判定点:p_new.x = x_new + cx,p_new.y = y_new + cy
  5. 调用原有判定逻辑得到结果后取反,即为等效旋转后的判定结果:return !isPointInOriginalRect(p_new, rect)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 07:15:03