目标超出小地图显示范围时,标记可以留在边缘提示方向。若分别把横纵坐标夹到边界,标记方向可能改变;沿中心到目标的射线找交点能保留方向。
本篇给出一份完整且可重复的虚构游戏记录。先读清规则,再尝试自行推演输入,最后逐项对照中间状态。不同作品可以选择不同约定,只有在相同前提下才能比较结果;不要只看最终数字相同就认为过程正确。
约定与原始记录
矩形小地图以零点为中心,给定横纵半宽。范围内目标原位显示;范围外目标沿原方向等比例缩小到矩形边缘。边界包含,零向量保留原点,结果用精确分数记录。
半宽6、半高8 [[0, 0], [6, 8], [-12, 16], [18, 0], [0, -24], [-4, -6], [13, 22], [-5, 30], [3, 20], [19, 24], [-8, 24], [-11, -7], [2, 27]]
逐步计算
目标(0,0),允许缩放上限['1'],取比例1,显示位置['0', '0'],原位保留。
目标(6,8),允许缩放上限['1', '1', '1'],取比例1,显示位置['6', '8'],原位保留。
目标(-12,16),允许缩放上限['1', '1/2', '1/2'],取比例1/2,显示位置['-6', '8'],位于原方向与边框的交点。
目标(18,0),允许缩放上限['1', '1/3'],取比例1/3,显示位置['6', '0'],位于原方向与边框的交点。
目标(0,-24),允许缩放上限['1', '1/3'],取比例1/3,显示位置['0', '-8'],位于原方向与边框的交点。
目标(-4,-6),允许缩放上限['1', '3/2', '4/3'],取比例1,显示位置['-4', '-6'],原位保留。
目标(13,22),允许缩放上限['1', '6/13', '4/11'],取比例4/11,显示位置['52/11', '8'],位于原方向与边框的交点。
目标(-5,30),允许缩放上限['1', '6/5', '4/15'],取比例4/15,显示位置['-4/3', '8'],位于原方向与边框的交点。
目标(3,20),允许缩放上限['1', '2', '2/5'],取比例2/5,显示位置['6/5', '8'],位于原方向与边框的交点。
目标(19,24),允许缩放上限['1', '6/19', '1/3'],取比例6/19,显示位置['6', '144/19'],位于原方向与边框的交点。
目标(-8,24),允许缩放上限['1', '3/4', '1/3'],取比例1/3,显示位置['-8/3', '8'],位于原方向与边框的交点。
目标(-11,-7),允许缩放上限['1', '6/11', '8/7'],取比例6/11,显示位置['-6', '-42/11'],位于原方向与边框的交点。
目标(2,27),允许缩放上限['1', '3', '8/27'],取比例8/27,显示位置['16/27', '8'],位于原方向与边框的交点。
十三个标记都在横向[-6,6]和纵向[-8,8]内,外部目标的方向保持。
复核方法与适用范围
检查输出与目标共线且同向,并处于矩形范围;原目标在外时至少一个输出分量恰好触边。也可以分别求射线碰到横边和竖边的比例,取最早合法交点。
边缘位置只表达方向,不直接表达目标距离。两个远近不同但同方向的目标可能落在同一个像素位置;若界面还显示距离数字,那是另外的信息。这里不处理地图旋转、图标自身宽度和安全留白。
练习时可以只改动一个输入,再观察哪一步首次出现差异。对等于门槛、重复请求、空集合和最后一步分别留一份记录;如果发现异常,应先回到单位、顺序和边界约定,避免用额外补偿掩盖前面已经发生的错误。
