| Функции пользователя. Примеры
Пример 1.Функция пользователя drawLine()
void setup()
{
size(100,100);
drawLine(5);//вызов функции пользователя
}
//описание функции пользователя
void drawLine(int x)
{
line(x,0,x,99);
}
Пример 2. Функция для рисования сетки с квадратами 10 на 10 пикселей - drawGrid() .
1. Сначала нужно написать функцию setup() и установить размер окна 640 на 480 пикселей: |
void setup()
{
size( 640, 480 );
smooth();
}
|
2. Следующий фрагмент кода является функцией для рисования сетки с квадратами 10 на 10 пикселей. Эта функция будет вызываться в функции draw():
функция drawGrid() - это пользовательская функция, которую мы написали для того, чтобы нарисовать на экране светло-серую сетку. В ней два цикла for, один для горизонтальных линий, другой - для вертикальных.*/ |
void drawGrid()
{
stroke( 225 );
for ( int i = 0; i < 64; i++ ) {
line( i*10, 0, i*10, height );
}
for ( int i = 0; i < 48; i++ ) {
line( 0, i*10, width, i*10 );
}
}
|
3. И наконец мы можем написать функцию draw(). В ней мы установим цвет фона белым, нарисуем сетку и несколько прямоугольников, эллипсов, треугольников и четырехугольников.
|
void draw()
{
background( 255 );
drawGrid();
stroke( 0 );
// rectangles (yellow)
fill( 255, 255, 0 );
rect( 20, 20, 120, 120 );
rect( 180, 20, 120, 120, 20 );
rect( 340, 20, 120, 120, 20, 10, 40, 80 );
rect( 500, 40, 120, 80 );
// ellipses (red)
fill( 255, 0, 0 );
ellipse( 80, 240, 120, 120 );
ellipse( 240, 240, 120, 80 );
ellipse( 400, 240, 80, 120 );
// triangles (blue)
fill( 0, 0, 255 );
triangle( 560, 180, 620, 300, 500, 300 );
triangle( 40, 340, 140, 460, 20, 420 );
// quads (cyan)
fill( 0, 255, 255 );
quad( 180, 340, 300, 340, 300, 380, 180, 460 );
quad( 400, 340, 440, 400, 400, 460, 360, 400 );
quad( 500, 340, 620, 400, 500, 460, 560, 400 );
}
|
Пример 3.
void setup() // служебная функция setup() запускается первой
{
size(200,100);
noFill(); //не заполнять окружности
}
void draw() // вызывает очередной кадр
{
drawRandomCircle() ;//вызывает функцию пользователя
}
// функция пользователя
void drawRandomCircle()
{
int r= int(random(50));
//цвет кисти
stroke(random(255),random(255),random(255));
//окружности со случайными параметрами (положение, радиус, цвет, размеры)
ellipse(random(200),random(100),r,r);
}
|
|
Пример 4.
источник - https://processing.org/examples/recursion.html
void setup() {
size(640, 360);
noStroke();
noLoop();
}
void draw() {
drawCircle(width/2, 280, 6);
}
void drawCircle(int x, int radius, int level) {
float tt = 126 * level/4.0;
fill(tt);
ellipse(x, height/2, radius*2, radius*2);
if(level > 1) {
level = level - 1;
drawCircle(x - radius/2, radius/2, level);
drawCircle(x + radius/2, radius/2, level);
}
}
|
|
| |