Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Применение рекурсии




Применение рекурсии. Сглаживание кривых.

Лекция №3

И интерактивные системы

Графическое и геометрическое моделирование


СОДЕРЖАНИЕ

3.1 Применение рекурсий для решения ряда задач 3.2 Построение дерева Пифагора 3.3 Сглаживание кривых в двухмерном пространстве. Понятие В-сплайна. Использование В-сплайна для сглаживания кривых  

Ряд задач может быть решен с применением рекурсии. Вот один из примеров:

Для заданных трех чисел Xc, Yc и r соединить точки с координатами

Xi=Xc+r*cosfi

Yi=Yc+r*sinfi

(i=0,1,2,3,4,5; fi=i*144°)

что в результате дает звезду. Последовательно (как часть задачи!) выполнить подобную работу еще 5 раз, но теперь с другими тремя числами:

Xc’=Xc+2*r*cosf

Yc’=Yc+2*r*sinf

r’=0.5

(j=0,1,2,3,4; jj=36°+j*72°)

Выполнение задачи продолжается до тех пор, пока задаваемая величина г будет не меньше 0.1. Для начальной (или главной) задачи задаваемые числа будут равны Xc=0, Yc = 0, r=1. Как и ранее, будем использовать автоматическое масштабирование и размещение. Ниже приводится программа, решающая поставленную задачу.

 

/*STARS: Звезды различных размеров*/

#include "math.h"

#include "stdio.h"

FILE *fp;

 

struct {float xx; float yy; int ii;} s;

 

void pfopen(){ fp=fopen("scratch", "wb");}

 

void pmove(float x,float y)

{ s.xx=x; s.yy=y; s.ii=0; /* 0 = перо поднято */

fwrite(&s, sizeof s, 1, fp);

}

 

void pdraw(float x,float y)

{ s.xx=x; s.yy=y; s.ii=1; /* 1 = перо опущено */

fwrite(&s, sizeof s, 1, fp);

}

 

void pfclose(){ fclose(fp); }

void star(float xC,float yC,float r)

{ float phi, r_half, r_double,

factor=0.0174533; /* factor = pi/180 */

int i;

if (r<0.1) return;

pmove(xC+r,yC);

for (i=1; i<=5; i++)

{ phi=i*144*factor;

pdraw(xC+r*cos(phi), yC+r*sin(phi));

}

r_half=0.5*r; r_double=2*r;

for (i=0; i<5; i++)

{ phi=(36+i*72)*factor;

star(xC+r_double*cos(phi), yC+r_double*sin(phi), r_half);

}

}

 

void main()

{ pfopen();

star(0.0,0.0,1.0);

pfclose();

}

Рис. 3.1 Результат работы программы STARS

После этой программы должна быть вызвана программа GENPLOT, описанная в предыдущем параграфе, результат их совместной работы показан на рис. 3.1.





Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 386; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.