Alexandre B A Villares 2025-01-03 23:43:26 -03:00
rodzic 70a762cf69
commit 917242cc07
3 zmienionych plików z 52 dodań i 0 usunięć

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 43 KiB

Wyświetl plik

@ -0,0 +1,42 @@
import py5
from py5 import sin, cos, PI
def setup():
py5.size(800, 800)
py5.translate(400, 400)
py5.background(0)
py5.no_stroke()
wave(390)
def wave(r):
py5.fill(255 - r / 2)
with py5.begin_closed_shape():
py5.vertices(circle_arc_pts(0, 0, r, 0, py5.PI))
if r > 4:
with py5.push_matrix():
py5.translate(-r/2, 0)
py5.rotate(PI / 3)
wave(r/2)
py5.rotate(-PI / 3)
py5.translate(r, 0)
wave(r/2)
def circle_arc_pts(x, y, radius, start_ang, sweep_ang, **kwargs):
return arc_pts(x, y, radius * 2, radius * 2, start_ang, start_ang + sweep_ang, **kwargs)
def arc_pts(cx, cy, w, h, start_angle, end_angle, num_points=24, seg_len=None):
sweep_angle = end_angle - start_angle
if abs(sweep_angle) < 0.0001:
return [(cx + cos(start_angle) * w / 2.0, cy + sin(start_angle) * h / 2.0)]
if seg_len:
num_points = abs(sweep_angle * (w + h) / 4) / seg_len
pts_list = []
step_angle = float(sweep_angle) / num_points
va = start_angle
side = 1 if sweep_angle > 0 else -1
while va * side < end_angle * side or abs(va - end_angle) < 0.0001:
pts_list.append((cx + cos(va) * w / 2.0, cy + sin(va) * h / 2.0))
va += step_angle
return pts_list
py5.run_sketch()

Wyświetl plik

@ -21,6 +21,16 @@ If you appreciate what I have been doing, you may also support my artistic work,
2025 \| [<b>2024</b>](2024.md) \| [<b>2023</b>](2023.md) \| [<b>2022</b>](2022.md) \| [<b>2021</b>](2021.md) \| [<b>2020</b>](2020.md) \| [<b>2019</b>](2019.md) \| [<b>2018</b>](2018.md)
---
### sketch_2025_01_03
![sketch_2025_01_03](https://raw.githubusercontent.com/villares/sketch-a-day/main/2025/sketch_2025_01_03/sketch_2025_01_03.png)
[sketch_2025_01_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_03) [[py5](https://py5coding.org/)]
#genuary3 #genuary2025 "42 lines of code"
---
### sketch_2025_01_02