Алгоритм расчета отрезков на координатной линии
Необходимо написать алгоритм на языке php
Имеется прогресс бар заданной ширины. Пользователи указывают:
1) дату завершения этой шкалы
2) отрезки (этапы) произвольный длины. Например:
1. 01.12.12 - 05.12.12
2. 05.12.12 - 10.12.12
3. 10.12.12 - 15.12.12
......
Необходимо для данных этапов просчетать доли в процентном соотношении от общей длины шкалы.
Но есть нюансы:
1) минимальный размер этапа должен быть не менее 4%
2) Среди этапов могут быть этапы с неуказанной датой.
Такие этапы должны быть размером в промежуток между этапами с указанной датой, т.е:
1. 01.12.12 - 05.12.12
2. 00.00.00 - 00.00.00
3. 00.00.00 - 00.00.00
4. 10.12.12 - 15.12.12
для 2го этапа дата начала будет - дата завершения 1го, для 3го конец будет - дата начала 4го.
Подсчитываем общую долю 2х этапов, делим на число этапов и присваиваем каждому из этапов.
3) Этапы выстроены по дате завершения - от раннего к последнему.
4) У этапов даты начала могут не состыковываться с датой завершения предыдущего этапа.
т.е. может быть такое:
1. 01.12.12 - 05.12.12
2. 02.12.12 - 10.12.12
3. 10.12.12 - 15.12.12
Шкала представляет собой прямую от 0% до 100%.
У этапов должны быть 2 координаты - начало (%) и конец (%).
Необходимо написать функцию, в которую передаются этапы с датами, общая дата завершения, а на выходе функция возвращает координаты (в %) всех этапов.