Итак, у вас есть кусочно-линейная зависимость, где z-координаты концов кусков идут нерегулярно, и вы хотите получить значение функции при заданном z.
Обратите внимание, что нет смысла использовать бинарный поиск для 10 фрагментов (3-4 раунда БС могут быть медленнее, чем 9 простых сравнений).
Но какова точность ваших глубинных запросов? Обратите внимание, что вы можете хранить таблицу как с разрешением 1 метр, так и с 1 миллиметром - только 10 ^ 7 записей обеспечивают O (1) доступ к любому предварительно рассчитанному значению скорости
Для ограниченного числа фигур можно составить длинную формулу (с целочисленным делением), но результаты, возможно, должны быть медленнее.
Пример произвольной полилинии из трех частей с граничными точками 2 и 4.5:
f = f0 + 0.2*int(z/2.0)*(z-2.0) + 0.03*int(z/4.5)*(z-4.5)