Мне нужно создать треугольник с параметрами, но он работает неправильно

У меня есть программа, которая должна создать треугольник по координатам x, y с заданной высотой и заданной шириной. Это код, который у меня есть, но треугольник, который он создает, иногда искажается, если ширина действительно мала. Как мне сделать идеальный треугольник с любыми числами, которые я хочу в качестве ширины и высоты?

импортная черепаха

def triangleBuild(width,height):
    turtle.forward(width)
    turtle.left(120)
    turtle.forward(height)
    turtle.left(120)
    turtle.forward(height)

def xYPostion(x,y,ширина,высота):

turtle.penup()
turtle.goto(x,y)
turtle.pendown()

triangleBuild(width,height)

person Chris Quibell    schedule 24.10.2013    source источник


Ответы (1)


Высота в вашем случае - это расстояние от верхней вершины до основания. И то, что вы делаете, это то, что вы рисуете треугольник с двумя сторонами одинаковой длины (высоты). Возможно, вы захотите использовать некоторую математику для вычисления правильной длины сторон (которая может не равняться высоте)

Редактировать

Если вы хотите нарисовать треугольник только по ширине и высоте, вы можете получить угол треугольника, а затем с некоторой математикой:

Математическая ситуация

import turtle
import math

def triangleBuild(width,height):
    l = ( height**2 + (width/2.0)**2)**0.5
    alfa = math.atan2(height, width/2.0) # To compute alfa
    alfa = math.degrees(alfa)
    alfa = 180.0 - alfa 
    turtle.forward(width)
    turtle.left(alfa)
    turtle.forward(l)
    turtle.left(2*(180-alfa))
    turtle.forward(l)

turtle.penup()
turtle.goto(10,20)
turtle.pendown()

width = 200
height = 100
triangleBuild(width,height)
person Christian    schedule 24.10.2013
comment
Должно быть, я делаю что-то не так, но это не дает того, что я ищу. Ни эта черепаха.вперед(ширина) черепаха.влево(120) черепаха.вперед(длина) черепаха.влево(120) черепаха.вперед(длина) ИЛИ черепаха.вперед(длина) черепаха.влево(120) черепаха.вперед(высота ) черепаха.влево(120) черепаха.вперед(высота) Работает - person Chris Quibell; 24.10.2013