Rhombus Madness

Use Python and Turtle and Random library to draw the 50 random Rhombus shapes as shown in the following figure.

50 Random Rhombus

Hints:

  • Make a function that draws a rhombus given the center, width, height, and the direction.
  • Use random library’s uniform function to generate positions, size, direction, and color

Related Projects:

Projects with similar difficulty

Geometry

Diamond Suit Shape with Python and Turtle (Source Code)

Diamond Shape

Write a program that draw a diamonds suit shape with Python and Turtle. Please note that four sides are curves not straight lines.

A more challenging task is to make a function that draws a diamond shape at any center location , width, height, and arc angle. For example the diamond shape above has width/height ratio of 3/4 and four sides are arcs with 20 degree angle. You may need to apply basic trigonometry knowledge to solve this problem.

Source Code:

import turtle
import math

screen = turtle.Screen()
screen.title('Diamond Shape - PythonTurtle.Academy')
screen.setup(1000,1000)
screen.setworldcoordinates(-1000,-1000,1000,1000)
turtle.speed(0)
turtle.hideturtle()

def diamond(x,y, width, height, angle):
    turtle.up()
    turtle.color('red')
    turtle.goto(x,y-height/2)
    d = ((width/2)**2 + (height/2)**2)**0.5
    radius = d*0.5/math.sin(math.radians(angle/2))
    turtle.down()
    turtle.begin_fill()
    turtle.seth(turtle.towards(x-width/2,y)-angle/2)
    turtle.circle(radius, angle,20)
    turtle.seth(turtle.towards(x,y+height/2)-angle/2)
    turtle.circle(radius, angle,20)
    turtle.seth(turtle.towards(x+width/2,y)-angle/2)
    turtle.circle(radius, angle,20)
    turtle.seth(turtle.towards(x,y-height/2)-angle/2)
    turtle.circle(radius, angle,20)
    turtle.end_fill()    

diamond(0,0,1200,1600,20)

Tutorial: How to Draw a Simple Heart Shape with Python and Turtle

Simple Heart Shape with 4 Segments

The figure above shows, we can draw a simple heart shape with 4 segments: 2 lines and 2 arcs. We can continuously draw these 4 segments without lifting up the pen.

We start from the bottom tip of the heart. The heading for the blue line is 45 degrees. The second segment is 225 degree arc. After initial 45 degree heading and 225 degree turn, the heading of the turtle will be a 45+225=270 degrees, which is facing down perfectly. The rest of the two segments are symmetric to the first two. All we need to do is just turn the Turtle by 180 degrees before drawing the 3rd segment.

The next step is to figure out the ratio of blue segment and the radius of the arc. In the figure above, a triangle formed by two black lines and the blue line is a right triangle. The angle between two black lines is (360-225)/2 = 67.5 degrees, where 225 is the degree of the arc. Therefore, the ratio of blue line segment and the radius equals to tangent(67.5).

Here is the code:

import turtle
import math

turtle.color('red')
d = 800
r = d/math.tan(math.radians(67.5))
turtle.up()
turtle.goto(0,-600)
turtle.seth(45)
turtle.down()
turtle.fd(d)
turtle.circle(r,225)
turtle.left(180)
turtle.circle(r,225)
turtle.fd(d)

You can easily draw a filled heart by calling begin_fill() and end_fill() functions:

turtle.color('red')
d = 800
r = d/math.tan(math.radians(67.5))
turtle.up()
turtle.goto(0,-600)
turtle.seth(45)
turtle.begin_fill()
turtle.down()
turtle.fd(d)
turtle.circle(r,225)
turtle.left(180)
turtle.circle(r,225)
turtle.fd(d)
turtle.end_fill()

Related Projects:

N Overlapping Circle with Python and Turtle (Source Code)

Generalize the three overlapping circles project by letting it draw any number of overlapping circles. The following is the overlapping circles from size 2 to size 7.

Solution

import turtle
import math

screen = turtle.Screen()
screen.title('N Overlapping Circles - PythonTurtle.Academy')
screen.setup(1000,1000)
turtle.hideturtle()
turtle.speed(0)
turtle.pensize(2)

def draw_circle(x,y,radius):
  turtle.up()
  turtle.goto(x,y-radius)
  turtle.seth(0)
  turtle.down()
  turtle.circle(radius,steps=360)

r = 150
n = 3
r2 = r/2/math.sin(math.radians(180/n))
angle = 90
for _ in range(n):
  draw_circle(r2*math.cos(math.radians(angle)),
              r2*math.sin(math.radians(angle)),
              r)
  angle += 360/n

Sixteen-Petal Flower with Python Turtle

Knowing how to draw a football shape, draw a sixteen petal flower with loop and custom function.

16-Petal Flower with Python Turtle

Code:

import turtle
turtle.title('Sixteen Petals - PythonTurtle.Academy')
turtle.setworldcoordinates(-2000,-2000,2000,2000)

def draw_football(x,y,tilt,radius):
    turtle.up()
    turtle.goto(x,y)
    turtle.down()
    turtle.seth(tilt-45)
    turtle.circle(radius,90)
    turtle.left(90)
    turtle.circle(radius,90)

for tilt in range(0,360,30): 
    draw_football(0,0,tilt,1000)

Hermann Grid Illusion with Python Turtle with Source Code

What do you see? Draw this simple shape. Check out this Wikipedia article to know more about this illusion.

Hermann Grid Illusion
import turtle

screen = turtle.Screen()
screen.setup(500,500)
screen.title('Hermann Grid Illusion - PythonTurtle.Academy')
screen.tracer(0)
turtle.hideturtle()
turtle.speed(0)
turtle.bgcolor('black')

turtle.pensize(4)

turtle.color('light gray')
for x in range(-502,500,25):
    turtle.up()
    turtle.goto(x,-500)
    turtle.down()
    turtle.seth(90)
    turtle.fd(1000)
    
for y in range(-502,500,25):
    turtle.up()
    turtle.goto(-500,y)
    turtle.down()
    turtle.seth(0)
    turtle.fd(1000)

turtle.up()
for x in range(-502,500,25):
    for y in range(-502,500,25):        
        turtle.goto(x,y)
        turtle.dot('white')
screen.update()