Как получить значение по проценту в диапазоне двух чисел?

Например:
Значение 10% в диапазоне между 0.0 и 20.0 будет 2.0
Значение 50% в диапазоне между -5.0 и 5.0 будет 0
Вся сложность в том, что это векторное вычисление, и - на - здесь не дает +
Диапазон может быть, например, (-5.0, -10.0), (5.0, 10.0), (-5.0, 10.0), в общем, идти и к верху и к низу.
Эта задача возникла в разработке игры. Пример:
(float StartValue, float EndValue, float Percent) {
	const float OnePercent = (EndValue - StartValue) / 100.0f;
	return StartValue + OnePercent * Percent;
}

Но это вычисление работает только если оба числа положительные, и если StartValue всегда ниже, чем EndValue.
  • Вопрос задан
  • 982 просмотра
Решения вопроса 1
Читайте про интерполяцию. Ваш пример вполне корректен и с отрицательными числами и с обратным порядком. Подумайте получше.

UPD: более того, эта формула справедлива и для векторов произвольной размерности, и для углов и для многих других величин.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Формула универсальная для любых чисел, шаг в сторону endvalue от startvalue
Чем не устраивает формула , покажите на примере конкретных вычислений.
Ответ написан
Комментировать
@fatlander
c# developer
EndValue-((EndValue-StartValue)*percent/100)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы