Processing 在圆内移动的文本的锯齿状运动(处理)

Processing 在圆内移动的文本的锯齿状运动(处理),processing,Processing,我有一个圆圈,里面有文字。圆圈在移动,文本也随之移动 圆圈移动平稳,但文字移动明显锯齿状/滞后,总体上不平稳 如何解决这个问题 ellipse(position.x, position.y, radius*2, radius*2); fill(255); textSize(radius/3); textAlign(CENTER); text(mytext, position.x, position.y); 这里的所有变量都属于圆,例如圆的位置、半径和圆内

我有一个圆圈,里面有文字。圆圈在移动,文本也随之移动

圆圈移动平稳,但文字移动明显锯齿状/滞后,总体上不平稳

如何解决这个问题

    ellipse(position.x, position.y, radius*2, radius*2);
    fill(255);
    textSize(radius/3);
    textAlign(CENTER);
    text(mytext, position.x, position.y);
这里的所有变量都属于圆,例如圆的位置、半径和圆内的文本

由于
position.x,position.y
每次调用都会发生轻微变化,因此圆圈会四处移动,但文本移动会滞后

我试着增加FPS,但没有解决问题

当圆直线向上/向下或向左/向右移动时,它可以正常工作,但每当它沿对角线移动时,文本移动就会滞后。所以我认为这可能在某种程度上是相关的

编辑:例如,在本例中,圆圈内的文本为laggy:

void setup()
{
  size(500, 500);


}

float x = 250, y = 250;


void draw()
{
  background(255);
  x += 0.1;
  y += 0.1;
  fill(120, 120, 120);
  ellipse(x, y, 50, 50);
  fill(0);
  text("hello", x, y);


}

似乎处理两个数字的舍入方式不一样。您可以手动将数字四舍五入,这样就不会发生这种情况

以下是您可以更改的代码片段,以避免手动出现锯齿状移动。重要的部分是
floor()
,我自己将数字四舍五入,以避免让处理代表我决定:

void draw()
{
  background(255);
  x += 0.1;
  y += 0.1;
  fill(120, 120, 120);
  ellipse(floor(x), floor(y), 50, 50);
  fill(0);
  text("hello", floor(x), floor(y));
}

玩得开心。

由于某些原因,默认渲染器似乎不喜欢使用浮动作为位置,因此可以切换到其他渲染

当然,这会给你的机器多加一点税。这种策略是有代价的

size(500, 500, P3D);
您会注意到,移动明显更平滑,并且看起来略有不同。这是因为处理将使用图形卡来处理绘制草图所涉及的一些数学问题。从理论上讲,您的草图应该运行得更平滑、更快,但有些人在执行此操作时会看到CPU使用率上升,或者有时草图加载所需的时间稍长。不过,患有P3D问题的人应该是少数


希望这有帮助。我觉得这个问题很奇怪。

我看不到代码中有什么明显的东西。你能给我一个(最低限度的)工作示例,我可以在我的机器上运行,看看你看到了什么吗?是的,我添加了代码。这并没有解决问题,因为现在圆的运动是锯齿状的,因为你每次都在舍入它的位置,这会妨碍平滑度。