www.demoscene.ruenglish version
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Фракталы
На страницу 1, 2, 3, 4  След.
 
Начать новую тему   Ответить на тему    Список форумов DemoScene.Ru -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
0xDC



Зарегистрирован: 16.10.2011
Сообщения: 3


СообщениеДобавлено: Вс Окт 16, 2011 00:50    Заголовок сообщения: Фракталы Ответить с цитатой

Доброго времени суток. Сейчас разбираюсь с фракталами. а именно построение фрактала Коха. Сам отрезок просто в виде линии Коха-сделал, но нужно сделать в виде снежинки. Проблема в том. что алгоритм реализован при помощи метода системы счисления по основанию 4. Он использует улгы. При построении в ввиде треугольника, получается, что-то непонятное. Вот код:

uses CRT, Graph;

const
p = 4;

var
gd, gm: Integer;
i, j: Integer;
x, y, l: Real;
a: Real;
n, m, k: Integer;

begin
gd := Detect;
InitGraph(gd, gm, 'c:\bp\bgi');
x := 0;
y := 400;
l := 640/(exp(p*ln(3)));
MoveTo(Round(x), Round(y));
for i:=0 to Round(exp(p*ln(4)))-1 do
begin
a := 0;
n := i;
k := 0;
repeat
m := n mod 4;
n := n div 4;
case m of
0: a := a + 0; //По идее при создании снежинки
1: a := a - pi/3;//углы надо поменять на 0:60;
2: a := a + pi/3;// 1:2pi/3 (вобщем увеличить в 2
3: a := a + 0; // раза или я не прав?
end;
inc(k);
until k >= p;
x := x + l*cos(a);
y := y + l*sin(a);
LineTo(Round(x), Round(y));
end;
ReadKey;
CloseGraph;
end.

Подскажите как сделать тем же методом(он понятен и прост) только для треугольника, чтобы получить снежинку?

Пробовал также строить по точкам( т.е находить середину, строить равносторонний треугольник на этом основании и т.д) но там слишком много считать+если пытаться построить обратную снежинку, то придется все переделывать, по сис. счисления все просто.
Вобщем начинающий демомэйкер ждет помощи)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Вс Окт 16, 2011 02:16    Заголовок сообщения: Ответить с цитатой

извините за оффтоп:

а что, в Таганрогском институте до сих пор на Турбопаскале учат программировать? Smile

ЗЫ: использование библиотеки Graph отдельная жесть канеш ))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Manwe
Администратор сайта


Зарегистрирован: 21.09.2007
Сообщения: 1424


СообщениеДобавлено: Вс Окт 16, 2011 14:39    Заголовок сообщения: Ответить с цитатой

"фрактала Коха" напомнил мне палочку Коха.
И ещё вот это:
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
SCRIMERS



Зарегистрирован: 21.03.2008
Сообщения: 270
Откуда: Sevastopol

СообщениеДобавлено: Вс Окт 16, 2011 15:08    Заголовок сообщения: Re: Фракталы Ответить с цитатой

[quote="0xDC"] но там слишком много считать/quote]
Ну извини.
Считать там немного.
Ты можешь пойти двумя путями, строить снежинку (или любой другой объект) в начале или конце отрезка (линии). Либо взять середину линии и построить там фигуру. Используй формулы вписанного (описанного) круга и треуглоьника, например. На бумажке расчитаешь, а потом закодишь по готовым формулам.
_________________
на русской Сцене мы удивляем друг друга тем, что вообще что-то делаем (с) manwe
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
0xDC



Зарегистрирован: 16.10.2011
Сообщения: 3


СообщениеДобавлено: Пн Окт 17, 2011 17:42    Заголовок сообщения: Ответить с цитатой

А чем Паскаль и Graph плохи? алгоритм построения фрактала, хоть на паскале хоть на плюсах, одинкаов-вопрос в реализации.А те кто используют готовые процедуры на всяких там Шарпах и прочих удобных системках, чаще всего бывает не знают элементарных вещей. Напишу на паскале, прикручу к Делфи-делов-то. Лучше по делу подскажите, чем устраивать холивары на тему что лучше.

ЗЫ. Открою маленький секрет, на ТУРБОПАСКАЛЕ учат везде.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
0xDC



Зарегистрирован: 16.10.2011
Сообщения: 3


СообщениеДобавлено: Пн Окт 17, 2011 17:55    Заголовок сообщения: Re: Фракталы Ответить с цитатой

SCRIMERS писал(а):

Считать там немного.
Используй формулы вписанного (описанного) круга и треуглоьника, например. На бумажке расчитаешь, а потом закодишь по готовым формулам.
Для оьратной снежинки придется пересчитывать, а для углов-поменять направление. Так вот, именно методом системы счисления по 4. есть мысли как сделать?. Увеличивал угол, так как если строить из треугольника, то 60+60, первый отрезок должен быть под 120, а остальные на 60 больше, но как то коряво выходит.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
SCRIMERS



Зарегистрирован: 21.03.2008
Сообщения: 270
Откуда: Sevastopol

СообщениеДобавлено: Вт Окт 18, 2011 20:47    Заголовок сообщения: Re: Фракталы Ответить с цитатой

