Отговори на тема  [ 13 мнения ] 
алгоритъм за крива на Безие 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 20, 2005 5:02 pm
Мнения: 108
Мнение алгоритъм за крива на Безие
Здравейте!

Някой може ли да предложи връзка към информация за смятане на крива на Безие?
Интересува ме от хардуерна гледна точка - в Google информация дал Бог, но от към математика и тук-таме някой сорс на С, в който floating point аритметиката и деленето не са проблем. А мен ме вълнува как би могло да стане с програмируема логика - без значение каква. Не търся готово решение, а по-скоро принцип, алгоритъм. Кривата на Безие ме интересува, когато Безие-то е дадено с 4 точки - да кажем, както е дадено на тази картинка: Изображение.

Благодаря за всяко инфо


Пет Сеп 11, 2009 2:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
че по какво трябва да се различава алгоритъма за програмируема логика от алгоритъма за РС?


Пет Сеп 11, 2009 3:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
най-доброто описание, което съм виждал е на кнут:
Don E. Knuth. Metafont: the Program, стр. 123-131
имам я на хартия, ще трябва да си я потърсиш в нета.

в The METAFONTbook трета глава Curves е много нагледно описан процеса на итерациите


Пет Сеп 11, 2009 5:17 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 20, 2005 5:02 pm
Мнения: 108
Мнение 
Всъщност, едва ли се различава много...

От една страна - С vs. HDL&
Най-същественото е, че не можеш да пишеш на С за FPGA да кажем - просто цялата идеология е различна. Вярно, че се правят опити за FPGA С компилатори, но това не е много сериозно. Писането за процесор и за логика е коренно различно - ако си опитвал, ще ме разбереш. Следователно и алгоритъмът ще се различава малко. Споменах вече, че floating point на С не се превежда така лесно в логиката - просто такова животно няма и трябва сам да си го напишеш (или да ползваш FPU ядро да речем).

От друга страна:
Липсва ми достатъчно информация изобщо за алгоритъма за смятане на Безие - желателно максимално опростен.
Ако ти е лесно да обърнеш полиномиалното представяне, да кажем от тук: Bezier curve from Wikipedia в HDL описание - можеш да подскажеш малко. Според мен не е толкова лесно.

Благодаря


Пет Сеп 11, 2009 5:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Мммм защо да е проблем, какво ти пречи да си вкараш FPU ядро което да се занимава само с floating point-а? Не съм заглеждал алгоритъма в детайло, може да е удобен за чисто логическо обработване без интерпретиране на операции с плаваща запетая, но не малко приложения просто вкарват FPU в логиката.


Пет Сеп 11, 2009 5:36 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
ДедоБоре написа:
най-доброто описание, което съм виждал е на кнут:
Don E. Knuth. Metafont: the Program, стр. 123-131
имам я на хартия, ще трябва да си я потърсиш в нета.

в The METAFONTbook трета глава Curves е много нагледно описан процеса на итерациите


Айде някой да черпи по една бира :)
или ето тук:
http://www.woodpecker.org.cn:9081/doc/2 ... mfbook.pdf

В самата директория http://www.woodpecker.org.cn:9081/doc/2 ... /MetaPost/ има и други интересни книжки по темата. В началото на metafun-s.pdf има доста за въпросните криви.


Прикачени файлове:
mfbook.pdf [1.57 MiB]
176 пъти
Пет Сеп 11, 2009 6:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Разликата между алгоритмични езици и езици за описание на хардуер (HDL) е огромна... zaphod най-вероятно се шегува ;-)

Конкретно по темата: Първата стъпка при PLD е да дефинираш "черната кутия". На входа на тая кутия трябва да подадеш четирите точки. Може да имаш шина през която да ги записваш във вътрешни регистри, или за всяка точка да имаш по два порта съответстващи на X & Y координати.
На изхода обаче "крива" няма как да изкараш. Обикновено подходите са два:
1) Подаваш X,Y координати а на изхода излиза цвят на пиксел според това дали през съответната точка минава крива или не. Тоя подход е удачен ако ще показваш резултатите на дисплей.

2) Подаваш t (число между 0 и 1) и получаваш точка. Може и само клок да подаваш и през някаква стъпка да изплюваш координати на точки от кривата.

Първия случай доста ще те изпоти предполагам, затова по-добре се ориентирай към втория или подобен нему. Но въпросът е че и при двата като разпишеш какво ти е дадено (входни портове) може да помислиш как да изкараш каквото трябва на изходните портове. В случая формулите на Безие не са чак толкова сложни.

Изображение

Просто приемаш че Px са ти вектори в двумерно пространство, разписваш формулата... и си готов ;-)


Пет Сеп 11, 2009 6:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
не се шегувам миро, алгоритъма за крива на безие е един, а човека явно пита за имплементация, а не за алгоритъм. имплементацията е езиково зависима, а не алгоритъма.


Съб Сеп 12, 2009 9:28 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Алгоритъмът е поредица от ясни инструкции как от точка А да стигнеш до точка Б
Кривата на безие се описва с формула, която дава зависимостта на точка Б от точка А, но не описва пътя между тях. И както при всички формули може да се използват множество алгоритми за тяхното пресмятане.
При РС обикновено се използват алгоритми, защото алгоритмичните езици са много по-масови.
При PLD е обратно - алгоритмичните езици са пълна екзотика, работи се с модели, описания и схеми...


Съб Сеп 12, 2009 11:18 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
абе ако оставим настрана езиковите спорове кое е алгоритъм, кое формула и кое не знам си кво, базовия алгоритъм за крива на безие е следния:
имаме началните N точки, свързваме ги с отсечки и получаваме N-1 отсечки. пускаме по всяка отсечка да се движи точка от началото до края и. повтаряме процедурата за тези движещи се N-1 точки и така до достигане на една единствена точка. тази точка ни е "писалката" която чертае кривата на безие.
от тази рекурсивна дефиниция е изведена и горната формула, за частен случай от 4 точки. самия алгоритъм е пределно прост и ясен и човек може да го имплементира на всеки "език" който владее, аз лично мога да го направя и на аналогова схема с операционни усилватели. точно затова предположих че питащия търси не алгоритъм, а частично или напълно готова имплементация, която вече е специфична според "езика" на който се прави.


Нед Сеп 13, 2009 10:25 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
zaphod написа:
аз лично мога да го направя и на аналогова схема с операционни усилватели


Ето го истинският изрод. :D


Пон Сеп 14, 2009 12:14 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Реконструктор написа:
zaphod написа:
аз лично мога да го направя и на аналогова схема с операционни усилватели


Ето го истинският изрод. :D


То много неща на операционни усилватели стават по лесно от колкото да пишеш код :)


Пон Сеп 14, 2009 2:15 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
Той и затова се казва "Операционен" усилвателя - защото е мислен да прави математически Операции със сигналите.


Пон Сеп 14, 2009 9:47 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 13 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 0 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни