Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 16:44   #1
StoneSour
Пользователь
 
Регистрация: 25.02.2010
Сообщений: 18
По умолчанию ковер серпинского

Драсте вот у меня есть лаба которая выводит треугольник серпинского препад говрит нуна немного переделать и получится ковер серпинского н у меня никак неполучается(((



Цитата:
/* Использование рекурсии для построения ковра Серпинского */

/* Задание:
1) Построить ковер Серпинского по правилу.

_________ _________
| | | ___ |
| |---> | |__| |
|________| |________|

*/

#include <GL/glut.h>

typedef float point2[2];

/* исходный треугольник */

point2 v[]={{-1.0, -1.0}, {0.0, 1.0}, {1.0, -1.0 }};

int n=5; // глубина рекурсии

void triangle( point2 a, point2 b, point2 c)
{
/* вывод треугольника, заданного координатами вершин */

glBegin(GL_TRIANGLES);
glVertex2fv(a);
glVertex2fv(b);
glVertex2fv(c);
glEnd();
}

void divide_triangle(point2 a, point2 b, point2 c, int m)
{

/* разбиение треугольника на четыре части путем соединения срединных точек сторон */

point2 v0, v1, v2;
int j;
if(m>0)
{
for(j=0; j<2; j++) v0[j]=(a[j]+b[j])/2;
for(j=0; j<2; j++) v1[j]=(a[j]+c[j])/2;
for(j=0; j<2; j++) v2[j]=(b[j]+c[j])/2;
divide_triangle(a, v0, v1, m-1);
divide_triangle(c, v1, v2, m-1);
divide_triangle(b, v2, v0, m-1);
}
else(triangle(a,b,c)); /* вывод треугольника в конце рекурсии */
}


void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
divide_triangle(v[0], v[1], v[2], n);
glFlush();
}

void myinit()
{

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-2.0, 2.0, -2.0, 2.0); // размеры прямоугольника отсечения заданы относительно размеров окна
glClearColor (1.0, 1.0, 1.0, 1.0);
glColor3f(0.0,0.0,0.0);
}

void
main(int argc, char **argv)
{
// n=atoi(argv[1]);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB );
glutInitWindowSize(1000, 700);
glutCreateWindow("Рекурсия");
glutDisplayFunc(display);
myinit();
glutMainLoop();
}
Изображения
Тип файла: gif sierpinski_carpet.gif (6.4 Кб, 251 просмотров)
StoneSour вне форума Ответить с цитированием
Старый 07.04.2010, 17:59   #2
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Это:
код тут http://forum.vingrad.ru/forum/topic-148304.html
http://ru.wikipedia.org/wiki/Ковёр_Серпинского <= тут есть код на PHP, который очень даже похож на Си
код тут http://www.opita.net/node/169

Последний раз редактировалось Alter; 07.04.2010 в 18:02.
Alter вне форума Ответить с цитированием
Старый 07.04.2010, 20:21   #3
StoneSour
Пользователь
 
Регистрация: 25.02.2010
Сообщений: 18
По умолчанию

у меня кампилятор нераспознает эту библиотеку((
#include<graphics.h>
чем ее мона заменить?
StoneSour вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение кривых Серпинского и Гильберта Delphi KEnt Помощь студентам 3 07.10.2017 11:42