js 根据矩形的位置和大小获取顶点位置(带旋转)

在做游戏开发时需要检测任意角度旋转的矩形之间的碰撞

定义:r:旋转弧度。x,y矩形位置,x1,y1顺时针第二个顶点,x2,y2顺时针第三个顶点。x3,y3顺时针第四个顶点。

任意的角度旋转都可以转换为r>=0&&r

function(r) {
    //处理旋转
    r.r = r.r - parseInt((r.r + Math.PI / 2) / Math.PI) * Math.PI;
    //由旋转的矩形转换为正常坐标矩形
    let atan = Math.atan(r.h / r.w);
    let lc = Math.sqrt(r.w * r.w + r.h * r.h);
    let piv2 = Math.PI / 2;
    return {
      x: r.x,
      y: r.y,
      x1: r.x + r.w * Math.cos(r.r),
      y1: r.y + r.w * Math.sin(r.r),
      x2: r.x + lc * Math.cos(r.r + atan),
      y2: r.y + lc * Math.sin(r.r + atan),
      x3: (function() {
        if (r.r >= 0) {
          return r.x - r.h * Math.cos(piv2 - r.r);
        } else {
          return r.x + r.h * Math.cos(piv2 + r.r);
        }
      })(),
      y3: (function() {
        if (r.r >= 0) {
          return r.y + r.h * Math.sin(piv2 - r.r);
        } else {
          return r.y + r.h * Math.sin(piv2 + r.r);
        }
      })(),
      w: r.w,
      h: r.h,
      r: r.r
    }
  }

 

你可能感兴趣的:(H5/js/css,游戏编程)