synapse_people: вы уже совсем элементарные вещи спрашиваете, тут лучше самому разбираться. подсказка: в разных реализациях ось Y может быть положительна в разных направлениях(вверх/вниз), в вашем случае получается, что вниз.
2 пунк не ясен, как можно найти угол одного вектора?...
судя по вашей картинке, второй вектор может быть (0, 1)
в последнем: зачем отнять угол поворота башни, если его найти надо?
я не знаю как у вас реализовано, но есть как минимум два варианта: поворачивать башню относительно корпуса или относительно ее текущего положения. мой совет касался второго варианта. если у вас первый, то вычитать угол поворота башни - не надо.
а как должно быть по нормальному?
гуглите, только я не пойму, зачем вам знать как по-нормальному, можно отталкиваться от того, что есть.
synapse_people: то, что углы идут в правую сторону - это лишь вопрос соглашения, зная в какую сторону идет отсчет, вам достаточно поиграться со знаками(+/-).
bromzh: asyncio медленный и только под третий питон, пока наверное все же лучше tornado или gevent(хотя я сейчас ковыряюсь в asyncio и собираюсь на нем по работе проектик запилить).
как вариант можно делать каркас с базовыми классами в пакете lib/core/common/что-то_другое, а дочерние классы располагать на уровень выше, может в отдельных пакетах, и импортировать из ядра базовые классы
Mike Evstropov: я как-то на фразе "расширяемо? да" получил слишком много эмоций и сразу написал ответ. у вас получается родительский класс должен знать о дочерних, это мягко говоря странно. вложенность задом наперед выходит: a(b(c)), а обычно c(b(a))
Ocelot: понял, различие в терминах, если бы это были круги, то можно сказать, что они пересекаются. я по привычке рассматривал в терминах физики в компьютерных играх, там обычно все упрощено.
Дмитрий: это я к тому, что саблайм все-таки написан на плюсах, а от питона там лишь апи для плагинов. так что приводить конкретно этот проект, как пример того, что питон подходит для разработки десктопных приложений - не очень корректно.