Алгоритм построения сглаженных изолиний

Тема в разделе "WASM.A&O", создана пользователем MEPOX, 21 фев 2010.

  1. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Соб-сно сабж.
    Дан достаточно большой массив, в котором находятся всякие данные(например показания температуры). И по нему надо построить изолинии(шкала не дана, видимо она задается, мне препод так ничего толком не объяснил). Ну пусть скажем будет для примера отрезок [0..1000] с шагом, например в 100.

    Пока у меня была такая идея:
    Пройтись по массиву по горизонтали и по вертикали, отрезками, например по три пиксела. Если оба края его(отрезка) больше или меньше t, например, =100, то ничего не делать, а если нет, то где-то тут опорная точка для изолинии.

    Вопрос такой -- как получить сглаженную кривую(речь не об антиалиасинге, а о построении кривой, как по сплайнам), ну короче надо получить замкнутую кривую. Видимо здесь что-то вроде интерполяции, но мне честно говоря не понятно что и куда нужно интерполировать(замкнутая кривая ведь).

    Хотелось бы исходник или по крайней мере что-то более-менее конкретное.
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Классические изолинии проходят через точки с определенным значением. Значит придется делать интерполяцию.
    Можно по двум точкам, можно по четырем - это будет линейная и никакого сглаживания - будут ломанные...
    Сплайны конечно хорошо, но на ассемблере вряд ли ты исходники тут найдешь. Лабы тут помогают делать в Begginers (есть спец-тема), но твоя задачка на крусач тянет.
     
  3. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    квадратичные B сплайны. сглаживание - субпикселями. алгосы - несложные. есть и описания есть. если охота готового - каиро или агг. каиро проще использовать. агг - качественнее рисует (каиро берет 4 субпикселя, агг - 10). есть всякие биндинги в скриптоланги. есть либы делающие всякие форматы. например, свф. на пс можно прямо писать, тк это и скрипто ланг и граф вектор/битмап формат. в одном тюбике.
     
  4. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    А если выбрать некую центральную точку, пересчитать координаты в полярные отн-но этой точки и работать уже в них, выбрав любой алгоритм, дающий гладкую кривую?
     
  5. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Я конечно темный в вопросах новомодного софта, но зачем советовать один из тысячи известных вам пакетов, когда есть проверенные временем и юзерами GRAPHER и MATHCAD и "достать" их проще и инфа есть. Думаю и Excel из офиса умеет изолинии строить. Вот только
    :)
     
  6. G13

    G13 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2006
    Сообщения:
    499
    Это не пакеты, это графические библиотеки - Anti-Grain Geometry и Cairo.
    Тема вообще-то в .A&O, если вы не заметили.
     
  7. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    valterg
    да их трудно назвать новомодными. http://www.cairographics.org/ , например, основа половины современных 2Д рисовалок. правда, не всегда слово "каиро" наружу выносится.

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

    ну а маткад, это ж не либа. если надо по быстрому график построить, то какие вопросы? хоть маткад с экселем, хоть питон с перлом. или пхп.
     
  8. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    >>квадратичные B сплайны
    Уже в курсе. Ток там блин один матан и не понятно каким боком это притулить к моей программе. Тем более мы по матану ни про интерполяцию ни про тем более сплайны вапсче ничего не изучали. В инете пошарился идея была nurbs сделать. Потом понял что оно мне не надо .D

    >>А если выбрать некую центральную точку, пересчитать координаты в полярные отн-но этой точки и работать уже в
    >>них, выбрав любой алгоритм, дающий гладкую кривую?
    Не понял ;). Что ты имеешь в виду под центральной точкой? И по каким критериям мне её выбирать?

    >>Можно по двум точкам, можно по четырем - это будет линейная и никакого сглаживания - будут ломанные...
    Ну определил я себе там точки, например для t=100. По двум точкам -- прямая. А по четырем как сделать? Интерполяция -- дык я не знаю как её делать вот в чем дело. Я просто знаю что она мне нужна. Ты мне алгос скажи хотя бы примерный.

    >>сглаживание - субпикселями
    Дык блин это антиалиасинг же. Я имел в виду чтобы у меня получалась изолиния ну такая более-менее круглая, не ломанная(если соединять по двум точкам будет ломаная).

    ЗЫ писать-то пофиг на чем. Асм -- не асм не суть важно. Препод ничо не сказал, значит всё что не запрещено, то можно.

    >>пров должен позволять пускать бинари
    А так он что не пускает ?
     
  9. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    ЗЫ agg када на make поставил ещё что-то из интернета докачивать стал(что именно пока не смотрел). А на обычной машине сие как собирать?
     
  10. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    MEPOX
    это не агг. это ваш собственный, персональный маленький друг. вы таки посмотрите, что он там качал. некоторые из них полюбляют девочек, а некоторые - ваши секретики.
     
  11. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    там математика за 6-той класс школы. если вам это слишком, то лучше начать с учебников.

    это не относилось к теме. я просто попутно обратил внимание на полезную тулзу. а хостеры, да, обычно не разрешают пускать бинари. особенно бесплатные.
     
  12. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Кстати а кривые безье тут не прокатят? И выглядет проще(понятно что надо делать), да к тому же тут вроде бы есть такая проблема что надо как-то подавлять шум. Например если я ищу t=200 и там получается круг(грубо). И тут на тебе в где-то центре точка. Соединит с ней -- будет уже не изолиния, а хз чо, особенно с учетом того что массив большой, а масштаб маленький. Ну это я про интерполяцию. А с кривой безье вроде бы по трем точкам всё довольно шоколадно получится, нет?
     
  13. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    MEPOX
    Прокатят.

    Я тебе скажу один умный вещь: если у тебя нет дополнительных условий, по N точкам ты можешь построить бесконечное количество гладких кривых, проходящих через эти точки. И все они будут изолиниями для какой-то вполне допустимой поверхности.
     
  14. Ravager

    Ravager New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    34
    Так можно начать с построения сплайн-поверхности по этим N точкам, а потом порубить её на изолинии плоскостями уровня.