Привет, недавно я писал программу с кучей точек, которую игрок должен был избегать.Точки изменили направление, но не могут поворачиваться слишком сильно в течение определенного периода времени.
У меня был способ сделать это, но он был неэффективен, так как мне приходилось разбираться в арксинусе, зная угол закругления и угол синуса, затем синус и косинус этого угла.Я думал о том, чтобы просто вернуть косинус и синусный угол, но есть одна проблема.После того, как я получил косинус и синус, мне нужно знать, слишком ли он отличается от моего текущего состояния.
С углом зрения это было бы легко, так как я бы просто увидел разницу, вот модель программы (код, который у меня сейчас есть, использует угол и не очень полезен).Я пытался изобразить синус и косинус и попытаться наблюдать какие-либо закономерности, не было выявлено ни одного очевидного.
import math
def sendTargRot():
#I actually use a fairly long method to find it's current rotation, but a random.random() is a fair replacement, so in my real thing there would be no angle calculation
pretendAngle = math.pi*random.random()-math.pi
pretendCosedX = math.cos(pretendAngle)
pretendSinedX = math.sin(pretendAngle)
def changeDotAngle():
targRot = sendTargRot
#make sure targRot is not too much from current rotation
#do stuff with the angle, change dot's rotation
Если вы хотите просто дать мне алгоритм без кода, который так же приемлем!
РЕДАКТИРОВАТЬ: Я не могу действительно изменить sendTargRot, поэтому он дает правильное вращение, потому что это потребовало бы от меня знания текущего угла, и на самом деле это просто перемещает проблему.