Вот написал X). Море радости. Отображает график двумерный с подписями по осям, возможностью выделения горизонтального диапазона (кусок другого проекта). Берёт данные из файла input.txt. Можно масштабировать (скроллингом мыши наезд+-). Можно скроллить — это правой кнопкой. Увеличивать рамкой — левой кнопкой слева сверху направо вниз. Отмаксить зум и отцентровать можно отпустив растянутую рамку в 3 другие направления. Что не так? Чего не хватает?
Жаль не приложен exe. Не всем охота искать С++ билдер чтобы откомпилить. Также в посте желательно было указать используемые языки и библиотеки. А чем пользовались для раскладки в команды сопроцессора арифметических выражений? Подсматривали у компилятора?
keYMax думал здесь нельзя выкладывать исполняемые. сейчас исправлю. сам выводил когда-то на листочке бумаги. не видел, чтобы компилятор использовал FXTRACT. возведение в целочисленную степень подсмотрел в модуле Math Delphi.
Долго крутил скролл вверх, и, все таки заставил прогу повистнуть Неплохо бы добавить пределы зума, ну скажем туда-сюда до 100 раз.
я это вроде бы когда-то учёл — она по крайней мере не висла (всегда можно было откатить назад растягивая рамку, например, влево вверх). можно сделать так, что когда остаётся 1 и менее подписей, просто не выполнять дальнейший зум.
Ограничить зум действительно нужно. Нужна привязка и к нулевой отметке если у вас нет например минусовых значений по Y зачем рисовать график висящим в облаках? если есть зумм должен быть и скролл по горизонтали и график наверное по логике должен маштабироваться по вертикали в высоту окна с соотвествующим перерасчетом отметок по вертикали и горизонтали, а не теряться вершиной за его пределами
Dukales а и можно посмотреть как реализовано управление здесь (флэшовый двумерный график курсов валют) h__p://news.yandex.ru/quotes/1.html#20090715-20091217
вот ещё нашёл. множество Мандельброта рисует. "движок" тот же (был такой TChart компонент вроде бы, так вот с него идея взята). синяя рамка выделяет участок так, чтобы не было искажений. на увеличении 10^17 проявляются эффекты дискретности представления long double
принцип таков: в каждый момент следует выводить максимум информации. вы пробовали правую кнопку зажать и поводить мышкой? есть ещё рамка — её нужно растягивать левой кнопкой (нажать и тянуть): когда зелёная (это слева сверху вправо вниз) — захваченая область (прямоугольная) будет отмасштабирована на весь экран; когда красная — ничего не происходит; когда синяя — вид будет от-max-ен (с отступами от границ "экрана").
критерий (при увеличении) таков думаю должен быть таков: если хотя бы по одной из осей отношение 0.5*(high + low)/delta > 1E17 то будут начинать проявляться эффекты дискретности. для вывода критерия при уменьшении масштаба необходимо копаться в документам по sprintf, чтобы выяснить сколько она знаков выводит максимум без обязательного перевода в абсолютный вид. хотя может быть дело и не в этом.