Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Подземелье Магов
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  10:21[Войти] | [Зарегистрироваться]

Обсуждение материала
Что нужно знать программисту и пользователю, работающему с программами, строящими графики функций
Полный текст материала


Другие публикации автора: Алексей Легкунец

Цитата или краткий комментарий:

«... Рассмотрены проблемы построения графиков функций на компьютере, связанные с дискретностью устройств вывода. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]342.9%
 
  Ничего особенно нового и интересного
[2]457.1%
 
  Написано неверно (обязательно укажите почему)
[3]00%
 
Всего проголосовали: 7

Оценка стиля изложения

  Все понятно, материал читается легко
[1]685.7%
 
  Есть неясности в изложении
[2]00%
 
  Непонятно написано, трудно читается
[3]114.3%
 
Всего проголосовали: 7




Смотрите также материалы по темам:
[Инженерная графика. CAD-системы.]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 14

12-10-2009 07:36
Считаю что в области графиков свой велосипед лучше чужого Chart'a.
Видимо построение графиков задача специфическая и хороших универсальных решений не имеет. Либо таковые решения порой освоить сложнее чем быстренько сделать собственое.
Я пользуюсь велосипедом и доволен им.


08-10-2009 13:52
Не все функции, для которых нужно строить графики заданы именно аналитически - в виде формулы. Например, я помогал решать задачу такого типа: имеется некий датчик, который каждую секунду выдает некоторое показание. Скажем, температуру. Эти данные куда-то складываются. Задача вроде бы типичная и простая - отобразить все накопленные данные за последние сутки (или несколько суток) в виде графика. Простая, табличная зависимость, но возникают проблемы. Если отображать каждую точку, то быстродействие программы будет не просто желать лучшего, а просто превратится в постоянное переключение пользователя на "Сапера", или еще что-то более толковое во время того, как программа реагирует на каждый клик мыши. А если бездумно выкидывать ненужные точки, то получится, что программа легко может пропустить некоторые "характерные" точки, например, резкий выброс показаний (который нужно обязательно отобразить при любом масштабе). В статье, подобной этой, хотелось бы увидеть методы оптимального подхода к решению такой задачи - быстрое отображение и навигация по функции, заданной табличной формой при огромном объеме данных. Не все функции, для которых нужно строить графики заданы именно аналитически - в виде формулы. Например, я помогал решать задачу такого типа: имеется некий датчик, который каждую секунду выдает некоторое показание. Скажем, температуру. Эти данные куда-то складываются. Задача вроде бы типичная и простая - отобразить все накопленные данные за последние сутки (или несколько суток) в виде графика. Простая, табличная зависимость, но возникают проблемы. Если отображать каждую точку, то быстродействие программы будет не просто желать лучшего, а просто превратится в постоянное переключение пользователя на "Сапера", или еще что-то более толковое во время того, как программа реагирует на каждый клик мыши. А если бездумно выкидывать ненужные точки, то получится, что программа легко может пропустить некоторые "характерные" точки, например, резкий выброс показаний (который нужно обязательно отобразить при любом масштабе). В статье, подобной этой, хотелось бы увидеть методы оптимального подхода к решению такой задачи - быстрое отображение и навигация по функции, заданной табличной формой при огромном объеме данных.

Сейчас как раз занимаюсь примерно такой задачей, мне нужен был график имеющий несколько трендов (у меня 4-6), умеющий помимо самих трендов рисовать еще и уставки, плюс хотелось сверхудобное выделение диапазона мышкой. Ничего путного не нашел, Tee Chart вообще жуть какая-то, я даже не понял, как там зумом управлять, ни мышкой, ни программно, начал писать свой компонент. Практически готов (~1100 строк, считая пустые), вставлен в проект, буду правда еще по необходимости что-то добавлять. На моем рабочем P-4-3000 вытягивает 30000-40000 точек без проблем. LineTo по канвасу. Значения точек по Y у меня в тестах случайные, но на реальном объекте параметры могут в течение длительного времени практически не меняться. Если длина графика 1000 пикселей, а рисуем мы 10000, то на 1 пиксел по оси X придется 10 замеров значительная часть из которых может проецироваться в один и тот же пиксель экрана и они элементарно фильтруются. Как вариант можно просто находить отношение текущей точки к предыдущей, и если, разница, меньше, чем например, 0.005, то точку опять-таки можно просто не рисовать в 99%, даже если она в др. пиксель попадает, пользователя ведь пики, в первую очередь интересуют.
Мне кажется, что табличная ф-ия, особенно хорошо известная реализуется графически куда легче, чем вычисляемая. Отсортировал по оси Х, отсек края и выводи.