0xDC писал(а):
Для оьратной снежинки придется пересчитывать, а для углов-поменять направление. Так вот, именно методом системы счисления по 4. есть мысли как сделать?. Увеличивал угол, так как если строить из треугольника, то 60+60, первый отрезок должен быть под 120, а остальные на 60 больше, но как то коряво выходит.

Прости, я тебя кажется не правильно понял.

Вот это может поможет http://ru.wikipedia.org/wiki/Кривая_Коха . Там ещё ссылка внизу есть - может алгоритм придумаешь. С сорцами - только искать.

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

Я представляю себе задачу так (т.е. то как ты хочешь переделать рисование).
Есть алгоритм, который рисует фрактал линиями. Тебе надо вместо линий рисовать, например, квадрат. Значит ты можешь рисовать либо в точках соединения линий, либо в середине линий.
Анализируем код:
Код:

x := 0;
 y := 400;
MoveTo(Round(x), Round(y));
 for i:=0 to Round(exp(p*ln(4)))-1 do
 begin
 a := 0;
 n := i;
 k := 0;
 repeat
 m := n mod 4;
 n := n div 4;
 case m of
 0: a := a + 0; //По идее при создании снежинки
 1: a := a - pi/3;//углы надо поменять на 0:60;
 2: a := a + pi/3;// 1:2pi/3 (вобщем увеличить в 2
 3: a := a + 0; // раза или я не прав?
 end;
 inc(k);
 until k >= p;
 x := x + l*cos(a);
 y := y + l*sin(a);
 LineTo(Round(x), Round(y));
 end;

Алгоритм получится такой:

задание начальных значений и положения;
Код:
[b]ЦИКЛ[/b]
формирование след. координаты для отрисовки;
[i]отрисовка;[/i]
[b]Конец Цикла[/b]

В отрисовку можно что-угодно запихать и отрисовать в данных координатах.
_________________
на русской Сцене мы удивляем друг друга тем, что вообще что-то делаем (с) manwe
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
sanbase



Зарегистрирован: 16.03.2012
Сообщения: 47


СообщениеДобавлено: Вт Апр 10, 2012 21:28    Заголовок сообщения: Ответить с цитатой

0xDC писал(а):
ЗЫ. Открою маленький секрет, на ТУРБОПАСКАЛЕ учат везде.

Открою маленькой секрет, на паскале равно как и на делфи учат (и работают) только в России. Почему то ни этот язык, ни этот продукт на западе распостранения не имеют. Программированию учат на C++.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Manwe
Администратор сайта


Зарегистрирован: 21.09.2007
Сообщения: 1424


СообщениеДобавлено: Вт Апр 10, 2012 22:15    Заголовок сообщения: Ответить с цитатой

Я, конечно, могу что-то путать, но программированию учат на том языке, на котором, собственно, надо решать ту или иную конкретную задачу. А вот ПРОЕКТИРОВАНИЮ учат не на "языке" вообще. Собственно, на чём потом закодить - не столь важно. Вчера надо было программировать на C++ а сегодня ту же задачу надо решать уже на C# например. А завтра ещё на чём-нибудь. Языки - дело наживное.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
sanbase



Зарегистрирован: 16.03.2012
Сообщения: 47


СообщениеДобавлено: Вт Апр 10, 2012 23:36    Заголовок сообщения: Ответить с цитатой

Manwe писал(а):
Я, конечно, могу что-то путать, но программированию учат на том языке, на котором, собственно, надо решать ту или иную конкретную задачу. А вот ПРОЕКТИРОВАНИЮ учат не на "языке" вообще. Собственно, на чём потом закодить - не столь важно. Вчера надо было программировать на C++ а сегодня ту же задачу надо решать уже на C# например. А завтра ещё на чём-нибудь. Языки - дело наживное.

