Вот форма, созданная по индивидуальному заказу:
[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 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)))

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