Ваш код для создания спирали - хорошая идея. Одним из способов создания повернутого текста может быть использование rotate() в сочетании с text(). У вас будет цикл for, перебор вашего массива символов, увеличение радиуса и рисование текста таким образом. Обратите внимание, что rotate()
имеет накопительный эффект. Что-то типа:
String str = "asdflkkjsahfdlkadshflkahdslkfajsdf";
float radius = 0;
//so we are rotating around the center, rather than (0,0):
translate(width/2, height/2);
for (int i = 0; i < str.length(); i++) {
radius += 2;
// taken out because of non-constant spacing at large radius:
//rotate(0.5);
// this should give constant spacing, no matter the radius
// change 10 to some other number for a different spacing.
rotate(10/radius);
// drawing at (0,radius) because we're drawing onto a rotated canvas
text(str.charAt(i), 0, radius);
}
Вы можете захотеть, чтобы изменение угла было функцией радиуса, потому что при больших радиусах буквы располагаются очень далеко друг от друга. Один из способов сделать это — использовать уравнение s = rθ
, где s — длина дуги (в данном случае расстояние между буквами), r — радиус, а θ — изменение угла. Если вам нужно постоянное расстояние между буквами, независимо от радиуса, то θ должно быть пропорционально 1/r. И, конечно же, вы можете настроить жестко закодированные значения по своему вкусу.
Кроме того: методы rotate()
и translate()
отменяются в конце draw()
, поэтому, если вы ничего не делаете после этого кода, можно оставить все как есть. Если вы хотите нарисовать что-то еще после этого, вам придется отменить вращение и перемещение вручную, прежде чем рисовать что-либо еще.
Редактировать: я только что понял, что предположил, что вы также хотели, чтобы буквы были повернуты, а не просто расположены по спирали, но по-прежнему ориентированы нормально. В этом случае вы можете использовать свой существующий код и заменить ellipse(...)
на text(str.charAt(...)...)
, конечно, с соответствующими параметрами.
person
kevinsa5
schedule
01.10.2013