/** * point: [x, y] * radar: [radarX, radarY] * angle: 0, 90, 180, 270 顺时针旋转角度 * 返回旋转后的点 [x2, y2] */ function rotatePoint(point, radar, angle) { const [x, y] = point; const [cx, cy] = radar; const dx = x - cx; const dy = y - cy; let nx, ny; switch (angle) { case 0: nx = dx; ny = dy; break; case 90: nx = dy; ny = -dx; break; case 180: nx = -dx; ny = -dy; break; case 270: nx = -dy; ny = dx; break; default: throw new Error("angle must be 0, 90, 180, 270"); } return [cx + nx, cy + ny]; } // 测试 const point = [3, 2]; const radar = [2, 1]; [0, 90, 180, 270].forEach(angle => { const newPoint = rotatePoint(point, radar, angle); console.log(`angle=${angle}:`, newPoint); }); // 预期输出 // angle=0: [3, 2] // angle=90: [2, 0] // angle=180: [1, 0] // angle=270: [2, 2]