Неровное движение текста, движущегося внутри круга (ОБРАБОТКА) - PullRequest
0 голосов
/ 11 января 2020

У меня есть круг с текстом внутри. Круг движется, и текст движется вместе с ним.

Круг движется плавно, но движение текста явно зазубренное / медленное и в целом не плавное.

Как это можно исправить?

    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, но это не решило проблему.

Работает нормально, когда круг движется прямо вверх / вниз или влево / вправо, но всякий раз, когда он перемещается по диагонали, движение текста становится запаздывающим Поэтому я думаю, что это может иметь отношение в некотором роде.

РЕДАКТИРОВАТЬ: Например, в этом текст внутри круга является медленным:

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);


}

Ответы [ 2 ]

0 голосов
/ 12 января 2020

Поскольку вам нужно использовать поплавки в качестве позиции, что по какой-то причине средство рендеринга по умолчанию, по-видимому, не нравится конкретно в отношении текста, вы можете переключиться на другой рендеринг.

Конечно, это макс. немного более. Этот вид маневра стоит денег.

size(500, 500, P3D);

Вы заметите, что движение значительно плавнее и выглядит немного иначе. Это происходит потому, что при обработке будет использоваться ваша графическая карта c для обработки некоторых математических операций, связанных с рисованием вашего эскиза. Теоретически, ваш эскиз должен работать более плавно и быстрее, но некоторые люди видят, что при этом увеличивается загрузка их ЦП, или иногда эскиз загружается немного больше времени. Люди с проблемами с P3D должны быть меньшинством.

Надеюсь, это поможет. Я думаю, что этот вопрос причудливый.

0 голосов
/ 11 января 2020

Похоже, обработка не округляет оба числа одинаково. Вы можете вручную округлить свои числа, чтобы этого не произошло.

Вот фрагмент кода, который вы можете изменить, чтобы избежать неровных движений вручную. Важной частью является 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));
}

Получайте удовольствие.

...