Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
 Аватар для Dozen
8 / 8 / 0
Регистрация: 24.10.2010
Сообщений: 36

Снежинка алгоритмом Брезенхема

11.09.2011, 13:18. Показов 3536. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите плз как реализовать снежинку алгоритмом брезенхема
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.09.2011, 13:18
Ответы с готовыми решениями:

Звезда Алгоритмом Брезенхема
Помогите пожалуйста, нужно в паскале написать программу, которая должна выводить указанное количество 5-тиугольных звезд на экране в...

управление мощной нагрузкой алгоритмом Брезенхема
обдумываю регулятор мощности активной нагрузкой (нагреватель порядка 5 кВт). Остановился на алгоритме Брезенхема. Суть в том чтоб сделать...

Имеется 3 аналогичных кода, связанных с алгоритмом Брезенхема!
Имеется 3 аналогичных кода, связанных с алгоритмом Брезенхема!Нужно объединить коды программ в 1, и чтобы было все на одной форме...То есть...

19
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
11.09.2011, 15:02
Алгоритм сюда хоть выложи!!
1
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
11.09.2011, 18:26
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void drawLine(int x1, int y1, int x2, int y2)
{
    int deltaX = abs(x2 - x1);
    int deltaY = abs(y2 - y1);
    int signX = x1 < x2 ? 1 : -1;
    int signY = y1 < y2 ? 1 : -1;
    int error = deltaX - deltaY;
 
    for (;;)
    {
        setPixel(x1, y1);
 
        if(x1 == x2 && y1 == y2)
            break;
 
        int error2 = error * 2;
 
        if(error2 > -deltaY)
        {
            error -= deltaY;
            x1 += signX;
        }
 
        if(error2 < deltaX)
        {
            error += deltaX;
            y1 += signY;
        }
    }
}
Источник: Алгоритм Брезенхэма (wikipedia)

Снежинки
0
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
11.09.2011, 18:33
kzru_hunter, читай тему внимательнее, при чем тут линия, он про снежинку говорит!!!
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
11.09.2011, 19:25
я и так внимательно прочитал.
пусть линиями её рисует.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.09.2011, 19:32
Цитата Сообщение от kzru_hunter Посмотреть сообщение
пусть линиями её рисует.
- про полигоны слыхать не приходилось ?
________________________________________ _________

и понятия не имею, какой там алгоритм ...
Миниатюры
Снежинка алгоритмом Брезенхема  
Вложения
Тип файла: zip regular-polygons-bent.zip (5.4 Кб, 25 просмотров)
Тип файла: zip regular-polygons-bent.exe.zip (291.1 Кб, 23 просмотров)
0
 Аватар для Dozen
8 / 8 / 0
Регистрация: 24.10.2010
Сообщений: 36
11.09.2011, 19:42  [ТС]
спасибо за ответы)
про полигоны я читала ,
просто мне надо нечто подобное ,без всяких ухищрений-
наверное тут линии идеально подходят ,просто не совсем понимаю в какой цикл их нужно загнать
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.09.2011, 19:45
в цикл не надо - сделайте на кнопку последовательно MoveTo, LineTo на канве формы, и будет вам счастье .
0
 Аватар для Dozen
8 / 8 / 0
Регистрация: 24.10.2010
Сообщений: 36
11.09.2011, 19:47  [ТС]
это же уже будет не Брезенхем
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.09.2011, 19:58
ой, я забыл, у вас там условие

ну а эта ссылка - снежинки - это было круто , типа, "мама, я такую же хочу"
аж всплакнул от умиления

Добавлено через 2 минуты
а вы то, что предложил уважаемый kzru_hunter, пробовали ?

Добавлено через 6 минут
для начала попытка перевода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void line(x0,x1,y0,y1)
}
  int deltax = abs(x1-x0);
  int deltay = abs(y1-y0);
  double error = 0;
  double deltaerr = deltay/deltax;
  int y = y0;
  for (x=x0;x<x1;x++) {
    plot(x,y);
    error = error+deltaerr;
    if (error>=0.5) {
      y = y+1;
        error = error-1.0;
    }
  }
}
0
 Аватар для Dozen
