微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

矩形的折点不以原点为中心

如何解决矩形的折点不以原点为中心

| 我想这只是使这个问题复杂化了,但是我有一个矩形,正尝试使用旋转值绘制。我具有所有四个顶点的坐标,并且在顺时针旋转X度时需要新的坐标。 编辑:需要注意的一件事,我在HTML5画布上绘图,因此坐标系有些不同。 X和Y始终> 0,并且Y的增加向下进行。 有任何想法吗? 谢谢     

解决方法

因此,您真正需要的是一个带有点,原点(在这种情况下为矩形的中心)和角度的函数:
function rotatePoint(p,origin,angle) {
  if (angle === 0) return p;
  // make the origin essentially zero:
  var px = p.x - origin.x;
  var py = p.y - origin.y;
  if (px == 0 && py == 0) return p;
  var rad = angle * Math.PI / 180;
  var cosine = Math.cos(rad);
  var sine = Math.sin(rad);
  p.x = cosine * px - sine * py;
  p.y = sine * px + cosine * py;
  // put the point back:
  p.x += origin.x;
  p.y += origin.y;
  return p;
};
因此,如果您想使顶点围绕中心(例如)20,20以10,10旋转45度,则可以这样做:
rotatePoint({x:10,y:10},{x:20,y:20},45)
会给您
(20,5.85)
,依此类推。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。