Единица измерения Python Turtle

Когда мы создаем объект черепахи, мы можем нарисовать круг. Интересно о параметре радиуса circle() метод.

import turtle
myTurtle = turtle.Turtle()
myTurtle.circle(50)

Какова единица измерения этого параметра?

Радиус равен 50 пикселям или 50 дюймам?

4 ответа

Документация для turtle.setup указывает, что параметры размера, если они выражены в виде целых чисел, представляют собой пиксели, а если выражены как числа с плавающей запятой, - это доли экрана.

Как видно из первых нескольких строк документации, метод forward использует единичный пиксель, и, поскольку в документации нет других единиц измерения, вы можете заключить, что все методы используют pixel.

Изменить: После просмотра исходного кода формы черепаха, я на 100% уверен, что он использует пиксель в качестве единицы, так как он добавляет расстояние до позиции напрямую.

Это зависит от того, измеряем ли мы изображение на экране или напечатанное изображение PostScript, полученное через базовый холст tkinter.

Мой дисплей Dell имеет шаг пикселя 0,282 мм, поэтому я ожидаю увидеть 90 точек на дюйм. Если черепаха рисует круг с радиусом 45 пикселей, то на экране я измеряю круг диаметром 1 дюйм.

Однако, если я распечатаю это изображение и отключу любое масштабирование печати, я получу не 1-дюймовый печатный круг, а что-то большее. Чтобы получить правильно напечатанный круг, черепаха должна рисовать с радиусом 36, как основной мера для преобразования PostScript, кажется, основана на точках (@ 72 на дюйм):

from turtle import Turtle, Screen

screen = Screen()
screen.setup(400, 600)

tortoise = Turtle()

tortoise.circle(36)

canvas = screen.getcanvas()

canvas.postscript(file="circle.ps")

screen.exitonclick()

Хотя этот кружок имеет размер около 3/4"на моем экране, вывод PostScript на принтере равен 1". (Обязательно отключите все функции автоматического масштабирования и напечатайте @ 100%)

Фактический размер изображения на вашем мониторе зависит от шага пикселя. Хотя tkinter может работать в точках фиксированного размера как для отображения, так и для печати, черепаха Python работает только в пикселях переменного размера для отображения. Определив шаг пикселя монитора, вы можете использовать собственный коэффициент масштабирования или:

turtle.setworldcoordinates(llx, lly, urx, ury)

настроить собственное масштабирование:

from turtle import Turtle, Screen

PIXEL_PITCH = 0.282  # mm
MM_PER_INCH = 25.4
DOTS_PER_INCH = int(1 / (PIXEL_PITCH / MM_PER_INCH))

screen = Screen()
screen.setup(4 * DOTS_PER_INCH, 5 * DOTS_PER_INCH)
screen.setworldcoordinates(-2, -2.5, 2, 2.5)  # convert to inches

tortoise = Turtle()

tortoise.circle(0.5)  # 1/2" radius, one inch diameter on my screen

screen.exitonclick()

Который должен быть достаточно точным на экране, но не печатать правильно без дополнительной работы для переключения единиц во время преобразования PostScript или использования правильного коэффициента масштабирования в вашем диалоговом окне печати.

Использование circle() функция:

circle(radius, extent=None, steps=None)

Подробнее здесь: https://docs.python.org/2/library/turtle.html

Так что да, это радиус в пикселях, первый параметр функции.

Другие вопросы по тегам