sketch-a-day/2019/sketch_190201a/sketch_190201a.pyde

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")