Вычислить оптимальное значение шага

Рейтинг: 0Ответов: 2Опубликовано: 21.05.2011

Есть некая функция. Нужно построить для нее график. Используется C#, .NET 4.0 и компонент chart. Строиться путем циклического добавления точек на график. Пользователь задает диапазон. Например задано от -5 до 5. Тогда можно взять шаг 1, и построить график по 10 точкам. Если пользователь задаст диапазон от 2.1 до 2.2, то шаг в 1 уже не подойдет, лучше взять 0.1 или еще лучше 0.01. Но, если использовать шаг 0.01, то при задании диапазона от -100 до 100 программа будет очень долго высчитывать для каждой точки значения и рисовать ее.

Отсюда вопрос, как вычислить оптимально значение шага? Или может оставить это дело на пользователя, пусть сам выбирает?

Ответы

▲ 2Принят

Например так:

( x2 - x1 ) / n

где x1 - левая граница диапазона, x2 - правая, а n - число точек (в вашем примере 10), которое можно зашить в программе или предоставить ввести пользователю. Тогда:

( 5 - ( -5 )) / 10 = 1

и

( 2.2 - 2.1) / 10 = 0.01

т.е. то что вам нужно

▲ 4

В данном случае можно использовать пиксельную ширину твоего приложения (текущую). Большую детализацию для графика не имеет смысла ставить. Таким образом, число шагов у тебя будет например 1024. При этом нужно будет обрабатывать изменение размеров рабочей области приложения в конечной точке, я имею ввиду не каждое пошаговое изменение, а отлавливать конечное.

Можно также задавать коэффициент высчитываемый на основании разрядности чисел - границ диапазона.