python: трехугольное колесо

#python #turtle-graphics #shapes

#python #черепашья графика #фигуры

Вопрос:

Итак, я знаю, как создать трехугольник, но я пытаюсь выяснить, как я могу сделать его почти похожим на колесо (по сути, как сделать спицы). Если бы вы могли помочь, это было бы здорово!

 import turtle
turtle.hideturtle()

turtle.up()
turtle.goto(0,150)
turtle.down()

numberOfSides = 30
lengthOfSide = 50
exteriorAngle = 360/numberOfSides
for i in range(numberOfSides):
    turtle.forward(lengthOfSide)
    turtle.right(exteriorAngle)
  

Как я хочу, чтобы это выглядело:
трехугольник с радиусами

Комментарии:

1. Вы уже подумали о том, как ваша черепаха должна двигаться, чтобы нарисовать спицы? Подумайте о том, где оно находится в данный момент, а затем нарисуйте карандашом и бумагой, куда вы хотели бы его поместить. Основываясь на этом, вы сможете вычислить схему движения, необходимую для рисования всех 30 спиц (или 15 диаметров).

Ответ №1:

Попытка добраться с того места, где вы находитесь, туда, где вы хотите быть, с наименьшим количеством дополнительного кода:

 import turtle

numberOfSides = 30
lengthOfSide = 75
exteriorAngle = 360 / numberOfSides

turtle.hideturtle()
turtle.sety(-lengthOfSide)

for i in range(numberOfSides):
    turtle.circle(lengthOfSide, extent=exteriorAngle, steps=1)
    position = turtle.position()
    turtle.goto(0, 0)
    turtle.setposition(position)

turtle.done()
  

введите описание изображения здесь

Ответ №2:

Вот мое решение:

 from turtle import *
circle(100)
left(90)
speed(10000000)
fd(100)
for i in range(60):
    fd(100)
    back(100)
    left(12)
  

Это рисует 31 спицу, так что посчитайте 30, просто сделайте i 59.

картинка:

введите описание изображения здесь

Комментарии:

1. Вы используете бессмысленные аргументы для speed(10000000) метода черепахи в своих различных ответах на вопросы OP по SO. Я предлагаю вам уделить минутку чтению документации к turtle.speed() , поскольку было бы ошибкой отклонить весь ваш ответ как глупый из-за одной бессмысленной строки кода. Особенно тот, который является необязательным, не имеет отношения к вашему примеру и может быть опущен.

Ответ №3:

Попробуйте этот код:

 import turtle
import math
num=30
A=turtle.position()
side=50
x=(side/2)/math.sin(math.radians(180/num))

#x contains the length of one spoke of wheel
ext=90 (180/num)
turtle.setheading(0)
for i in range(num):
    turtle.forward(x)
    turtle.left(ext)
    turtle.forward(side)
    turtle.left(ext)
    turtle.forward(x)
    turtle.setheading((i 1)*(360/num))
 # the loop makes one triangle of polygon