02-10-2009 11:36
сообщение от автора материала
Разрешите высказать свои соображения по поводу проблемы с разрывными функциями. (Вообще-то я никакой проблемы не вижу.)

>>>Скорее всего, Вы получите вертикальную черту графика в районе оси ординат. Плохо? Еще бы!
Что собственно плохого? Ведь мы увидели "неоднородность" и можем приступить к детализации графика вблизи этой точки. Хуже когда этой неоднородности не будет вообще.

А если бездумно выкидывать ненужные точки, то получится, что программа легко может пропустить некоторые "характерные" точки, например, резкий выброс показаний (который нужно обязательно отобразить при любом масштабе)
Если выводить график на экран, то  "характерные" точки и "любой масштаб"  понятия не совместимые. Да, при каком-то масштабе одни точки будут видны, а другом нет, все зависит от dx, проблема то не в этом. Проблема в том  что мы ограничены в числе точек на экране.  А это значит что часть  "характерных" точек мы просто отобразить не сможем, нет места. Поэтому без детализации графика нам необойтись. Т.е. мы должны рассматривать функцию более локально. Невозможно отобразить все показания датчика температуры за сутки на экране монитора, с "характерными" точками, если последние повторяются через 10 секунд. Вообще на большом интервале, та кривая, что мы видим на экране, не является графиком функции. Это лишь набор точек, которые связаны с данной функцией. Я говорю так потому, что очень много информации о функции мы теряем при фактически большом шаге дескритизации.
Могу предложить такое решение. Может кого заинтересует. Сам еще не пробовал. Просчитываем функцию с шагом dx/2(или на 3, на 4..). Затем анализируем массив и если есть "выброс" который не выводится на экран, то окрашиваем соседние точки (повторяются через dx) другим цветом, для неоднородности. Тогда здесь можно смотреть график более подробно.


01-10-2009 12:16
Ну про синусоиду, конечно, рассказано очень хорошо. Но вот возникают и определенные проблемы...
Не все функции, для которых нужно строить графики заданы именно аналитически - в виде формулы. Например, я помогал решать задачу такого типа: имеется некий датчик, который каждую секунду выдает некоторое показание. Скажем, температуру. Эти данные куда-то складываются. Задача вроде бы типичная и простая - отобразить все накопленные данные за последние сутки (или несколько суток) в виде графика. Простая, табличная зависимость, но возникают проблемы. Если отображать каждую точку, то быстродействие программы будет не просто желать лучшего, а просто превратится в постоянное переключение пользователя на "Сапера", или еще что-то более толковое во время того, как программа реагирует на каждый клик мыши. А если бездумно выкидывать ненужные точки, то получится, что программа легко может пропустить некоторые "характерные" точки, например, резкий выброс показаний (который нужно обязательно отобразить при любом масштабе). В статье, подобной этой, хотелось бы увидеть методы оптимального подхода к решению такой задачи - быстрое отображение и навигация по функции, заданной табличной формой при огромном объеме данных. Понятно, что любой программист может решить эту задачу, изобретя "велосипед", но хотелось бы, чтобы коллективный разум дал решение, оптимальное в большинстве случаев.
Помимо функций с гармониками существуют также и функции с разрывами. Например, 1/х. Попробуйте построить график этой функции на достаточно большом промежутке так, чтобы программа явно не "искала" такой разрыв (не знала бы о нем). Скорее всего, Вы получите вертикальную черту графика в районе оси ординат. Плохо? Еще бы! И вновь хотелось бы призвать в помощь коллективный разум, чтобы решить проблему с разрывными функциями.
Ну и наконец, не замечание к автору статьи, а просто замечиние в автору использованной программы. Сейчас эра НОРМАЛЬНОГО программирования. А это значит - программа, если она не является системной утилитой (а программа для построения графиков, очевидно же, НЕ является системной) ДОЛЖНА работать в условиях отсутствия доступа к собственному каталогу на запись и вообще есть только три места, куда программа может еще надеяться хоть что-то записать - это папка пользовательских данных (по умолчанию - "C:\Documents and settings\%username%\Мои документы"), это папка настроек программ (по умолчанию - "C:\Document and settings\%username%\Application data") и временный каталог (%Temp%). Во все остальные места программу, скорее всего, не допустят. Я, лично, не допущу. На самый худой конец - можно смиренно спросить: "Куда мне положить свои файлы, о ВСЕМОГУЩИЙ?" А все программы, которые не хотят подчиняться этому простому правилу и собираются устраивать у меня на диске бардак могут выметаться с моей машины прочь. Я думаю, если большинство пользователей будут следовать этому простому правилу, то разработчики вирусов и троянов останутся не у дел. Так что программу GrFunkcii я так и не посмотрел, очень надеюсь, что автор ее доведет до ума.


