江苏省常熟市东南经济技术开发区 17823630721 lianxij9@www.j9.com

企业文化

旋转后的两个矩形怎样用投影判断是否分开:规则练习第26例

2026-11-09

两个物体的横向范围重叠,并不表示旋转后的形状一定碰到。对于矩形,可以在双方边的法线方向上分别观察投影;找到一个分开的方向,就能排除相交。

本例矩形由中心和两条互相垂直的半边向量组成,四角是中心加减这两条向量。对每条半边取垂直向量作为轴,把所有角点与轴做点积得到投影区间。要求所有轴的区间都有严格正长度重叠,边或角仅仅接触不算进入。

本例输入与约定

六组互相独立的矩形比较。下表中心及半边向量格式均为横、纵坐标。

完整计算记录

第1组输入:[{'center': [-2, 3], 'u': [12, -9], 'v': [6, 8]}, {'center': [-7, 8], 'u': [8, -6], 'v': [3, 4]}] 各轴投影与正重叠:[[[9, 12], [[-132, 168], [-42, 108]], True], [[-8, 6], [[-116, 184], [4, 204]], True], [[6, 8], [[-88, 112], [-28, 72]], True], [[-4, 3], [[-58, 92], [2, 102]], True]] 内部相交:True 第2组输入:[{'center': [-10, 4], 'u': [6, 8], 'v': [-8, 6]}, {'center': [2, -1], 'u': [4, -3], 'v': [6, 8]}] 各轴投影与正重叠:[[[-8, 6], [[4, 204], [-72, 28]], True], [[-6, -8], [[-72, 128], [-104, 96]], True], [[3, 4], [[-64, 36], [-48, 52]], True], [[-8, 6], [[4, 204], [-72, 28]], True]] 内部相交:True 第3组输入:[{'center': [3, -3], 'u': [12, -9], 'v': [9, 12]}, {'center': [-3, 6], 'u': [12, -9], 'v': [6, 8]}] 各轴投影与正重叠:[[[9, 12], [[-234, 216], [-105, 195]], True], [[-12, 9], [[-288, 162], [-135, 315]], True], [[9, 12], [[-234, 216], [-105, 195]], True], [[-8, 6], [[-192, 108], [-90, 210]], True]] 内部相交:True 第4组输入:[{'center': [3, 9], 'u': [9, 12], 'v': [-12, 9]}, {'center': [-1, 9], 'u': [3, 0], 'v': [0, 1]}] 各轴投影与正重叠:[[[-12, 9], [[-180, 270], [48, 138]], True], [[-9, -12], [[-360, 90], [-138, -60]], True], [[0, 3], [[-36, 90], [24, 30]], True], [[-1, 0], [[-24, 18], [-2, 4]], True]] 内部相交:True 第5组输入:[{'center': [-8, -10], 'u': [6, 8], 'v': [-8, 6]}, {'center': [1, -10], 'u': [3, 4], 'v': [-8, 6]}] 各轴投影与正重叠:[[[-8, 6], [[-96, 104], [-168, 32]], True], [[-6, -8], [[28, 228], [24, 124]], True], [[-4, 3], [[-48, 52], [-84, 16]], True], [[-6, -8], [[28, 228], [24, 124]], True]] 内部相交:True 第6组输入:[{'center': [7, 10], 'u': [6, 8], 'v': [-8, 6]}, {'center': [-5, -9], 'u': [1, 0], 'v': [0, 3]}] 各轴投影与正重叠:[[[-8, 6], [[-96, 104], [-40, 12]], True], [[-6, -8], [[-222, -22], [72, 132]], False], [[0, 1], [[-4, 24], [-12, -6]], False], [[-3, 0], [[-63, 21], [12, 18]], True]] 内部相交:False

表中编号仅用于识别本例的元素。读取一个结果时,应先核对它对应的输入、处理顺序和边界约定;布尔值表示条件是否成立,空集合表示没有符合要求的对象,不应把这些字段混成同一种数值。

复核方法与适用范围

轴向量不用单位化,因为同一轴上双方投影会乘同一个正尺度。要检查双方提供的全部方向,不能只取一个矩形的方向;相同轴重复检查不会改变结论。

这里适用于非退化凸矩形,没有旋转扫掠和时间维度。一次检查只描述当前姿态,快速运动中的穿越仍需额外处理;表中布尔结果也不提供应把物体向哪边推出的完整响应。

练习时可以先独立计算最前面的一步,再检查最后的整体不变量。若结论不同,应保留各步记录,定位第一处差异;只调整最终数字会掩盖规则理解上的问题。改变输入后也要重新演算,而不是照抄这一例的输出。