【问题标题】:How to interpolate between two points for higher resolution drawing如何在两点之间进行插值以获得更高分辨率的绘图
【发布时间】:2012-01-16 13:07:44
【问题描述】:

在 Flash 中,我使用lineTo 在两点之间画一条线。这运行良好,但我发现在速度较慢的计算机上,这条线是锯齿状的,因为触发的鼠标事件不多。

我想“平滑”线条,在鼠标注册的每个点之间添加更多点:

黑线表示结果,绿线是我想要的。红点是实际点,绿点是插值。

我自己尝试过编写代码,但我似乎无法正确编写代码,无论如何这里是代码:

var interX:Number = lastMouseX+(lastMouseSpeed.x/2);
var interY:Number = lastMouseY+(lastMouseSpeed.y/2);

//Also tried: lastMouseX+(this.mouseX-lastMouseX)/2;
// also jittery

graphics.lineTo(interX, interY);

graphics.lineTo(this.mouseX, this.mouseY);

lastMouseSpeed.x = this.mouseX-lastMouseX;
lastMouseSpeed.y = this.mouseY-lastMouseY;

lastMouseX = this.mouseX;
lastMouseY = this.mouseY;

结果比正常的更加参差不齐。

抱歉,我不能提供屏幕截图(由于某种原因,它会将我的屏幕复制为黑色)

【问题讨论】:

    标签: flash actionscript-3 math graphics drawing


    【解决方案1】:

    您可能想要spline interpolation 之类的东西,但也可以使用其他方法。

    您当前的方法不起作用的原因是您想要对红点 1 和 2 之间的点执行的操作取决于红点 3,但您的方程式并没有考虑到这一点。考虑到它可以适当地考虑曲率,但它更复杂。

    【讨论】:

      猜你喜欢
      • 2017-12-21
      • 2016-08-17
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      相关资源
      最近更新 更多