kopia lustrzana https://github.com/villares/sketch-a-day
40 wiersze
1.0 KiB
Python
40 wiersze
1.0 KiB
Python
def setup():
|
|
size(500, 500)
|
|
|
|
def draw():
|
|
background(200)
|
|
strokeWeight(1)
|
|
stroke(0)
|
|
r1 = 75.
|
|
r2 = 25.
|
|
p1 = PVector(200, 250)
|
|
p2 = PVector(mouseX, mouseY)
|
|
ellipse(p2.x, p2.y, r2 * 2, r2 * 2)
|
|
ellipse(p1.x, p1.y, r1 * 2, r1 * 2)
|
|
strokeWeight(3)
|
|
noFill()
|
|
new_bar(p1, p2, r1, r2)
|
|
|
|
def new_bar(p1, p2, r1, r2):
|
|
d = dist(p1.x, p1.y, p2.x, p2.y)
|
|
if d > 0:
|
|
with pushMatrix():
|
|
translate(p1.x, p1.y)
|
|
angle = atan2(p1.x - p2.x, p2.y - p1.y)
|
|
rotate(angle + HALF_PI)
|
|
ri = r1 - r2
|
|
beta = asin(ri / d) + HALF_PI
|
|
x1 = cos(beta) * r1
|
|
y1 = sin(beta) * r1
|
|
x2 = cos(beta) * r2
|
|
y2 = sin(beta) * r2
|
|
line(-x1, -y1, d - x2, -y2)
|
|
line(-x1, +y1, d - x2, +y2)
|
|
arc(0, 0, r1 * 2, r1 * 2,
|
|
-beta - PI, beta - PI)
|
|
arc(d, 0, r2 * 2, r2 * 2,
|
|
beta - PI, PI - beta)
|
|
|
|
def keyPressed():
|
|
saveFrame("sketch-190201a.png")
|