From ab15c33de70f67ac43909137de3494734657e74f Mon Sep 17 00:00:00 2001 From: tgaeta Date: Wed, 3 Sep 2025 09:55:19 -0400 Subject: [PATCH] I made a cardioid by making use of the goto func. I had a lot of fun with this lab. Because I have experience with math and writing code, I was able to make a fun drawing without much stress. --- drawing.py | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/drawing.py b/drawing.py index f3ee2e9..e176d02 100644 --- a/drawing.py +++ b/drawing.py @@ -1,22 +1,28 @@ from turtle import ( - forward, - back, - left, right, - penup, - pendown, color, + goto, + pensize ) +from math import sin, cos, tau, pi -forward(100) -right(360 * 2 / 5) -forward(100) -right(360 * 2 / 5) -forward(100) -right(360 * 2 / 5) -forward(100) -right(360 * 2 / 5) -forward(100) -right(360 * 2 / 5) +def cardioid(theta, size=100): + return size * (1 - sin(theta)) +def polar_to_cartesian(coord: tuple[float, float]): + r, theta = coord + return (r * cos(theta), r * sin(theta)) + +def get_segmented_cardioid(segments = 16): + angles = [pi / 2 + i * (tau/ segments) for i in range(segments + 1)] + radii = map(cardioid, angles) + return list(map(polar_to_cartesian, zip(radii, angles))) + +segments = 50 +coords = get_segmented_cardioid(segments) +color(1, 0, 0) +pensize(5) +for i in range(segments + 1): + goto(coords[i]) +right(90) input()