Так что здесь есть две возможности. Во-первых, у вас есть объект, который может вращаться, но не показывает никаких изменений в процессе. Другой - у вас есть объект, который определяется его направлением. Каждый должен обрабатываться отдельно и по-своему.
Итак, для circle у нас есть заглушка для функции поворота, поскольку в системе нет изменений. Не нравится, очень плохо. Я откладываю свой тест по точечным группам, чтобы написать это.
Для стрелка вверх мы выбрасываем исключение, так как мы не хотим ехать по улице с односторонним движением в неправильном направлении, и это в любом случае должно быть постоянным.
В моем случае я определяю точку в трехмерном пространстве, наследуя операции от класса, определяющего кватернион. Трехмерная точка использует только 3 мнимые координаты кватерниона, и если кватернион имеет ненулевое значение для реального компонента, он разрушит жизненно важные операции алгоритма рендеринга, унаследованного от кватерниона через 3-мерную координату.
Извините, что я чрезмерно философский, однако, этот вопрос поднимает в CS вопрос о том, как с этим обращаться. Как отмечает Стивен, возможность скрывать, отключать или удалять унаследованную функцию в дочернем классе «... нарушит принцип замещаемости и нарушит полиморфизм».
Мой случай подпадает под стрелку вверх, за исключением того, что я указываю на воображение. Я пытаюсь усечь производный класс, что означает, что любой класс «внука» (возможно, наследующий операторы вращения) больше не обязательно будет кватернионом. Было бы более элегантно избегать использования исключений, обрезая базовый класс на типе для усеченного производного класса. Альтернативой было бы определение трехмерной координаты как отдельного класса с переменной кватерниона; недостаток в том, что в реализации слишком много клея.
Затем я могу поместить новые операции вращения в производный класс для трехмерных координат для трех плоскостей (ij, jk, ik), а затем объекты с 3d-вершинами можно вращать с помощью цикла и идентичного вызова функции-члена для каждой вершины. Вы можете самостоятельно отслеживать симметрию, прежде чем начнете вращать точки, определяющие поверхность сферы, поэтому вам нужно использовать функцию-заглушку и, возможно, реализовать свой собственный флаг «константа».