Разжуйте. пожалуйста, детскую задачу на пропорции?
Идет зависимость температуры от высоты (не в реальном мире).
256: 10.0
Например 100: ?
64: 24.0
Но это не то же самое, что просто:
256: 10.0
100: ?
Так как есть еще последнее соотношение и его можно задать каким угодно, хоть 64:2. Я пока вот не очень понимаю, как это всё называется.
Пока что пытался думать так:
Я это представляю как некое изменение за время. Высота с 256 до 64, а температура с 10 до 24.
Значит 192/14=13.7 это скорость изменения метров за градус.
Значит, если нам нужно 100 - это 156/13.7=11.3.
Значит 24-11.3=12.7.... наверное от большего числа... Но дальше там в таблице могут и меняться значения наоборот в плюс итд, типа градиента.
Я запутался :( Да-да, мне уже ответили "А в чем вопрос?", "ну так и решайте простую пропорцию 5-й класс", "ну вы сами назвали ответ" и другие полезные ответы. Поэтому прошу честно - разжуйте, пожалуйста, я дебилушка)) Наверняка ж есть формула. Знаю про линейную интерполяцию, но только когда 0 и 1 с другой стороны.
не прибедняйтесь, вы действительно привели правильные рассуждения для этих исходных данных. Но...
дальше там в таблице могут и меняться значения наоборот в плюс итд, типа градиента.
Вот надо сразу давать больше исходных данных, а теперь стало непонятно, что там ещё в таблице. Может быть там совсем не линейная зависимость, но как об этом догадаться, не видя хотя бы несколько строк таблицы? Да, в общем случае это называется задачей интерполяции/экстраполяции и либо нужно знать о зависимости (линейная, квадратичная, и т.д.), либо делать допущение, когда точно зависимость не известна. Самое простое, что вы можете сделать, не зная зависимость, это кусочно-линейная интерполяция.
что-то я не совсем понял, почему вы разницу в высотах находите между большей высотой и 100, а потом отнимаете от температуры соответствующей меньшей высоте.
по мне, так вы должны были добавить к 10(на 256м) +11.3(разницу температур между 256 и 100) и получившееся значение было бы температурой на 100м. нет?
hint000, Спасибо, начал вникать. Там по сути надо закодить функцию, которая получает значение температуры на любой высоте (в игре), беря данные из таблицы. В таблицу можно занести (задать вручную) какие угодно значения для температуры для разных высот (она может расти и убывать ). Вот пример таблицы.
256: 10.0
64: 24.0
48: 16.0
0: 32.0
Я просто решил сперва определять между какими числами из левой колонки высота и работать с этой частью.
hint000, Вот, подумал еще...
У меня есть формула линейной интерполяции min + K * (max-min). Но она работает, только если в левой части число от 0 до 1.
Попробовал превратить 100 в процентную часть между 256 и 64. (процент 100 от 192).
Получилось 0.52.
По формуле выходит 17.28
Но я еще путаюсь, что считать min и max, если в правой части числа возрастают. \
Вы не правильно понимаете задачу.
У вас только два значения, значит без лишних вопросов вы можете предполагать, что на участке [64, 256] у вас линейная зависимость. Достаточно решить систему:
64a+b=24
256a+b=10
В результате получаем зависимость
-0,073*x+28,667=y
на 100м будет примерно 21,367
Если у вас меного значений то для апроксимации нужно составить сложную систему :
An*x1^n + An-1*x1^(n-1) ... A1*x1 + A0 = y1
An*x2^n + An-1*x2^(n-1) ... A1*x2 + A0 = y2
..................................................................
An*xn^n + An-1*xn^(n-1) ... A1*xn + A0 = yn
Определив коєффициенты An-A0 вы сможете определить апроксимирующую функцию