Mayor
Специалист
Offline
|
|
« : 14-09-2007 15:23 » |
|
как очистить экран перед выводом нового фрактала? program derevo; uses graph,crt; var gd,gm:integer; radian1,radian2:real;
procedure line1(x1,x2,x3,x4 : double); begin line(round(x1),round(x2),round(x3),round(x4)); end;
procedure frac1(x1,y1,x2,y2,i:double); var x3,y3,x4,y4,dx,dy,x5,y5 : double; begin if (i>0) then begin line1(x1,y1,x2,y2); i-=1; dx:=(x2-x1) / 2; dy:=(y2-y1) / 2; x3:=x1+dx; y3:=y1+dy; x4:=x3+dy; y4:=y3-dx; x5:=x3-dy; y5:=y3+dx; frac1(x3,y3,x4,y4,i); frac1(x3,y3,x5,y5,i); end;
end;
var ii : integer; x,y,r,a,x0,y0 : double; begin radian1:=-1*pi*10/180; radian2:=pi*10/180;
initgraph(gd,gm,'c:\tp70\bgi'); x0:=100; y0:=200; x:=100; y:=200; r:=sqrt(x*x+y*y); a:=arctan(x/y); for ii :=1 to 100 do begin a+=0.1; frac1(x0,y0,x0+r*sin(a),y0+r*cos(a),8); delay(100); end; delay(5000); exit; frac1(50,50,430,230,8); delay(5000); end.
|
|
|
Записан
|
1n c0de we trust
|
|
|
Sla
|
|
« Ответ #1 : 14-09-2007 15:31 » |
|
запоминать предыдущее состояние цвета, перед выводом нового восстанавливать старое а еще не увидел где меняется/устанавливается цвет
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Sla
|
|
« Ответ #2 : 14-09-2007 15:37 » |
|
во блин, а это что?
i-=1; на каком языке?
а это зачем? radian1:=-1*pi*10/180;
radian1:=-pi/18;
и в коде зачем?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #3 : 14-09-2007 15:45 » |
|
паскаль плюс плюс )
|
|
|
Записан
|
|
|
|
Mayor
Специалист
Offline
|
|
« Ответ #4 : 14-09-2007 17:43 » |
|
паскаль плюс плюс )
да не это я код школьника какого то экспроприировал, в смысле по нему линии учился рисовать ... ваще-то запоминать цвета слишком много ресурсов требует: проще как в элите экран стереть чем нить по быстрому и снова отрисоваться а нашел: cleardevice(); вот только теперь фрактал мерцает как его в буфере нарисовать а потом мгновенно на экран перекинуть?
|
|
« Последнее редактирование: 14-09-2007 17:51 от Mayor »
|
Записан
|
1n c0de we trust
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #5 : 14-09-2007 18:10 » |
|
Mayor1, вручную пиши буфер Если видео-драйвер и видеопамять позволяют, то можно страницы видеопамяти использовать. Функции SetActivePage - для установки страницы вывода и SetVisualPage - для установки отображаемой страницы. На активной выводишь, в это время другая висит на экране, затем меняешь их местами.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Mayor
Специалист
Offline
|
|
« Ответ #6 : 14-09-2007 18:57 » |
|
Mayor1, вручную пиши буфер Если видео-драйвер и видеопамять позволяют, то можно страницы видеопамяти использовать. Функции SetActivePage - для установки страницы вывода и SetVisualPage - для установки отображаемой страницы. На активной выводишь, в это время другая висит на экране, затем меняешь их местами. э типа не помогает program derevo; uses graph,crt; var gd,gm:integer;
procedure line1(x1,x2,x3,x4 : double); begin line(round(x1),round(x2),round(x3),round(x4)); end;
procedure frac1(x1,y1,x2,y2,i:double); var x3,y3,x4,y4,dx,dy,x5,y5 : double; begin if (i>0) then begin line1(x1,y1,x2,y2); i-=1; dx:=(x2-x1) / 1.6; dy:=(y2-y1) / 1.6; x3:=x1+dx; y3:=y1+dy; x4:=x3+dy; y4:=y3-dx; x5:=x3-dy; y5:=y3+dx; frac1(x3,y3,x4,y4,i); frac1(x3,y3,x5,y5,i); end; end;
var ii,w : integer; xc1,yc1,cc1,cc,xc,yc,x,y,r,a,x0,y0 : double; begin initgraph(gd,gm,'c:\tp70\bgi'); x0:=300; y0:=400; x:=80; y:=50; w:=0; r:=sqrt(x*x+y*y); a:=arctan(x/y); cc:=0.7; xc:=x0+cc*r*sin(a); yc:=y0+cc*r*cos(a); cc1:=0.2; xc1:=x0+cc1*r*sin(a); yc1:=y0+cc1*r*cos(a); for ii :=1 to 500 do begin w:=1 xor w; a+=0.05; setactivepage(w); x:=xc+r*sin(a); y:=yc+r*cos(a); x0:=xc1-cc1*r*sin(cc1+a); y0:=yc1+cc1*r*cos(cc1+a); xc1:=x0+cc1*r*sin(a); yc1:=y0+cc1*r*cos(a); frac1(x0,y0,x,y,10); setvisualpage(w); delay(30); cleardevice(); end; delay(1000); end.
может другой юнит есть, который отделается от мерцания? что можно почитать по 3D векторной графике для полного ньюба? как отобразить плоскость в трехмерном пространстве? что есть из gpl тулз для создания простых векторных изображений?
|
|
|
Записан
|
1n c0de we trust
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #7 : 15-09-2007 05:52 » |
|
э типа не помогает Таму, что у тебя написано, и 10 страниц не помогут - всё мерцать будет Подумай на досуге, почему. P.S. Я не вижу инициализации переменных gd, gm. Если использовать стандартные драйверы (BGI-драйверы) TP 7.0, то 2 видеостраницы поддерживаются только в EGAHi и EGALo режимах или VGAMed и VGALo. Остальное всё одностраничное.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Mayor
Специалист
Offline
|
|
« Ответ #8 : 15-09-2007 08:06 » |
|
P.S. Я не вижу инициализации переменных gd, gm. Если использовать стандартные драйверы (BGI-драйверы) TP 7.0, то 2 видеостраницы поддерживаются только в EGAHi и EGALo режимах или VGAMed и VGALo. Остальное всё одностраничное.
тоже не помогает ... начинаю думать на досуге об языке или юните на котором можно более успешно рисовать фракталы
|
|
|
Записан
|
1n c0de we trust
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #9 : 15-09-2007 10:20 » |
|
начинаю думать на досуге об языке или юните на котором можно более успешно рисовать фракталы Я понимаю, что это твой подход: вместо размышлений и выявления детсадовской ошибки в собственном коде заявить, что язык, де, плохой, и надо использовать что-нибудь другое. Зато как приятно звучит фраза "Отладка не понадобилась". Прямо даже закрадывается мысль, что, быть может, автор отлаживать не умеет?
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #10 : 15-09-2007 12:02 » |
|
Mayor1, у тебя: включаешь , рисуешь, показываешь, а потом стираешь видимую страницу w:=1 xor w; setactivepage(w); ... setvisualpage(w); ... cleardevice();//это надо не тут
|
|
« Последнее редактирование: 15-09-2007 12:06 от Алексей1153++ »
|
Записан
|
|
|
|
Mayor
Специалист
Offline
|
|
« Ответ #11 : 15-09-2007 15:56 » |
|
начинаю думать на досуге об языке или юните на котором можно более успешно рисовать фракталы Я понимаю, что это твой подход: вместо размышлений и выявления детсадовской ошибки в собственном коде заявить, что язык, де, плохой, и надо использовать что-нибудь другое. Зато как приятно звучит фраза "Отладка не понадобилась". Прямо даже закрадывается мысль, что, быть может, автор отлаживать не умеет? да дело не в языке, а в доступной электронной документации по нему, был бы нормальный учебник, то можно было бы от паскаля получить намного большее, чем после его изучения по туториалу ты прав, давно уже не тянет сидеть долгими зимними вечерами за софтайсом
|
|
|
Записан
|
1n c0de we trust
|
|
|
Mayor
Специалист
Offline
|
|
« Ответ #12 : 15-09-2007 16:14 » |
|
Mayor1, у тебя: включаешь , рисуешь, показываешь, а потом стираешь видимую страницу w:=1 xor w; setactivepage(w); ... setvisualpage(w); ... cleardevice();//это надо не тут
да тут ваще по ходу set... не работает, вот все и мерцает ... по идее нада как-то в битмеп буфере рисовать а потом его копировать, но в такой документации хрен что полезное найдешь, все приходится тянуть из исходников
|
|
|
Записан
|
1n c0de we trust
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #13 : 15-09-2007 17:07 » |
|
да тут ваще по ходу set... не работает
круто... А попробовать ? Тупо вот так: setactivepage(0); cleardevice(); //что то нарисовали
setactivepage(1); cleardevice(); //что то нарисовали
setvisualpage(0); delay(1000); setvisualpage(1); delay(1000); setvisualpage(0); delay(1000); setvisualpage(1); delay(1000);
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #14 : 15-09-2007 17:38 » |
|
Алексей1153++, IMHO, бесполезно. Прекращаю давать ему советы, подсказки, а заодно и ругаться.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #15 : 15-09-2007 18:51 » |
|
dimka, ты вроде и не ругался даже )
|
|
|
Записан
|
|
|
|
Mayor
Специалист
Offline
|
|
« Ответ #16 : 16-09-2007 17:08 » |
|
да тут ваще по ходу set... не работает
круто... А попробовать ? Тупо вот так: setactivepage(0); cleardevice(); //что то нарисовали
setactivepage(1); cleardevice(); //что то нарисовали
setvisualpage(0); delay(1000); setvisualpage(1); delay(1000); setvisualpage(0); delay(1000); setvisualpage(1); delay(1000);
так тоже не работает мда за это время я мог бы часть какой нить графической библиотеки изучить а все таки С после паскаля, каким то низкоуровневым кажется, ни тебе сетов ни тебе строк ... паскаль больше чем С подходит для студентов, когда препод рядом и учебник всегда под рукой ... ну а как в одного с такой документацией работать я не представляю
|
|
|
Записан
|
1n c0de we trust
|
|
|
Sla
|
|
« Ответ #17 : 17-09-2007 06:01 » |
|
Mayor1, а ты в магазин ходил? Паскаль начинают изучать в школе, раньше чем основы С, учебников, методичек, исходников, exampleов куча. Попробуй то же самое сделать на С и увидишь - результат будет тот же
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Mayor
Специалист
Offline
|
|
« Ответ #18 : 18-09-2007 05:18 » |
|
Mayor1, а ты в магазин ходил? Паскаль начинают изучать в школе, раньше чем основы С, учебников, методичек, исходников, exampleов куча. Попробуй то же самое сделать на С и увидишь - результат будет тот же
результат уже увидел: на паскале проще кодить учебные задачки, чем на С благодаря встроенной поддержке многих фишек типа строк, множеств, файлов и тп но как только начинается поиск нетривиальных решений ... вот тут юниты сливают библиотекам
|
|
|
Записан
|
1n c0de we trust
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #19 : 18-09-2007 05:41 » |
|
Mayor1, а что подразумевается под множествами ?
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #20 : 18-09-2007 09:29 » |
|
Алексей1153++, в Pascal есть тип данных "set of <базовый тип>", изнутри представляющий собой битовый массив. Каждому потенциальному элементу множества ставится в соответствие 1 бит: если бит установлен, элемент входит во множество, иначе нет. Над множествами одинакового типа можно проводить операции: конструирования (перечня элементов множества), сложения (объединения), вычитания (разности), умножения (пересечения) и проверки членства (оператор "<элемент> in <множество>"). Жаль только, что в 16-ибитных версиях Pascal множества могли включать не более 256 потенциальных элементов.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #21 : 18-09-2007 09:42 » |
|
dimka, ну дык... вроде несложно такую штуку в виде класса написать , навскидку день работы максимум, но можно и за несколько часов управиться (блин, это что - заразно ? ) кстати, сталкивался с необходимостью такого массива один раз в одном из проектов. Не знал, что так называется
|
|
|
Записан
|
|
|
|
Mayor
Специалист
Offline
|
|
« Ответ #22 : 20-09-2007 03:57 » |
|
работы максимум, но можно и за несколько часов управиться (блин, это что - заразно ? ) неа это называется спортивным программированием, когда выполняешь заказ во главу угла ставится стабильность программы, сознательно удаляешь всю оптимизацию в алгоритмах, что бы свести вероятность возникновения бага к минимому и максимально облегчить поиск бага, неожиданно обнаруженного через месяц использования программы, когда уже забыл почти все кроме основных интерфейсов ... ну а в спортивном есть ограниченный набор тестов, оценивается в основном скорость написания, скорость алгоритма, все явные баги удаляются в процессе написания, алгоритм может меняться по ходу написания тк поощряются нетривиальные решения, скрытые баги никто не находит тк программа после тестирования не используется ...
|
|
|
Записан
|
1n c0de we trust
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #23 : 20-09-2007 04:21 » |
|
Mayor1, нет, я имею в виду разумное время разработки этого класса, соревноваться я и не собирался )
Насчёт багов - да, бывает иногда ошибка имеется и не проявляется до возникновения неких условий... Но в данном случаем ошибиться вреде негде
Насчёт "забыл, как работает" - на то дадены комментарии. Пиши их, и будет щасте и память. Интерфейсы, кстати, тоже надо комментировать
|
|
|
Записан
|
|
|
|
|