русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Трехмерные иллюзии.


Дата добавления: 2015-06-12; просмотров: 591; Нарушение авторских прав


Попробуем создать на экране монитора иллюзию вращения плоской кривой вокруг некоторой прямой в пространстве. Разберем несколько случаев.

1. Уравнение кривой задано параметрически, т.е. системой:

- где j - параметр. Вращать кривую будем вокруг оси OY.

Чтобы "заставить" кривую вращаться, достаточно постепенно изменять абсциссу x от максимального значения до минимального и обратно. Для этого уравнение (1) заменим уравнением:

- где значение t прямо пропорционально углу поворота вокруг оси OY. В качестве примера рассмотрим вращение "удлиненной циклоиды", которая задается системой:

- где a и b – коэффициенты, определяющие размеры циклоиды.

Program Examp_35;

Uses crt, graph;

Var

x,y,p,t:Real;

f:Integer;

Procedure Graphinterface;



Var

driver, mode, error:Integer;

s:String;

Begin

driver:=detect;

s:='';

Initgraph(driver,mode,s);

error:=GraphResult;

if error<>GrOk then

begin

writeln(GraphErrorMsg(Error));

Halt(error)

end

end;

Begin

Graphinterface;

Setcolor(14);

SetBkColor(9);

t:=0;

Repeat

t:=t+0.05;

for f:=93 downto -93 do

begin

x:=(2*f-40*sin(f/10))*cos(t)+320;

y:=-20+40*cos(f/10)+170;

putpixel(round(x),round(y),14);

end;

Clearviewport;

Until keypressed;

CloseGraph;

End.

2. Рассмотрим теперь вращение кривой вокруг оси OX. Нетрудно догадаться, что в этом случае мы оставим уравнение (1) без изменений, а уравнение (2) заменим уравнением:

В качестве примера рассмотрим кривую, которая называется "Локон Марии Аньези" и задается системой:

- где а – радиус окружности, которую огибает эта кривая.

Program Examp_36;

Uses crt, graph;

Var

gd, gm:Integer;

f,i:Integer;

x,y,t:Real;

Procedure Graphinterface;



Var

driver, mode, error:Integer;

s:String;

Begin

driver:=detect;

s:='';

Initgraph(driver,mode,s);

error:=GraphResult;

if error<>GrOk then

begin

writeln(GraphErrorMsg(Error));

Halt(error)

end

end;

Begin

Graphinterface;

SetBkColor(1);

Repeat

t:=t+0.05;

for f:=1 to 600 do

begin

x:=100*cos(f/200)/sin(f/200)+320;

y:=-100*sin(f/200)*sin(f/200)*cos(t)+170;

putpixel(round(x),round(y),14);

end;

Clearviewport;

Until keypressed;

CloseGraph;

End.

3. Пусть теперь уравнение кривой задано в полярных координатах, т.е. имеет вид p=p(φ), где φ – угол, принимающий значения из некоторого промежутка. Такое уравнение можно записать в параметрическом виде:

Поскольку вращать кривую вокруг осей координат мы умеем, попробуем "заставить" кривую вращаться вокруг начала координат. Для этого уравнение (3) преобразуем в уравнение:

x=p(φ)·cos(φ+t) (3').

Приведем пример программы для создания иллюзии вращения "трилистника" или "трехлепестковой розы", имеющей уравнение

p=aּcos3φ, где а – радиус окружности, в которую вписана данная кривая.

Program Examp_37;

Uses crt, graph;

Var

x,y,p,t:Real;

f:Integer;

Procedure Graphinterface;



Var

driver, mode, error:Integer;

s:String;

Begin

driver:=detect;

s:='';

Initgraph(driver,mode,s);

error:=GraphResult;

if error<>GrOk then

begin

writeln(GraphErrorMsg(Error));

Halt(error)

end

end;

Begin

Graphinterface;

Setcolor(14);

SetBkColor(9);

t:=0;

Repeat

t:=t+0.05;

for f:=0 to 628 do

 

begin

p:=120*cos(0.3*f);

x:=p*cos(f/10+t)+320;

y:=p*sin(f/10)+170;

putpixel(round(x),round(y),14);

end;

Delay(100);

Clearviewport;

Until keypressed;

CloseGraph;

End.

4. Приведем пример кривой, заданной уравнением вида

f(x,y)=0 (5).

Рассмотрим гиперболу, каноническое уравнение которой имеет вид:

Заменой y=b×tgj данное уравнение приводим к системе:

Используя (*), легко составить программы вращения гиперболы вокруг осей координат или точки их пересечения (см. 1, 2 и 3). Но мы лучше рассмотрим еще один способ создания иллюзии перемещения кривой в пространстве. Будем "удалять" и "приближать" кривую. Для этого надо каждое из уравнений (1) и (2) заменить уравнениями (1') и (2').

Program Examp_38;

Uses crt, graph;

Var

x,y,t:Real;

f:Integer;

Procedure Graphinterface;



Var

driver, mode, error:Integer;

s:String;

Begin

driver:=detect;

s:='';

Initgraph(driver,mode,s);

error:=GraphResult;

if error<>GrOk then

begin

writeln(GraphErrorMsg(Error));

Halt(error)

end

end;

Begin

Graphinterface;

Setcolor(14);

SetBkColor(9);

t:=0;

Repeat

t:=t+0.05;

for f:=0 to 628 do

begin

x:=80*cos(t)/cos(f/10)+320;

y:=-30*sin(f/10)/cos(f/10)*cos(t)+170;

putpixel(round(x),round(y),14);

end;

Delay(10);

Clearviewport;

Until keypressed;

CloseGraph;

End.


Литература.

1. О.П.Зеленяк. Изучаем графику TURBO PASCAL. Журнал "Информатика и образование", №7, 2000г.

2. А.С.Пономаренко. Трехмерные иллюзии. "Информатика", приложение к газете "Первое сентября" №3, 2000г.

3. С.А.Немнюгин. TURBO PASCAL. Учебник.Издательство "Питер", 2000г.

 



<== предыдущая лекция | следующая лекция ==>
Задача 8. | Обзор графических редакторов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.63 сек.