Python Forum
Turtle drawing Right Triangle
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Turtle drawing Right Triangle
#1
from turtle import Turtle
import random
from math import sqrt, degrees, asin, acos, atan 

class Shape():
    
    turtle = Turtle()
    
class Circle(Shape):
    
    def __init__(self, center, radius):
        self.center = center
        self.radius = radius
    
    def get_area(self):
        return 3.14*self.radius*self.radius
    
    def draw(self):
        Shape.turtle.penup()
        Shape.turtle.setposition(self.center[0], self.center[1] - self.radius)
        Shape.turtle.pendown()
        Shape.turtle.circle(self.radius)
        Shape.turtle.penup()
        
class Rectangle:
    
    def __init__(self, upper_left, lower_right):
        self.upper_left = upper_left
        self.lower_right = lower_right        
    
    def draw(self):
        min_x = min(self.upper_left[0], self.lower_right[0])
        min_y = min(self.upper_left[1], self.lower_right[1])
        width = max(self.upper_left[0], self.lower_right[0]) -min_x
        height = max(self.upper_left[1], self.lower_right[1]) -min_y
        
        Shape.turtle.penup()
        Shape.turtle.setposition(self.upper_left)
        Shape.turtle.pendown()
        Shape.turtle.forward(width)
        Shape.turtle.right(90)
        Shape.turtle.forward(height)
        Shape.turtle.right(90)
        Shape.turtle.forward(width)
        Shape.turtle.right(90)
        Shape.turtle.forward(height)
        Shape.turtle.penup()
    
    def get_area(self):
        min_x = min(self.upper_left[0], self.lower_right[0])
        min_y = min(self.upper_left[1], self.lower_right[1])
        width = max(self.upper_left[0], self.lower_right[0]) -min_x
        height = max(self.upper_left[1], self.lower_right[1]) -min_y
        
        return width * height
    
class RightTriangle:
    
    def __init__(self, A, B):
        self.A = A
        self.B = B
    
    def draw(self):
        a = (self.B[0] - (self.A[0]))
        b = (self.B[1] - (self.A[1]))
        c = (sqrt((self.B[0] - self.A[0])**2 + (self.B[1] - self.A[1])**2))
        angleA = degrees(atan(a/b))
        angleB = degrees(atan(b/a))
        
        Shape.turtle.penup()
        Shape.turtle.setposition(self.A)
        Shape.turtle.pendown()
        Shape.turtle.forward(a)
        Shape.turtle.right(90)
        Shape.turtle.forward(b)
        Shape.turtle.right(180-angleA)
        Shape.turtle.forward(c)
        Shape.turtle.penup()
    
    
    def get_area(self):
        base = (self.B[0] - self.A[0])
        height = (self.B[1] - self.A[1])
        
        
        return (base * height)/2
        
    
    

def random_shapes(count):
    
    def random_point():
        return (random.randint(-200,200), random.randint(-200,200))
    
    shapes = []
    
    for i in range(1, count+1):
        shape_type = random.randint(1, 3)
        if shape_type == 1:
            shapes += [Circle(random_point(), random.randint(1,200))]
        elif shape_type == 2:
            shapes += [Rectangle(random_point(), random_point())]
        elif shape_type == 3:
            shapes += [RightTriangle(random_point(), random_point())]
            
    return shapes

def main():
    
    shapes = random_shapes(15)
    total_area = 0
    for s in shapes:
        s.draw()
        total_area += s.get_area()
    
    input ('Hit <enter> key to end.')
    print ('Total area = ', total_area)
    input ('Have a nice day!')

main()
So I have gotten a little closer but some are not right triangles and others never complete. Any suggestions? https://imgur.com/a/ziRDf
Reply
#2
I solved it!
Reply
#3
(Feb-19-2018, 12:09 AM)Zatoichi Wrote: I solved it!

Hi! I have this same assignment, how did you fix this error? I've been working on it for days and I can't seem to figure it out.
Reply
#4
I had to add some if and elif statements for different scenarios of coordinates.
For example if if say point A was (-x, -y) and point B was (-x, y) and I just found all the different combinations and wrote my code accordingly.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How to write a recursion syntax for Sierpinski triangle using numpy? Bolzano 2 3,845 Apr-03-2021, 06:11 AM
Last Post: SheeppOSU
  Create a turtle drawing from .txt file Noob101 20 8,889 Jan-29-2021, 04:13 PM
Last Post: nilamo
  Print user input into triangle djtjhokie 1 2,361 Nov-07-2020, 07:01 PM
Last Post: buran
  Tkinter - The Reuleaux Triangle andrewapk 1 1,927 Oct-06-2020, 09:01 PM
Last Post: deanhystad
  Python - networkx - Triangle inequality - Graph Nick_A 0 2,080 Sep-11-2020, 04:29 PM
Last Post: Nick_A
  Drawing wheels in a turtle woehh 1 1,876 Apr-23-2020, 02:58 PM
Last Post: deanhystad
  Triangle function program m8jorp8yne 2 8,848 Dec-13-2019, 05:24 PM
Last Post: Clunk_Head
  Print triangle using while loop tuxandrew 3 4,903 Dec-05-2019, 07:17 PM
Last Post: micseydel
  Turtle Polygon drawing program tp_oz 3 3,155 Jul-23-2019, 01:01 PM
Last Post: ichabod801
  Intersection of a triangle and a circle Gira 3 3,584 May-19-2019, 06:04 PM
Last Post: heiner55

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020