30-09-2009 18:42
Всё правильно.Но...
А вот увеличить как?
Вот малюсенький квадратик?
А в нём ещё такой?
И т.д.
Закончится лафа процессорная:)
Exception...
А,вообще(я так делаю) график рисуется офигенно большой(на сколько можно по памяти),потом КАРТИНКА сжимается под разрешение,потом подписываются оси :)


29-09-2009 09:47
Вопрос поднят правильно. Такие "субгармоники" рисуют даже цифровые осциллографы ведущих производителей, а для них это грубейшая ошибка. Надо бы только дополнить хотя бы ссылкой на работы о дискретизации непрарывных функций (сигналов), упомянуть Котельникова...


27-09-2009 22:49
Пишите "велосипеды" - не используйте готовое, это время окупится

Времена такие, на вопросы надо смотреть "шырше", а к людям надо "помягше"  
(С)Приключения Шурика

и изучайте матчасть как говорили классики



23-09-2009 23:15
сообщение от автора материала
Программу нужно ставить в Program Files, проблем нет.


22-09-2009 11:31
Стать может оказаться полезной еще и тем,
кто стремится изучить теорию Вейвлетов.
 Surv


21-09-2009 12:41
Ой, господа!
Такие субстанции, как информативность и нагляденость - вещи, которые зависят от целей построения графиков. Не автоматизируются они. Пока не представишь саму графику и не обдумаешь человечьими мозгами, какую ее часть ты хочешь видеть и в каком виде, ни одна программа тебе не поможет. А когда ты до этого дойдешь в комплексе с аналитикой, грубой графикой и т.д. и т.п., вот тогда ты сможешь сделать автомат, который тебе все красиво и в нужном масштабе отрисует все.
И даже сможешь с помощью графики находить новые открытия.


21-09-2009 04:22
Про субгармоники не знал. В общем статья очень интересная и познавательная.


21-09-2009 03:27
Согласен, что "велики" уже изобретены и ездят.
Написанная статья имеет под собой достаточно "сильное" утверждение - у нас есть доступная к вычислению функция y=f(x). Причем "доступность" это - аналитический вид функции + достаточно высокая скорость ее вычисления.
Конечно, ничего принципиально нового тут нет, но если говорить о задаче, когда помимо собственно "вывода" на экран нужно еще "нагрузить" движок интер- экстраполяцией, то подобный материал может рассматриваться как полезный.
Конечно, все это давно и очень эффективно (с точки зрения математики) умеют делать "математические" пакеты. Однако достаточно часто при разработке узко-научно-прикладного софта приходится делать "самопальные" графопостроители. Также речь касается программ, эмулирующих консоли управления реальных устройств.
Материал полезен, просто нужно понимать его "заточку".


21-09-2009 03:01
А смысл городить очередной "велосипед" - есть же TeeChart(и еще кучка других) в которых "из коробки" реализовано все что тока в голову может прийти (масштабирование, несколько осей, сотни видов графиков и т.д. и т.п.).

Не пишите "велосипеды" - используйте готовое, а высвободившеесе время потратьте на проектирование и разработку бизнес-логики.


20-09-2009 13:11
При изучении данного вопроса я использовал программу GrFunkcii (www.GrFunkcii.narod.ru).

Скачал. Не запускается. На короткий момент появляется в спике диспетчера задач и тут же исчезает, не выводя никаких сообщений и вообще никак внешне себя не проявляя. WinXP со всеми сервиспаками.


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Вода мокрая или сухая?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

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

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования