【问题标题】:p5.js how to translate along axes after rotatep5.j​​s如何在旋转后沿轴平移
【发布时间】:2015-10-02 20:59:10
【问题描述】:

在我旋转坐标系后,它会沿着新的轴平移。是否有可能在旋转之前沿轴平移它?

想法是用户上传一张图片,然后他可以旋转它、缩放它并在视口中间移动它。不知何故,我一次未能实现所有这些功能。

有什么建议吗?

编辑

即有一个画布。我在那里画了一个图像。然后我将它旋转 90°,我想在 X 轴上平移它。它在屏幕上向下移动。因为轴是转过来的。

编辑

这是我用于转换的代码 sn-p。图像总是在它的 (0,0) 点旋转。这就是为什么我以它在中间点旋转的方式翻译它。然后我在一个偏移点上绘制图像。

    p.push();
        p.translate(canvasWidth/2, canvasHeight/2);
        p.rotate(angle * p.TWO_PI/360);

        var x = -loadedImage.width/2  - offsetX;
        var y = -loadedImage.height/2 - offsetY;

        p.image(loadedImage, x, y);
    p.pop();

编辑

我决定先平移,然后旋转。它使翻译正确,但围绕错误的枢轴点旋转。我无法拥有我猜想的一切。

【问题讨论】:

  • 是绕物体原点还是屏幕原点旋转?
  • 屏幕的来源。 IE。有一个画布。我在那里画了一个图像。然后我将它旋转 90°,我想在 X 轴上平移它。它在屏幕上向下移动。因为轴是转过来的。

标签: javascript canvas rotation translate-animation p5.js


【解决方案1】:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.save();
ctx.fillStyle="red";
ctx.translate(100,0);
ctx.rotate(20 * Math.PI / 180);
ctx.fillRect(0, 0, 100, 50);
ctx.restore();
ctx.fillRect(100,0,50,50);

试试这个代码:在你的代码中使用 drawImage 而不是 fillRect

【讨论】:

  • 它给出了两个图像。我想操作用户上传的一张图片。就像一个小型裁剪/编辑工具。这比我想象的要难。我决定先翻译,然后旋转。它使翻译正确,但围绕错误的枢轴点旋转。我猜不到所有的东西。
  • var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.save(); ctx.fillStyle="红色"; ctx.translate(100,0); ctx.rotate(20 * Math.PI / 180); ctx.fillRect(0, 0, 100, 50); ctx.restore();只需删除最后一个fillRect。我必须知道你想旋转哪个位置
  • 感谢您的宝贵时间。我想以任何方向和任何顺序旋转和平移。用户上传图片。拖动图像,双向旋转,然后将其发送到服务器。
  • 对于您的要求不需要编写代码。这些都可以通过插件轻松实现,我推荐fabric.js 将满足您的所有需求这是一个链接fabricjs.com
  • 谢谢,我去看看。这并没有改变我想知道人们如何解决这个问题的事实。
猜你喜欢
  • 2013-02-06
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 2014-11-24
  • 1970-01-01
相关资源
最近更新 更多