РЕДАКТИРОВАТЬ: я не уверен, что это сработает. Я перевел его из кода Python, но не уверен, что divmod(radians, math.pi*2)[1]
ведет себя так же, как System.Math.IEEERemainder(radians, Math.PI*2.0)
. Нужно протестировать...
EDIT2: я думаю, что использование% правильно
EDIT3: Бла, это неправильно, потому что возвращает отрицательное значение для отрицательных чисел. Кто-нибудь знает, как получить python divmod на С#?
Как вычислить угол между двумя углами:
public static double NormalizeAngle(double radians)
{
return fmod(radians,Math.PI*2.0); # this method doesn't exist, see above
}
public static double ArcLength(double radians1, double radians2)
{
radians1 = NormalizeAngle(radians1);
radians2 = NormalizeAngle(radians2);
return Math.Min(NormalizeAngle(radians1 - radians2, NormalizeAngle(radians2 - radians1));
}
Как это работает, он пробует оба варианта, все расчеты по модулю 2pi, и выбирает вариант с меньшим расстоянием.
person
Patashu
schedule
25.01.2013