Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2013, 09:06   #1
Black_Star
Новичок
Джуниор
 
Регистрация: 20.06.2013
Сообщений: 1
По умолчанию Трехмерная графика в Паскаль

Доброго времени суток!
Подскажите если кто знает, что нужно сделать с данной программкой, чтобы получился перенос одновременно по всем осям. Или проще переписать все заново?

Код:
uses crt, graph, dos; 					

type 								
pixel=record
	x,y,z :real;
end;

var							
	i: integer; 								
	pkey : char; 											
	ErrCode, grMode, grDriver : Integer; 					

const kub:array[1..8] of pixel = 					
	((x:100;y:50;z:50),
	(x:100;y:50;z:-50),
	(x:0;y:50;z:-50),
	(x:0;y:50;z:50),
	(x:50;y:-50;z:50),
	(x:50;y:-50;z:-50),
	(x:-50;y:-50;z:-50),
	(x:-50;y:-50;z:50));

procedure draw_kub;			
begin
	line(round(kub[1].x)+320,round(kub[1].y)+240,round(kub[2].x)+320,round(kub[2].y)+240);
	line(round(kub[2].x)+320,round(kub[2].y)+240,round(kub[3].x)+320,round(kub[3].y)+240);
	line(round(kub[3].x)+320,round(kub[3].y)+240,round(kub[4].x)+320,round(kub[4].y)+240);
	line(round(kub[4].x)+320,round(kub[4].y)+240,round(kub[1].x)+320,round(kub[1].y)+240);
 	line(round(kub[5].x)+320,round(kub[5].y)+240,round(kub[6].x)+320,round(kub[6].y)+240);
  	line(round(kub[6].x)+320,round(kub[6].y)+240,round(kub[7].x)+320,round(kub[7].y)+240);
  	line(round(kub[7].x)+320,round(kub[7].y)+240,round(kub[8].x)+320,round(kub[8].y)+240);
  	line(round(kub[8].x)+320,round(kub[8].y)+240,round(kub[5].x)+320,round(kub[5].y)+240);
  	line(round(kub[1].x)+320,round(kub[1].y)+240,round(kub[5].x)+320,round(kub[5].y)+240);
  	line(round(kub[2].x)+320,round(kub[2].y)+240,round(kub[6].x)+320,round(kub[6].y)+240);
  	line(round(kub[3].x)+320,round(kub[3].y)+240,round(kub[7].x)+320,round(kub[7].y)+240);
  	line(round(kub[4].x)+320,round(kub[4].y)+240,round(kub[8].x)+320,round(kub[8].y)+240);
end;

procedure						
rotate(xv, yv, zv : integer; var x, y, z : real);								
var Yt,Xt,Zt:real;									
begin
	Yt:=Y*cos(xv)-Z*sin(xv);
	Zt:=Y*sin(xv)+Z*cos(xv);
	Y:=Yt;
	Z:=Zt;
	Xt:=X*cos(yv)-Z*sin(yv);
	Zt:=X*sin(yv)+Z*cos(yv);
	X:=Xt;
	Z:=Zt;
	Xt:=X*cos(zv)-Y*sin(zv);
	Yt:=X*sin(zv)+Y*cos(zv);
	X:=Xt;
	Y:=Yt;
end;

procedure mas_max(var x, y, z : real);		
begin
	z:=z*1.1;
	x:=x*1.1;
	y:=y*1.1;
end;

procedure mas_min(var x, y, z : real); 		
begin
	x:=x/1.1;
	y:=y/1.1;
	z:=z/1.1;
end;


begin					
  clrscr; 					
  grDriver := Detect; 							
  InitGraph(grDriver, grMode,'');
  ErrCode := GraphResult;			
  if ErrCode = grOk then			

	begin  												
		for i:=1 to 8 do			
    		rotate(10, 20, 0, kub[i].x,  kub[i].y, kub[i].z);	
    		setcolor(10); 									
			draw_kub; 									
			repeat 												
			if keypressed then 								
			begin 													
			pkey:=readkey; 								
			begin 												
			cleardevice;
		for i:=1 to 8 do
				case pkey of 											
				'1' : mas_max(kub[i].x,  kub[i].y, kub[i].z);	
				'2' : kub[i].y:=kub[i].y+1;		
				'3' : mas_min(kub[i].x,  kub[i].y, kub[i].z); 	
				'4' : kub[i].x:=kub[i].x-1;		
				'5' : rotate(15, 20, 35, kub[i].x,  kub[i].y, kub[i].z); 
				'6' : kub[i].x:=kub[i].x+1;		
				'8' : kub[i].y:=kub[i].y-1;		
				end;
		draw_kub;				
		end;
	end;
	until pkey='0'; 					
end;
end.
Заранее благодарю.

Последний раз редактировалось Black_Star; 20.06.2013 в 09:09.
Black_Star вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана трехмерная матрица целых чисел . программа выполнения на ваш выбор dilkree Фриланс 1 16.12.2012 12:25
Трехмерная система координат в Delphi Maks.13 Общие вопросы Delphi 12 30.05.2012 21:34
Трехмерная игра Sargonass Gamedev - cоздание игр: Unity, OpenGL, DirectX 13 07.05.2012 19:59
Трехмерная матрица n количества n на n размера и разграничение доступа. (на языке C ) zerunzer Помощь студентам 1 22.11.2011 11:15
паскаль(графика) masterlomaster Помощь студентам 5 07.03.2011 01:21