Я работаю над некоторым программным обеспечением для моделирования, в котором у меня есть сущность, которая вращается вокруг определенной точки.Переменная возрастание в стоимости, а не уменьшение
Поскольку объект начинает вращаться вокруг точки, а радиус спирали продолжает расти, я хочу отобразить количество схем, которые объект завершил для пользователя (завершение схемы определяется как местоположение/время, когда объект достигает того же угла от начала координат, в котором он находился, когда он начал вращаться). Я также хочу показать пользователю, расстояние от текущего местоположения воздушного судна до точки, в которой она завершит текущую цепь.
Я делаю это с помощью следующей секции кода:
if (m_OVF_TURN_DIR == TURN_LEFT)
{
arcAngle = 360 - (NormalAngle360(NormalAngle360(ldFAZ_CentrePos_AC) + NormalAngle360(m_circuitStartAngle)));
m_SteerData.DistanceToGo = (arcAngle * PI * m_currentRadius);
}
else
{
arcAngle = 360 - (NormalAngle360(NormalAngle360(m_circuitStartAngle) + NormalAngle360(ldFAZ_CentrePos_AC)));
m_SteerData.DistanceToGo = ((arcAngle * PI * m_currentRadius)/180.0); // Nm
}
В этом коде строки:
m_SteerData.DistanceToGo = (arcAngle * PI * m_currentRadius);
и
m_SteerData.DistanceToGo = ((arcAngle * PI * m_currentRadius)/180.0);
то, что вычисляет расстояние от текущего местоположения воздушного судна до точки, в которой он завершит схему.
Первый блок используется для расчета расстояния, когда объект спирально вращается против часовой стрелки, а второй блок используется, когда объект спирально вращается по часовой стрелке.
Правило по часовой стрелке, кажется, работает правильно - оно отображает число для расстояния, и это число неуклонно уменьшается по мере того, как объект следует по пути спирали. Тем не менее, направление против часовой стрелки, похоже, начинается с случайного числа, а затем неуклонно возрастает по мере того, как сущность следует по пути спирали ... а не уменьшается по мере того, как это должно (поскольку объект движется ближе к точке, в которой схема будет завершена).
Это говорит о том, что я использую неправильный символ где-то в этом блоке (+, -, * или /), но я не могу понять, где ... Может ли кто-нибудь указать мне в правильном направлении ?
Функция NormalAngle360()
определяется с:
double NormalAngle360(const double aInAngle)
{
//## Operation [c0b17aaa-bda1-4164-8ba7-5f960c924a32]
double ldAngle = NormalAngle(aInAngle);
if (ldAngle < 0.0)
ldAngle += 360.0;
return ldAngle;
//## Operation End
}
Можете ли вы разместить свой код для NormalAngle360 – 3Demon
Код для 'NormalAngle360'. – someone2088
Код, в котором m_currentRadius изменяется и объявляется. Скорее всего, что-то не так с этой переменной, я думаю, что она вообще не уменьшается. – 3Demon