Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Кривая Безье.
 
 автор: Евгений Петров   (31.10.2005 в 18:56)   письмо автору
 
 

Господа программисты, подскажите пожалуйста как можно сгладить примерно такой график, т.е. нарисовать через точки кривую Безье.
Даны только координаты красных точек.

   
 
 автор: cheops   (31.10.2005 в 19:41)   письмо автору
 
   для: Евгений Петров   (31.10.2005 в 18:56)
 

Где дело происходит в PHP? или другой среде?

   
 
 автор: Евгений Петров   (31.10.2005 в 19:44)   письмо автору
 
   для: cheops   (31.10.2005 в 19:41)
 

В нем самом. :)

   
 
 автор: cheops   (01.11.2005 в 13:06)   письмо автору
 
   для: Евгений Петров   (31.10.2005 в 19:44)
 

Плохо :))) Везде имеются готовые функции, в PHP такого не встречал - тогда необходимо пользоваться исходными уравнениями
x(t) = (1—t)3x0 + 3t(1—t)2x1 + 3t2(1—t)x2 +t3x3
y(t) = (1—t)3y0 + 3t(1—t)2y1 + 3t2(1—t)y2 +t3y3

   
 
 автор: Евгений Петров   (01.11.2005 в 19:31)   письмо автору
 
   для: cheops   (01.11.2005 в 13:06)
 

И что здесь где есть что? :)))
Ну вот например точки:
+---+---+---+---+---+
| X | 1 | 3 | 7 | 4 |
+---+---+---+---+---+
| Y | 5 | 0 | 3 | 4 |
+---+---+---+---+---+

Как ки ним применить эту формулу?

   
 
 автор: cheops   (02.11.2005 в 00:51)   письмо автору
 
   для: Евгений Петров   (01.11.2005 в 19:31)
 

Пиведённые выше формулы для параметра t = [0, 1]. А x0, x1, x2, x3 и y0, y1, y2, y3 определяются по схеме
+---+---+---+---+---+ 
| N | 0 | 1 | 2 | 3 | 
+---+---+---+---+---+ 
| X | 1 | 3 | 7 | 4 | 
+---+---+---+---+---+ 
| Y | 5 | 0 | 3 | 4 | 
+---+---+---+---+---+

Поэтому если вам нужно 100 точек делите отрезок [0,1] на 100 частей и подставляйте вместо t - должна получится кривая Безье.

   
 
 автор: Евгений Петров   (02.11.2005 в 02:12)   письмо автору
 
   для: cheops   (02.11.2005 в 00:51)
 

Спасибо, буду разбираться.

   
 
 автор: Евгений Петров   (12.11.2005 в 19:45)   письмо автору
 
   для: Евгений Петров   (02.11.2005 в 02:12)
 

Cheops снова обращаюсь к вам за помощью. Дошел наконец то до рисования кривой, только не очень понял что за отрезок [0,1] ? :) Заранее огромное спасибо.

   
 
 автор: cheops   (12.11.2005 в 23:15)   письмо автору
 
   для: Евгений Петров   (12.11.2005 в 19:45)
 

Это параметрические уравнения... хотя нет их никто не любит, а тут всё просто до безобразия: у нас имеется 4 точки, необходимо по ним построить кривую Безье из 10 точек. Для этого берём отрезок [0,1] и делим его на десять частей, т.е. вместо t в уравление подставляем
t = 0.0
t = 0.1
t = 0.2
...
t = 0.9
t = 1.0

Подставляем эти десять t в приведённые выше уравнения - получается 10 точек (x,y). Захотелось увеличить точность и вычислить не 10, а 100 точек - делем отрезок [0,1] на 100 частей
t = 0.00
t = 0.01
t = 0.02
...
t = 0.98
t = 0.99
t = 1.00

подставляем t в уравнения - получаем 100 точек.

   
 
 автор: Евгений Петров   (13.11.2005 в 00:30)   письмо автору
 
   для: cheops   (12.11.2005 в 23:15)
 

Ага, спасибо, а че кривую только через 4 точки провести можно? :)))

   
 
 автор: cheops   (13.11.2005 в 13:53)   письмо автору
 
   для: Евгений Петров   (13.11.2005 в 00:30)
 

В общем нет... /*пытаясь наморщить остатки мат.аппарата*/ там достаточно много методов, можно и через три, можно сплайнами... Но Безье требует 4.

   
 
 автор: Евгений Петров   (13.11.2005 в 17:55)   письмо автору
 
   для: cheops   (13.11.2005 в 13:53)
 

А какими др. способами можно сгладить график? И как? :) Заранее огромное спасибо

   
 
 автор: cheops   (13.11.2005 в 23:22)   письмо автору
 
   для: Евгений Петров   (13.11.2005 в 17:55)
 

Я сплайнами пользуюсь... правда на PHP у меня таких задач не возникало, если хотите могу порыться в поисках C-функции...

   
 
 автор: Евгений Петров   (14.11.2005 в 00:58)   письмо автору
 
   для: cheops   (13.11.2005 в 23:22)
 

Да нет, спасибо, я лучше в yandex поищу. :)

   
 
 автор: mannnz   (14.11.2005 в 01:36)   письмо автору
 
   для: cheops   (13.11.2005 в 23:22)
 

>Я сплайнами пользуюсь... правда на PHP у меня таких задач не
>возникало, если хотите могу порыться в поисках C-функции...
А вот я бы не отказался :) . Мне очень интересны реализации сглаживания кривых на С.

   
 
 автор: cheops   (14.11.2005 в 14:56)   письмо автору
 
   для: mannnz   (14.11.2005 в 01:36)
 

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

   
 
 автор: cernos   (14.11.2005 в 15:26)   письмо автору
 
   для: cheops   (14.11.2005 в 14:56)
 

А сглаживание на php можете привести!?!

   
 
 автор: cernos   (15.11.2005 в 16:20)   письмо автору
 
   для: cernos   (14.11.2005 в 15:26)
 

----

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования