javascript - 用数学旋转矩形

标签 javascript animation canvas rotation

我想像这样旋转矩形:

enter image description here

我不想使用 save()translate()rotate()restore()。我想用简单的数学来做到这一点。这是我已经做过的示例:

demo

如何实现这一目标?

最佳答案

因此,您基本上需要计算每个 Angular 并使用 .lineTo() 而不是 .fillRect() 绘制矩形。

要将点绕原点旋转一定 Angular ,您需要:

var rotate = function( point, origin, angle) {
    angle = angle * Math.PI / 180.0;
    return {
        x: Math.cos(angle) * (point.x-origin.x) - Math.sin(angle) * (point.y -origin.y) + origin.x,
        y: Math.sin(angle) * (point.x-origin.x) + Math.cos(angle) * (point.y-origin.y) + origin.y
    };
}

然后定义矩形 Angular :

 var corners = [
        { x: 100, y: 0 },
        { x: 150, y: 0 },
        { x: 150, y: 50 },
        { x: 100, y: 50 }
    ];

并像这样渲染它:

    // for example: 
    // origin = { x: 125, y: 175 }, angle = 30;
    ctx.beginPath();
    corners.forEach( function( point ){
        var rotated = rotate( point, origin, angle );
        ctx.lineTo( rotated.x, rotated.y );
    });
    ctx.closePath();
    ctx.fill();

http://jsfiddle.net/grcbab4h/3/

关于javascript - 用数学旋转矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32564171/

相关文章:

javascript - Web 应用程序是否可以访问 native Android 应用程序的 sqlite 数据库?

javascript - 在 Javascript 中向对象实例添加方法并在其中使用 'this' 关键字

javascript - 如何将 OffscreenCanvas 转换为 DataURI

jquery - 使用 jQuery 动画人物跳跃

javascript - 使旋转中心点位于中心

javascript - 以编程方式使 div 元素在另一个 div 元素内垂直滚动

html - 如何将图像放在 Canvas 上其他绘图的后面?

javascript - 如何在 Express Js/node js(设置方法)中启动时调用函数

javascript - 在使用 Jquery 打开弹出窗口之前检查它是否已经打开

javascript - Owl Carousel 选项未被读取