南京市栖霞区仙林大道16号 j9-zhenren@52j9.com

游戏中心

游戏机制详解:圆形范围碰到矩形目标的最近点判断——矩形[-7, -6, -4, -1]的十三组圆形范围(实例26)

2026-10-30

圆形效果范围与矩形目标接触时,不能只看矩形中心是否进入圆内。目标边缘可能先进入,而角落与圆心的距离也会影响是否真正接触。

下面是一组独立的虚构游戏输入与逐步结果。先记录单位、编号和端点是否包含,再尝试自己推算,最后对照第一处差异。所有结论都以本例规则为前提;其他作品采用不同约定时,应按它自己的说明重新计算。

本例规则与数据

矩形轴对齐且有正宽高,圆半径为正。找到矩形中距离圆心最近的点,距离平方不大于半径平方就判接触,外切也包含。只判断静态几何,不模拟运动、碰撞响应或实际伤害。

矩形-7,-6至-4,-1 [[-10, -6, 3], [-7, -6, 2], [0, 3, 3], [-10, 10, 3], [-10, 6, 6], [8, 2, 7], [-4, 6, 2], [-4, -10, 1], [-3, -8, 3], [3, 6, 5], [6, 1, 8], [4, -8, 4], [0, 14, 1]]

过程记录

圆心(-10,-6)、半径3,矩形最近点[-7, -6],距离平方9,半径平方9;判定接触。

圆心(-7,-6)、半径2,矩形最近点[-7, -6],距离平方0,半径平方4;判定接触。

圆心(0,3)、半径3,矩形最近点[-4, -1],距离平方32,半径平方9;判定分离。

圆心(-10,10)、半径3,矩形最近点[-7, -1],距离平方130,半径平方9;判定分离。

圆心(-10,6)、半径6,矩形最近点[-7, -1],距离平方58,半径平方36;判定分离。

圆心(8,2)、半径7,矩形最近点[-4, -1],距离平方153,半径平方49;判定分离。

圆心(-4,6)、半径2,矩形最近点[-4, -1],距离平方49,半径平方4;判定分离。

圆心(-4,-10)、半径1,矩形最近点[-4, -6],距离平方16,半径平方1;判定分离。

圆心(-3,-8)、半径3,矩形最近点[-4, -6],距离平方5,半径平方9;判定接触。

圆心(3,6)、半径5,矩形最近点[-4, -1],距离平方98,半径平方25;判定分离。

圆心(6,1)、半径8,矩形最近点[-4, -1],距离平方104,半径平方64;判定分离。

圆心(4,-8)、半径4,矩形最近点[-4, -6],距离平方68,半径平方16;判定分离。

圆心(0,14)、半径1,矩形最近点[-4, -1],距离平方241,半径平方1;判定分离。

十三组圆中3组接触目标,外切属于接触。

独立核对与实际应用

圆心在矩形内部时距离为零;在外部时分别求圆心到四条边线段的距离,取最小值,与直接夹取坐标得到的最近点结果比较。不要用到无限延长直线的距离代替线段距离。

距离平方比较避免了本例中的开方误差,但并不能解决所有实际引擎的精度问题。矩形旋转、圆变成椭圆或目标具有透明空洞时,都需要调整几何表示。是否算接触与接触后触发什么效果应分别定义。

测试时先保留输入和中间状态,再只改变一个条件。空状态、正好相等、重复出现和最后一步都值得单独检查。若最终结果不符,应从第一处偏差查起,而不是在末尾随意增加补偿让数字表面一致。