| источник: ДiстОсвiта, https://dystosvita.gnomio.com/mod/page/view.php?id=4063
Оксана Пасичник,Креативне програмування у Processing
Построения по кругу
Построения по кругу предусматривают использование уравнение окружности:
x = r cos f
y = r sin f
где:
- f изменяется по всей длине окружности (от 0 до 2Pi), которую надо разбить на определенную (n) количество частей (сторон);
- после прохождения стороны происходит поворот на определенное количество градусов.
Соотношение между радианными и градусными единицами измерения угла
360°= 2 Pi
180°= Pi
90°= Pi/2
|
 |
size (500,500);
int n = 36; // количество поворотов, или сторон
float f = 0; // начальный угол
float df = 2 * PI / n; // угол поворота такой, чтобы при n шагов пройти 2Pi
int r = 200; // радиус
strokeWeight (6);
for (int promin = 0; promin <n; promin ++) // для каждого из n лучей
{
int x = 250 + round (50 * cos (f)); // вычисляем координату х по уравнению окружности
int y = 250 + round (50 * sin (f)); // вычисляем координату y по уравнению окружности
point (x, y); // рисуем точку х, y
f = f+df; // меняем угол f на значение поворота
}
|
 |
Нарисуем снежинку из линий, соединяющих центр полотна с точками на окружности
size (500,500);
int n = 16; // количество поворотов, или сторон
float f = 0; // начальный угол
float df = 2 * PI / n; // угол поворота такой, чтобы при n шагов пройти 2*PI
int r = 50; // радиус, длина луча снежинки
for (int promin = 0; promin <n; promin ++) // для каждого из n лучей
{
int x = 250 + round (r * cos (f)); // вычисляем координату х по уравнению окружности
int y = 250 + round (r * sin (f)); // вычисляем координату y по уравнению окружности
line (250, 250, x, y); // рисуем линию с точки 250,250 до точки х, у
f += df; // меняем угол f на значение поворота
}
|

|
Построение окружности по уравнению окружности
Построения окружности по уравнению окружности сводится к тому, что линии нужно рисовать не от центра к отдельным точек окружности, а от предыдущей точки до текущей. При этом количество сторон (поворотов) должен быть достаточно большим, чтобы некоторые из многих коротких линий образовалась линия круга.
size (500,500);
int n=36; //количество поворотов
float f=0 ; //начальный угол
float df= 2*PI/n ; // угол поворота такой, чтобы при n шагов пройти 2*PI
int r=100; // радиус
strokeWeight(6);
int x1 = 250 + round (r * cos (f));// первая точка круга
int y1 = 250 + round (r * sin (f)); // первая точка круга
for (int promin = 0; promin <= n; promin ++) // для каждой линии
{
int x2 = 250 + round (r * cos (f)); // вычисляем координату х по уравнению окружности
int y2 = 250 + round (r * sin (f)); // вычисляем координату y по уравнению окружности
line (x1, y1, x2, y2); // рисуем линию с точки x1, y1 к точке х2, у2
f += df; // меняем угол f на значение поворота
x1 = x2; // вторая точка становится исходной для следующей линии
y1 = y2; // вторая точка становится исходной для следующей линии
}
|
 |
| |