IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Анимация(((, наверняка одминам это как 2 пальца об асфальт))
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской
Реальное имя: Макс

Репутация: -  0  +


доброго времени суток!!
привет вам из далекой (или не далекой) Беларуси!
у меня проблема: нужно написать на зачет по информатике 2 графические задачи((((

помогите чем сможете...

1. сектор вращается против часовой стрелки и меняет цвета (7 цветов). внутренний угол 30 градусов

2. фигура, состоящая из 2-х кругов с диаметрами D=40 и d=18, движется по горизонтальной поверхности длиной L=180. При достижении стенок на концах поверхности направление движения фигуры меняется...

помогите пожалуйста, не то у меня отберут стипендию(((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
у меня Free Pascal IDE
Ах, вот оно что... В FreePascal-е очень медленная реализация FloodFill, это не дает программе выполняться так же быстро, как в Турбо Паскале. Все, что могу предложить - это вот такой вот трюк:
uses crt,graph;

var
gm, gd, x, y: Integer;
ac: ArcCoordsType;

const
numSectors = 12;
EverySector = 360 div numSectors;

Colors: array[1 .. numSectors] of integer =
(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

var
pass, p, T: Integer;

begin
gd := d4bit; // уменьшаем число цветов
gm := m640x480; // и размер до обычных размеров VGA

InitGraph(gd, gm, '');
if GraphResult <> grOk then begin
WriteLn('Error'); Halt(100)
end;

x := 200; y := 200;
repeat
setfillstyle(solidfill, black); // затираем прежнее изображение
bar(x - 100, y - 100, x + 100, y + 100);

SetColor(White);
Ellipse(x, y, 0, 360, 103, 103);

for p := 1 to numSectors do begin
SetColor(DarkGray);
Ellipse(x, y,
Pred(p) * EverySector, p * EverySector, 100, 100);

GetArcCoords(ac);
with ac do begin
Line(x, y, xStart, yStart);
Line(x, y, xEnd, yEnd);

if colors[p] > 0 then begin
SetFillStyle(SolidFill, colors[p]); // и рисуем новый цветной сектор
inc(colors[p]); if colors[p] > LightGray then colors[p] := 1;
FloodFill( (xStart+xEnd) div 2,
(yStart+yEnd) div 2, DarkGray);
end;
end;
delay(50);
end;
T := colors[numSectors];
move(colors[1], colors[2], pred(numSectors)*sizeof(integer));
Colors[1] := T;

delay(15);

until keypressed;

ReadLn;
CloseGraph
end.
За счет того, что FloodFill вызывается один раз вместо 12-ти, получается 12-ти кратное ускорение. Но все равно, видно процесс заливки...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 8.05.2024 22:08
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name