источник: Д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); float f=0 ; //начальный угол float df= 2*PI/n ; // угол поворота такой, чтобы при n шагов пройти 2*PI int r=100; // радиус strokeWeight(6); 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; // вторая точка становится исходной для следующей линии } |