Суббота, 27.04.2024, 03:00
Главная | Регистрация | Вход Приветствую Вас Гость | RSS


Меню сайта


Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Тестування онлайн
тестування онлайн 


Социальные закладк

Пример 1. Построение графика функции sin()

  Вариант 1.

float t; // объявляем переменную
void setup () {
  background (20);
  size (500,500);
    frameRate (40);
}
void draw () {
  stroke (255);
// задаем цвет точки
  strokeWeight (5); // задаем размер точки точки

/ * переносим начало системы координат в точку с координатами (width / 2, height / 2) есть функция translate () вместо точки (0,0)
 записывает координаты (0, height / 2) * /

 translate (0, height / 2);

/ * значение координат точки х и у определяются значением переменной t * /
  point (t, sin (t / 10) * 50);
  t = t + 2; // от кадра к следующему кадру увеличиваем значение переменной на 1
  if (keyPressed == true) // если любая клавиша нажата
{
saveFrame ( "images / urok - ####. png");
// выполнить запись кадра (фрейма) в папку images
}

 }

// переменной х возвращается значение переменной t

float x (float t)
{return t;}

// переменной у возвращается значение выражения sin (t / 10) * 50

float y (float t)
{return sin (t / 10) * 50; }

 Вариант 2.

void setup () {
size (500, 500);
smooth ();
background(0);
}
float counter = 0;
void draw () {
noStroke ();
fill (10, 50);

/* Координата по оси Y изменяется по закону синуса*/
 float ny = sin(counter)*100+200;
float nx = counter *10;
stroke (250);
strokeWeight (4);
point(nx,ny);

counter = counter + 0.1;
if(nx > width){
counter = 0;
}
}

void keyPressed () {
 if(key=='s') saveFrame("myProcessing.png");
}

источник: Игорь Криулин - Полуостров Бинария

Пример 2. Пошаговая разработка проекта

 

этап 1.  Рисуем шарик

size(640, 480);
smooth();
noStroke();
// выключаем абрис (обводку)
background(0, 0, 0);
fill(255, 155, 0);
ellipse(320, 240, 150, 150);

этап 2. Видоизменяем шарик

float r = 50, x, y;

  size(640, 480); smooth(); noStroke(); 
  x = width / 2; y = height / 2; 
  
  background(0, 0, 0);
  
  fill(255, 155, 0); ellipse(x, y, r * 2, r * 2);
  fill(235, 115, 0); ellipse(x, y, r * 1.5, r * 1.5);

 

этап3. Шарик, движение

/*глобальные переменные, радиус шарика – r, позиция в экране – x и y, dx и dy – так называемые приращения позиции*/

float r = 50, x, y, dx, dy;

void setup()
{
size(640, 480); smooth(); noStroke(); frameRate(25);
x = width / 2; y = height / 2; dx = -5; dy = 5;
}
void draw()
{
background(0, 0, 0);
x += dx; y += dy;

/*dx и dy – меняют свой знак на противоположный, каждый раз когда шарик выпадает за границу по одной из осей: -5 превращается в 5 и наоборот*/
if ((x > (width - r)) || (x < r)) dx = - dx;
if ((y > (height - r)) || (y < r)) dy = - dy;
fill(255, 155, 0); ellipse(x, y, r * 2, r * 2);
fill(235, 115, 0); ellipse(x, y, r * 1.5, r * 1.5);
}

ellipse(x,y,width,height) рисует эллипс в точке с координатами (х,у)  с указанными шириной и высотой

 

этап 4. Два шарика, функция пользователя
float r1 = 50, x1, y1, dx1, dy1;
float r2 = 25, x2, y2, dx2, dy2;


void setup()

  size(640, 480); smooth(); noStroke(); frameRate(25);
  x1 = random(r1, width - r1); y1 = random(r1, height - r1); dx1 = -5; dy1 = 5;
  x2 = random(r2, width - r2); y2 = random(r2, height - r2); dx2 = 5; dy2 = -5;
}

void draw()
{   
  background(0, 0, 0);
  x1 += dx1; y1 += dy1;
  if ((x1 > (width - r1)) || (x1 < r1)) dx1 = - dx1;
  if ((y1 > (height - r1)) || (y1 < r1)) dy1 = - dy1;  
 
drawCircle(x1, y1, r1, color(255, 155, 0));
  x2 += dx2; y2 += dy2;
  if ((x2 > (width - r2)) || (x2 < r2)) dx2 = - dx2;
  if ((y2 > (height - r2)) || (y2 < r2)) dy2 = - dy2;  
 
drawCircle(x2, y2, r2, color(175, 255, 0));
}


void drawCircle(float x, float y, float r, color c)
{
  fill(c); ellipse(x, y, r * 2, r * 2);
  fill(red(c) - 25, green(c) - 25, 0); ellipse(x, y, r * 1.5, r * 1.5);
}

Пример 3. Массивы (тема: массивы)

int count = 100;

/*в программе для каждого шарика нужно несколько параметров: x, y, r, dx, dy и c*/
float[] r, x, y, dx, dy;
color[] c;
void define(int i)
{
r[i] = random(20, 55);
x[i] = random(r[i], width - r[i]); y[i] = random(r[i], height - r[i]);
dx[i] = random(3, 5) * zrandom(); dy[i] = random(3, 5) * zrandom();
c[i] = color(irandom(55, 255), irandom(50, 150), 0);
}
void drawing(int i)
{
x[i] += dx[i]; y[i] += dy[i];
if ((x[i] > (width - r[i])) || (x[i] < r[i])) dx[i] = - dx[i];
if ((y[i] > (height - r[i])) || (y[i] < r[i])) dy[i] = - dy[i];
circle(x[i], y[i], r[i], c[i]);
circle(x[i], y[i], r[i] * 0.75, color(red(c[i]) - 15, green(c[i]) - 20, 0));
}

// обязательные функции
void setup()
{
size(640, 480); smooth(); noStroke(); frameRate(25);
x = new float[count]; y = new float[count]; r = new float[count];
dx = new float[count]; dy = new float[count]; c = new color[count];
for (int i = 0; i < count; i++) define(i);
}
void draw()
{
background(0, 0, 0);
for (int i = 0; i < count; i++) drawing(i);
}
// вспомогательные функции

int irandom (int m) { return (int)random(m + 1.0); }
int irandom (int mn, int mx) { return (int)random(mn, mx + 1.0); }
int zrandom () { return 1 - 2 * irandom(1); }
void circle(float x, float y, float r, color c) { fill(c); ellipse(x, y, r * 2, r * 2); }

 

Форма входа
Поиск
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Рейтинг@Mail.ru
    Copyright MyCorp © 2024
    Конструктор сайтов - uCoz