Соб-сно сабж. Дан достаточно большой массив, в котором находятся всякие данные(например показания температуры). И по нему надо построить изолинии(шкала не дана, видимо она задается, мне препод так ничего толком не объяснил). Ну пусть скажем будет для примера отрезок [0..1000] с шагом, например в 100. Пока у меня была такая идея: Пройтись по массиву по горизонтали и по вертикали, отрезками, например по три пиксела. Если оба края его(отрезка) больше или меньше t, например, =100, то ничего не делать, а если нет, то где-то тут опорная точка для изолинии. Вопрос такой -- как получить сглаженную кривую(речь не об антиалиасинге, а о построении кривой, как по сплайнам), ну короче надо получить замкнутую кривую. Видимо здесь что-то вроде интерполяции, но мне честно говоря не понятно что и куда нужно интерполировать(замкнутая кривая ведь). Хотелось бы исходник или по крайней мере что-то более-менее конкретное.
Классические изолинии проходят через точки с определенным значением. Значит придется делать интерполяцию. Можно по двум точкам, можно по четырем - это будет линейная и никакого сглаживания - будут ломанные... Сплайны конечно хорошо, но на ассемблере вряд ли ты исходники тут найдешь. Лабы тут помогают делать в Begginers (есть спец-тема), но твоя задачка на крусач тянет.
квадратичные B сплайны. сглаживание - субпикселями. алгосы - несложные. есть и описания есть. если охота готового - каиро или агг. каиро проще использовать. агг - качественнее рисует (каиро берет 4 субпикселя, агг - 10). есть всякие биндинги в скриптоланги. есть либы делающие всякие форматы. например, свф. на пс можно прямо писать, тк это и скрипто ланг и граф вектор/битмап формат. в одном тюбике.
А если выбрать некую центральную точку, пересчитать координаты в полярные отн-но этой точки и работать уже в них, выбрав любой алгоритм, дающий гладкую кривую?
Я конечно темный в вопросах новомодного софта, но зачем советовать один из тысячи известных вам пакетов, когда есть проверенные временем и юзерами GRAPHER и MATHCAD и "достать" их проще и инфа есть. Думаю и Excel из офиса умеет изолинии строить. Вот только
Это не пакеты, это графические библиотеки - Anti-Grain Geometry и Cairo. Тема вообще-то в .A&O, если вы не заметили.
valterg да их трудно назвать новомодными. http://www.cairographics.org/ , например, основа половины современных 2Д рисовалок. правда, не всегда слово "каиро" наружу выносится. агг.. сперва думал пример приаттачить, но лучше проссылю. кстати, сорцы на сайте колоризованы и перессылены с помощью тулзени, которая также предоставляется в виде сорцов под гпл в разделе давнлоад. где там же и тутор к ней. впрочем, весь агг-сайт с ее помощью сделан. тут была темка о блоге для программистов, вот отличная основа для такого блога. правда, пров должен позволять пускать бинари. ну и так можно пользоваться. например, для написания хтмл-хэлпников или отчетов с примерами кода. весьма способствует. ну а маткад, это ж не либа. если надо по быстрому график построить, то какие вопросы? хоть маткад с экселем, хоть питон с перлом. или пхп.
>>квадратичные B сплайны Уже в курсе. Ток там блин один матан и не понятно каким боком это притулить к моей программе. Тем более мы по матану ни про интерполяцию ни про тем более сплайны вапсче ничего не изучали. В инете пошарился идея была nurbs сделать. Потом понял что оно мне не надо .D >>А если выбрать некую центральную точку, пересчитать координаты в полярные отн-но этой точки и работать уже в >>них, выбрав любой алгоритм, дающий гладкую кривую? Не понял . Что ты имеешь в виду под центральной точкой? И по каким критериям мне её выбирать? >>Можно по двум точкам, можно по четырем - это будет линейная и никакого сглаживания - будут ломанные... Ну определил я себе там точки, например для t=100. По двум точкам -- прямая. А по четырем как сделать? Интерполяция -- дык я не знаю как её делать вот в чем дело. Я просто знаю что она мне нужна. Ты мне алгос скажи хотя бы примерный. >>сглаживание - субпикселями Дык блин это антиалиасинг же. Я имел в виду чтобы у меня получалась изолиния ну такая более-менее круглая, не ломанная(если соединять по двум точкам будет ломаная). ЗЫ писать-то пофиг на чем. Асм -- не асм не суть важно. Препод ничо не сказал, значит всё что не запрещено, то можно. >>пров должен позволять пускать бинари А так он что не пускает ?
ЗЫ agg када на make поставил ещё что-то из интернета докачивать стал(что именно пока не смотрел). А на обычной машине сие как собирать?
MEPOX это не агг. это ваш собственный, персональный маленький друг. вы таки посмотрите, что он там качал. некоторые из них полюбляют девочек, а некоторые - ваши секретики.
там математика за 6-той класс школы. если вам это слишком, то лучше начать с учебников. это не относилось к теме. я просто попутно обратил внимание на полезную тулзу. а хостеры, да, обычно не разрешают пускать бинари. особенно бесплатные.
Кстати а кривые безье тут не прокатят? И выглядет проще(понятно что надо делать), да к тому же тут вроде бы есть такая проблема что надо как-то подавлять шум. Например если я ищу t=200 и там получается круг(грубо). И тут на тебе в где-то центре точка. Соединит с ней -- будет уже не изолиния, а хз чо, особенно с учетом того что массив большой, а масштаб маленький. Ну это я про интерполяцию. А с кривой безье вроде бы по трем точкам всё довольно шоколадно получится, нет?
MEPOX Прокатят. Я тебе скажу один умный вещь: если у тебя нет дополнительных условий, по N точкам ты можешь построить бесконечное количество гладких кривых, проходящих через эти точки. И все они будут изолиниями для какой-то вполне допустимой поверхности.
Так можно начать с построения сплайн-поверхности по этим N точкам, а потом порубить её на изолинии плоскостями уровня.