Ну не совсем так. Навыкам ПРОГРАММИРОВАНИЯ учат все же на языке программирования, иначе это невозможно. На западе таким языком (на котором учат писать программы) сейчас является C++. Практически все современные языки (Java, PHP, C#, GLSL) имеют С-образный синтаксис.
Собственно моя реплика была о том, что далеко не "везде" учат на турбопаскале. Меня (в свое время) вообще учили программированию на FORTRAN'е. Cи а потом C++ я осваивал самостоятельно. Что вообще-то было минусом, поскольку приходилось часто "изобретать велосипед", но я мог осваивать язык в процессе работы. А теперь мне весьма грустно видеть, когда из России приезжают программисты знающие только Delphi, которое тут нафиг никому не нужно. А синтаксис Паскаля довольно ублюдочный (IMHO) и переучиваться на C++ весьма болезненно. И времени на переучивания у них нет. Народ элементарно не может найти работу.


Последний раз редактировалось: sanbase (Вт Апр 10, 2012 23:41), всего редактировалось 2 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Вт Апр 10, 2012 23:38    Заголовок сообщения: Ответить с цитатой

sanbase писал(а):
А теперь мне весьма грустно видеть, когда из России приезжают программисты знающие только Delphi,которое тут нафиг никому не нужо. А синтаксис Паскаля довольно ублюдочный (IMHO) и переучиваться на C++ весьма болезненно. И времени на переучивания у них нет. Народ элементарно не может найти работу.


Мышконакидатели-дельфисты и тут нафиг никому ненужны Smile

А нормальным программерам всё-равно на чём писать. Perl, Python, php, Java, C++, Active Script, Ruby. Всё это востребованно, и судя по тому, что Borland ещё не отказался от разработки Delphi - на нём не только в Рашке делают программы. Да и база (исходники, библиотеки, компоненты, документация) под Делфи очень обширная, глупо отказываться. Помоему современный компилятор Borland'a умеет и под МакОС компилировать проекты.

ЗЫ: Сам писал на Делфях в 95-98 годах. Начинал ещё с Dellphi 1.0 под Win 3.1
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sanbase



Зарегистрирован: 16.03.2012
Сообщения: 47


СообщениеДобавлено: Ср Апр 11, 2012 01:01    Заголовок сообщения: Ответить с цитатой

BiTL писал(а):
А нормальным программерам всё-равно на чём писать. Perl, Python, php, Java, C++, Active Script, Ruby.

Да не совсем. При поступлении на работу, тебе дают тесты на том языке, который нужен работодателю. И разговоры, мол "да я выучу когда надо будет" не катят. Тесты серьезные, на ГЛУБОКОЕ знание языка. Так что тут "общий подход" не проходит. Основных языков (наиболее востребованных) сейчас два - C++ и Java. И если ты сдаешь тест на Java, то Java Biulder (где все классы и методы открываются мышкой) тебе не дают. Дают листок бумаги и карандаш. А далее вот тебе список вопросов на трех листах, час времени - вперед и с песней Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Ср Апр 11, 2012 02:36    Заголовок сообщения: Ответить с цитатой

sanbase писал(а):
BiTL писал(а):
А нормальным программерам всё-равно на чём писать. Perl, Python, php, Java, C++, Active Script, Ruby.

Да не совсем. При поступлении на работу, тебе дают тесты на том языке, который нужен работодателю. И разговоры, мол "да я выучу когда надо будет" не катят. Тесты серьезные, на ГЛУБОКОЕ знание языка. Так что тут "общий подход" не проходит. Основных языков (наиболее востребованных) сейчас два - C++ и Java. И если ты сдаешь тест на Java, то Java Biulder (где все классы и методы открываются мышкой) тебе не дают. Дают листок бумаги и карандаш. А далее вот тебе список вопросов на трех листах, час времени - вперед и с песней Smile


Если я решу искать работу связанную с конкретным языком, то я заранее покурю маны и попишу что-нибудь на нём.

Читал как-то статью Криса Касперского (не путать с дядей Женей), где он описывал своё устройство на работу в США: http://samag.ru/archive/article/1670 (к сожалению в статье нет той истории, про тестовое задание, незнаю где найти, но она была смешная) Крис в теме Smile Не так всё страшно, и в России полно толковых людей, которые бы с лёгкостью получили работу программера в любой стране. А что там в Канаде за наплыв "дельфистов", это я хз ) В Канаду много кто едет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
numerouno



Зарегистрирован: 04.09.2011
Сообщения: 390


СообщениеДобавлено: Ср Апр 11, 2012 06:10    Заголовок сообщения: Ответить с цитатой

откуда мода Ruby? поветрие с Канады и Пендостана? знакомый плюется от него и нервно матерится.. я тоже бы иногда ругнулся Cool
_________________
вначале было крактро, а потом такое началось,когда праникся дэмоспиритом апасля вайнспирита!1
Аднажды на ДемосценеРупоявился невежа. его с позором прогнали. Так появились тролли.
миниатюры 256bytes.net в одном флаконе
Я программист, Зип Файл!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
numerouno



Зарегистрирован: 04.09.2011
Сообщения: 390


СообщениеДобавлено: Ср Апр 11, 2012 06:15    Заголовок сообщения: Ответить с цитатой

BiTL писал(а):

Читал как-то статью Криса Касперского (не путать с дядей Женей), где он описывал своё устройство на работу в США: http://samag.ru/archive/article/1670 (к сожалению в статье нет той истории, про тестовое задание, незнаю где найти, но она была смешная) Крис в теме Smile Не так всё страшно, и в России полно толковых людей, которые бы с лёгкостью получили работу программера в любой стране. А что там в Канаде за наплыв "дельфистов", это я хз ) В Канаду много кто едет.


ерунда у Криса написано, про H1B абстоятельства изменились, да и с работой тоже. вот, што на крэглисте есть - программер на Паскале, реверсер ActiveX в вирусном ПО, Джава и прочее.
_________________
вначале было крактро, а потом такое началось,когда праникся дэмоспиритом апасля вайнспирита!1
Аднажды на ДемосценеРупоявился невежа. его с позором прогнали. Так появились тролли.
миниатюры 256bytes.net в одном флаконе
Я программист, Зип Файл!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов DemoScene.Ru -> Программирование Часовой пояс: GMT + 3
На страницу 1, 2, 3, 4  След.
Страница 1 из 4

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах