Description |
1. Выбираются фиксированные диапазоны, здесь их количество в общем-то не важно, любое разумное, нагляднее всего видимо 3-4 отрезка вида (0-40-80-120) или (0-40-60-90-120), важно, чтобы реперные точки определяли существенные изменения в режиме движения.
2. Для каждой реперной точки указывается цвет (любой, просто RGB) сверху и снизу (в математических терминах 60+0 и 60-0 соответственно). Если эти цвета для одной точки совпадают - получим плавный переход между отрезками (палитрами), если не совпадают - будет контрастный переход. Если на концах одного отрезка цвета совпадают (например, 40+0 и 60-0, совпадение цветов имеет смысл проверять в алгоритме отдельно), то получится одноцветная заливка во всём диапазоне (может быть актуально для диапазона от 0+0 до 5-0, просто состояние покоя, либо актуально для загрузки большого количества треков). С точки зрения алгоритма это абсолютно без разницы, это просто произвольные константы в цветовом пространстве (кстати, и вовсе не обязательно RGB).
3. Простейшая стандартная линейная интерполяция на нужном отрезке даст нужный цвет (независимо по каждому цветовому каналу, понятно что в конце надо "округлить" для возвращения в цветовое пространство). Если редкое попадание точно в границу отрезка (точно 60.) - берётся верхний предел (60+0) или нижний предел (60-0), как хочется. Актуально прежде всего для 0+0 (начало движения) и для конца верхнего диапазона (120-0), впрочем, на этот счёт есть и другие методы. Интерполяция более высокого порядка возможна, но пока что вопрос в её целесообразности открытый. Вот тут как раз важна доступная вычислительная мощность, чтобы когда загрузишь пару сотен треков, ничего не зависло и всё нормально скроллилось. А для тех, кто мечтает только о плавных переходах и дочитал до этих строк, предлагаю сравнить требуемые ресурсы для случая резкого перехода (определение скорости просто по case-у между несколькими кокретными цветами) и плавного (после case для границ отрезка натягивается ещё и интерполяция).
4. Отдельная часть алгоритма касается верхнего предела и обработки скорости выше верхней реперной точки (например, выше 120). Основная предпосылка здесь, что уже отрисованные треки не должны перекрашиваться в другие цвета, как при появлении новых точек трека, так и при загрузке новых треков. В том числе если к автомобильным трекам кинуть самолётный. Проще всего использовать один конкретный цвет (например, от 120-0 или вообще отдельный). В принципе ничто не мешает сделать всяким отпетым извращенцам ещё диапазоны сверху, например, к приведённым выше ещё добавить что-нибудь типа (120-160-300-1100-1500) для всяких вертолётов и самолётов (а нижние диапазоны вообще да хоть убить совсем). Но выше MAX-0 всё равно один сплошной цвет.
>значения скоростей и цвета очень хорошо задавать бы руками
Безусловно всё руками должно быть. Даже в разных странах разные ограничения скоростного режима. Да и самолёты с моторками и байдарками по-разному передвигаются, и статистика по скоростям будет разная. Надо ли пытаться по загружаемому треку (запуская некий эвристический анализатор) понять, что это за трек, кто так ехал и на чём (и как следствие - выбор параметров алгоритма раскраски, в том числе несколько активных алгоритмов раскраски одновременно для разных треков) - вопрос открытый, и что куда более важно - отдельный. Но делать надо изначально нормально, с возможностью простой доработки без переписывания всего и вся. |
Description |
Идея сложноватая, но я полагаю реализуемая. Расширить потенциал отображения скорости на трэке в виде цвета трэка. Предлагаю ввести 4 цвета. Красный это максимальная зафиксированная скорость, зеленый - средняя скорость в движении(такого датчика в планете нет, но это полезная штука), синий - скорость между средней скоростью в движении и к примеру 10 км\ч, ну и черный - скорость от 10 до 0 км\ч. Что это дает, имея такой трэк можно заранее установить скорость передвижения на участке, иметь представление о скоростных и опасных участках... Ну и разумеется что такой трэк при загрузке из файла сохранял свою палитру. Насколько я разбираюсь в программировании, придется создать новый формат файлов трэков, но я думаю оно того стоит. |