8 / 8 / 0
Регистрация: 24.10.2010
Сообщений: 36
11.09.2011, 19:58  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
int x,y,dx,dy;
float e;
x=100;
y=200;
dx=200-x;
dy=300-y;
e=dy/dx-0.5;
 for (int i =1 ;i<=x;i++)
{
Canvas->Pixels[x][y] = clGreen;
while(e>=0)
{
y=y+1;
e=e-1;
}
 
//x=x+1;
e=e+dy/dx;
}
//////////////////////////
 
 
x=200;
y=300;
dx=400-x;
dy=600-y;
e=dy/dx-0.5;
 for (int i =1 ;i<=x;i=i+1)
{
Canvas->Pixels[x][y] = clRed;
while(e>=0)
{
//y=y+1;
e=e-1;
}
 
x=x-1;
e=e+dy/dx;
}
////////////////////////////////
x=300;
y=300;
dx=500-x;
dy=500-y;
e=dy/dx-0.5;
 for (int i =1 ;i<=x;i=i+1)
{
Canvas->Pixels[x][x] = clYellow;
while(e>=0)
{
y=y+1;
e=e-1;
}
 
x=x-1;
e=e+dy/dx;
так я вывожу линию на 180, 45 и 90 градусов, это как бы первое задание
а второе нарисовать снежинку, и надо как-то забить в цикл ,что бы в цикле линии через определённый промежуток градусов рисовались
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.09.2011, 19:59
выше переывод кода из википедии, может, натолкнет
0
 Аватар для Dozen
8 / 8 / 0
Регистрация: 24.10.2010
Сообщений: 36
11.09.2011, 20:00  [ТС]
сейчас буду смотреть, благодарю
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.09.2011, 20:05
ой, там самый первый код - точка , вам ккой надо ?

Добавлено через 4 минуты
по ходу...
Алгоритм Брезенхэма, реализация
0
 Аватар для Dozen
8 / 8 / 0
Регистрация: 24.10.2010
Сообщений: 36
11.09.2011, 20:06  [ТС]
мне надо как-то линию рисовать в цикле , примерно через каждые 10 градусов, что бы получилась что-то подобное снежинке
может как-то можно это реализовать через алгоритм Брезенхема для окружности?
C++
1
2
3
4
5
6
7
8
float x,y,t;
Form3->Canvas->MoveTo(100,100);
for (t=0;t<2*3.14;t=t+0.01)
 {
  x=50*(0.5+2*cos(t));
  y=50*(0.2+2*sin(t));
Form3->Canvas->LineTo(x+100,y+100);
 }
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.09.2011, 20:21
Цитата Сообщение от Dozen Посмотреть сообщение
так я вывожу линию на 180, 45 и 90 градусов, это как бы первое задание
а второе нарисовать снежинку, и надо как-то забить в цикл ,что бы в цикле линии через определённый промежуток градусов рисовались
так у вас получается, ну и выводите через каждые 15°
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
11.09.2011, 20:24
интересно херней страдать?
всё есть в википедии. ссылку давал в пред. посте, но функцию давал в пред. посте, но как всегда проигнорировали. просто вставляете оттуда в свой проект функции для рисования линий и окружности и останется только в тетради рассчитать, что и как будет нарисовано. потом просто эти функции вызываете и всё. проще не куда.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.09.2011, 20:26
а поговорить ?..
1
 Аватар для Dozen
8 / 8 / 0
Регистрация: 24.10.2010
Сообщений: 36
11.09.2011, 21:29  [ТС]
та никто не игнорировал спасибо за ссылки
просто я не понимаю как это связать на практике
1
 Аватар для Dozen
8 / 8 / 0
Регистрация: 24.10.2010
Сообщений: 36
17.09.2011, 14:01  [ТС]
может кому-то пригодится

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void __fastcall TForm3::Brez(int x, int y, int x2, int y2)
{
 int dx = abs(x2 - x);
 int dy = abs(y2 - y);
 int Xm = x < x2 ? 1 : -1;
 int Ym = y < y2 ? 1 : -1;
 int e = dx - dy;
 
 for(;;)
 {
 Canvas->Pixels[x][y]=clRed;
 if(x==x2 && y==y2)
 break;
 int e2 = e * 2;
 
 if(e2 > -dy)
 {
 e -= dy;
 x += Xm;
  }
 
 if(e2 < dx)
 {
 e += dx;
 y += Ym;
 }
  }
 
}
void __fastcall TForm3::Button2Click(TObject *Sender)
{
 int k=0; int m=150; int x=170; int y=180;
 int x2, y2;
 for(int i=k; i<=360; i+=10)
   {
 x2=x+m*cos(i*radian);
 y2=y-m*sin(i*radian);
 Brez(x2,y2,x,y);
}
  }
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2011, 14:01
Помогаю со студенческими работами здесь

Netbeans ( для чайника). Трудности с алгоритмом Брезенхема и рисованием прямой
Добрый всем!:-private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { ...

Заполнить многоугольник методом Системы Активных Ребер и сгладить границы алгоритмом Брезенхема.
Задача состоит в том, что мне передается многоугольник, нужно выполнить его заливку с помощью Системы Активных Ребер (САР) и сгладить...

Разработать программу для отображения паралелограмма алгоритмом Брезенхема для вычерчивания отрезков
Разработать программу для отображения параллелограмма алгоритмом Брезенхема для вычерчивания отрезков

Шифрование алгоритмом моноалфавитной подстановки и Алгоритмом Цезаря
Здравствуйте, помогите исправить код чтобы выводилось одинаково зашифрованное сообщение, и методом моноалфавитной подстоновкой и методом...

Снежинка
помогите плиз((( мне в курсовике есть задание нарисовать снежинку в Pascalе... а я не знаю как это делать((( не могли бы вы прислать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru