Пользовательская форма черепахи Python по координатамPython

Программы на Python
Anonymous
Пользовательская форма черепахи Python по координатам

Сообщение Anonymous »

Похоже, что когда вы указываете форму черепахи, используя набор координат, вам нужно сначала помещать координату y в каждый кортеж, а затем координату x, но я не могу найти это нигде в документации. Это правда?
Вот форма, созданная по индивидуальному заказу:
[img]https://i.stack .imgur.com/xmmuD.png[/img]

Если я зарегистрирую эту фигуру, используя координаты, как показано здесь

Код: Выделить всё

s.register_shape('house', ((-10,-10),(10,-10),(10,2),(0,12),(-4,8),
(-4,12),(-6,12),(-6,6),(-10,2)))
вот результат:
Изображение

Изображение не только повернуто на 90 градусов по часовой стрелке, но и стало зеркальным отражением (дымоход находится на другой стороне дома). Однако, если я поменяю координаты x и y в каждом кортеже, я получу этот результат
Изображение

Я озадачен, почему код формы регистра имеет эту странную аномалию. Наверняка это должно быть где-то упомянуто в документации.
В ответ ggorlen:
Вот код

Код: Выделить всё

from turtle import *

s = Screen()
s.setup(400,400)
s.bgcolor('lightgray')
s.register_shape('house', ((-10,-10),(10,-10),(10,2),(0,12),(-4,8),
(-4,12),(-6,12),(-6,6),(-10,2)))
s.register_shape('house_xy_switch', ((-10,-10),(-10,10),(2,10),(12,0,),
(8,-4),(12,-4),(12,-6),(6,-6),(2,-10)))

chez_moi = Turtle()
#chez_moi.shape('house')
chez_moi.shape('house_xy_switch')
В черепашьей графике Python координаты y увеличиваются при движении вверх, а 0,0 находится в центре экрана. Я предполагал, что это также будет схема для указания координат произвольной формы черепахи.
Я писал код с помощью онлайн-платформы, использующей Python 3.2.0. Я только что попробовал это в IDLE с Python 3.10.7 с формой «дома», и он повернут на 90 градусов по часовой стрелке, но больше не является зеркальным отражением. Таким образом, между версиями 3.2 и 3.10 в код черепахи должны были быть внесены некоторые изменения.
Отредактировано с дополнительной информацией в ответ на ответ cdlaneЯ привел еще один пример, показывающий, почему не всегда полезно поворачивать фигуру на 90 градусов.
[img]https:/ /i.stack.imgur.com/g6HgU.png[/img]

Эта нестандартная фигура представляет собой космический корабль. Если я хочу, чтобы корабль двигался вправо, я бы установил курс на 0, чтобы он двигался вперед и хотел, чтобы он сначала двигался носом вправо.
Когда я указываю координаты формы в Python 3.10.7, используя соглашение, согласно которому первой является координата x:

Код: Выделить всё

s.register_shape('ship', ((36, 0), (0, -12), (-32, -12), (-32, 12),
(0, 12), (12, 8), (20, 7.6), (24, 4)))
он ​​выдает следующий результат (с курсом черепахи по умолчанию 0 градусов):
Изображение

Если я передвину эту черепаху вперед, она переместится вправо, но сначала верхним краем (вместо нос вперед), а это совсем не то, что нужно. Если я установлю заголовок на 90, а затем передвину его вперед, он переместится вверх. Единственный способ обойти эту проблему — поиграться с координатами в спецификации фигуры, чтобы повернуть их все на 90 градусов против часовой стрелки (что означает замену x и y местами и отрицание знака новой координаты x).
Не могу поверить, что это было задумано.

Подробнее здесь: https://stackoverflow.com/questions/781 ... oordinates

Вернуться в «Python»