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

> Занимательная графика
BlackShadow
сообщение 21.05.2004 13:32
Сообщение #1


Гость






В этой теме приведены исходники, отрисовывающие следующие фигуры:
  1. "Архимедова спираль" (ниже в этом же сообщении)

  2. Прикрепленное изображение
    Исходник для Турбо Паскаля (процедуры)
    Исходник для Турбо Паскаля (ООП)
    Отрисовка только прямыми линиями

  3. Прикрепленное изображение
    Исходник для FPC

  4. Прикрепленное изображение

  5. Прикрепленное изображение

  6. Прикрепленное изображение

  7. Прикрепленное изображение
    Фрактальные деревья

  8. "Фигуры Лиссажу"
  9. Пример RGB графики в режиме 13h
Архимедова спираль

Цитата
Параметрическое представление спирали: x = r cos t , y = r sin t, r = t/2

Если количество витков = n, то T пробегает от 0 до n*2*pi. r растёт от 0 до R_max (данный внешний радиус), и пропорционален T. Тогда r = T/(n*2*pi)*R_max.

Uses Graph, Crt;

Const
r_max = 200;
n = 7;
Var
gr, gm: Integer;
i, k: Integer;
ZeroX, ZeroY: Integer;
x, y, r, t: Double;

begin
gr := Detect;

InitGraph(gr, gm, '');
k := n * 140;

ZeroX := Round(GetMaxX/2);
ZeroY := Round(GetMaxY/2);
{MoveTo(ZeroX, ZeroY);}
For i := 1 To k Do
Begin
T := (n * 2 * Pi) * i / k;
r := T / (n * 2 * Pi) * r_max;
x := r * Cos(T);
y := r * Sin(T);
PutPixel(ZeroX + Round(x), ZeroY - Round(y), White)
End;
ReadKey;
CloseGraph;
end.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
SHnur
сообщение 11.01.2005 2:43
Сообщение #2


Пионер
**

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

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


Програма, выводит на экран узор как в 1-ой программе выложенной здесь, но другим способом :

uses graph, crt;
var i , j , x :integer;
graphdriver , GraphMode :integer;
ch :boolean;
col1 , col2 : integer;
begin
GraphDriver := VGA;
GraphMode := VGAHI;
InitGraph(graphDriver,GraphMode,'e:\alexiv~1');
COL1 := black;
col2 := blue;

ch := true;
for j := 1 to 2 do begin
if j = 1 then x := 0
else x := 479;
for i := 0 to 639 do begin
line(319,239,i,x);
ch := not(ch);
case ch of
true : setcolor(col1);
false : setcolor(col2);
end;
end;
end;

for j := 1 to 2 do begin
if j = 1 then x := 0
else x := 639;
for i := 0 to 479 do begin
line(319,239,x,i);
ch := not(ch);
case ch of
true : setcolor(col1);
false : setcolor(col2);
end;
end;
end;

readkey;
closegraph;
end.


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

Скачать исходник: Прикрепленный файл  source.pas ( 916 байт ) Кол-во скачиваний: 1272
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 30.09.2024 17:47
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"