2009-12-04 1 views
0

Я пишу 2D-плоттер, а вдоль оси X и Y у меня есть маркеры с печатными значениями. Теперь мой вопрос: как найти подходящие расстояния?Подходящее расстояние маркера вдоль оси в плоттере

Мой метод (для числовой оси) до сих пор:

  • Я знаю высоту оси на экране в пикселях
  • Определите оптимальное расстояние между маркерами в пикселях (что хорошо выглядит на экране ...), например 32 пикселя.
  • Пересчитайте отсчет пикселя до значения оси (если ось составляет 320 пикселей, а диапазон осей составляет 0-40 ° C, например, 32 * (40/320) = 4. Таким образом, оптимальное расстояние 4 ° C.)
  • Начните с расстояния 1 ° C. Если расстояние больше оптимального расстояния, разделите его на два, пока не будет достигнуто оптимальное расстояние. Точно так же, если расстояние меньше оптимального расстояния, умножьте его на два дольше, чем оптимальное расстояние.

Это работает, но это не дает мне таких же расстояний, как я бы выбрал вручную. Например: если диапазон 0-1000, я бы решить одну из следующих расстояний:

  • 1000 (0, 1000
  • 500 (0, 500, 1000)
  • 250 (0, 250 , 500, 750, 1000)
  • 200 (0, 200, 400, 600, 800, 1000)
  • 100 (0, 100, ..., 900, 1000)
  • 50 (0, 50, ..., 950, 1000)

и т. Д.

У вас есть умная идея?

ответ

2

Одно из предложений, которое может помочь определить, какие расстояния будут выглядеть хорошо, а затем определить таблицу поиска на основе размера диапазона на ваших осях. Но, чтобы сохранить необходимость иметь слишком много данных, убедитесь, что ваши оси нормализованы до стандартного диапазона.

Так, например, вычислите диапазон, затем нормализуйте назад до диапазона 1-100, затем найдите ближайшее значение в таблице поиска и используйте это расстояние.

Если у вас есть Excel, вы можете посмотреть результаты, которые они создают, и посмотреть, можете ли вы извлечь полезный алгоритм из этого, хотя часто обнаруживаю, что мне нужно вручную переопределить расстояния, которые Excel бросает для ясности. Может оказаться, что ручное переопределение является важной функцией для вашего приложения.

+0

Это на самом деле то, как я это сделал. Благодарю. – Jonatan

+0

Добро пожаловать. Я новичок на сайте, поэтому получение положительного подкрепления - настоящий шум! Увидимся. –

Смежные вопросы