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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2007, 15:34   #1
anarchist
 
Регистрация: 30.11.2006
Сообщений: 5
По умолчанию Трехмерные изображения

Помогите!!! Нужна ваша помощь!!!

Задание: Составить программу реализующую трехмерное преобразование с фигурой параллелепипед. Фигура должна отображаться
в контурном виде без удаления невидимых линий и уметь вращаться вокруг произвольной оси. Преобразование - перенос по осям
X,Y,Z. Управление преобразованием по осям осуществлять с помощью девяти клавиш (1-9) на цифровой клавиатуре.

Кто чем сможет, ссылкой, литературой, советом, а может, у кого и программка есть...
anarchist вне форума Ответить с цитированием
Старый 25.10.2007, 15:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Совет: Можно это зарулить через OpenGL через компонент GLScene или DirectX
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2007, 15:42   #3
anarchist
 
Регистрация: 30.11.2006
Сообщений: 5
По умолчанию

Stilet - вся загвоздка в том что писать надо на паскале или делфи

лучше на паскале ....

Последний раз редактировалось anarchist; 25.10.2007 в 15:44.
anarchist вне форума Ответить с цитированием
Старый 25.10.2007, 16:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пуфффф... На паскале эт так сразу будет сложнее, а для делфи я уже сказал в предидущем посте.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2007, 16:07   #5
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

Если всю прогу - это в платнуй раздел, имхо.
Если совет - почитай Help на темы Canvas,MoveTo,LineTo
Maslan вне форума Ответить с цитированием
Старый 25.10.2007, 16:41   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вот примерчик (не мой). Может, сгодится.
Вложение 1305

Последний раз редактировалось mihali4; 08.11.2008 в 14:04.
mihali4 вне форума Ответить с цитированием
Старый 25.10.2007, 17:08   #7
anarchist
 
Регистрация: 30.11.2006
Сообщений: 5
По умолчанию

mihali4 - спасибо!
глянул EXE-шник, почти что надо , буду ковырять исходники...
anarchist вне форума Ответить с цитированием
Старый 25.10.2007, 17:31   #8
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

во красота какая http://ishodniki.ru/base/ASM/vga_vul4.zip
и вот ещё чья-то лаба

Код:
PROGRAM lab5; 
uses graph,crt; 

const n=8; 
type v=array [1..4] of real;mat=array [1..4,1..4] of real; 

matob=array [1..n] of v; 

const t:matob=((200,200,200,1),(300,200,200,1),(300,300,200,1),(200,300,200,1), 
(200,200,100,1),(300,200,100,1),(300,300,100,1),(200,300,100,1)); 
m:mat=((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1)); 
e:mat=((1,0,0,0),(0,1,0,0),(0.35,-0.35,0,0),(0,0,0,1)); 

var mm:mat;pt:matob;i:byte;dr,reg,u:integer;smx,smy,x,y:real; 

procedure draw(ot:matob;cv:byte); 
var i:byte; 
  procedure lin(oo:matob;p,q:byte); 
  begin 
    line(trunc(oo[p,1]),trunc(oo[p,2]),trunc(oo[q,1]),trunc(oo[q,2])); 
  end; 

begin 
  setcolor(cv); 
  for i:=1 to n div 2-1 do 
  lin(ot,i,i+1); 
  lin(ot,1,4); 
  for i:=n div 2+1 to n-1 do 
  lin(ot,i,i+1); 
  lin(ot,n div 2+1,n); 
  for i:=1 to 4 do lin(ot,i,i+4); 
  end; 

procedure mult(a:v;b:mat;var pv:v); 
var 
i,j:byte; 
begin 
for j:=1 to 4 do 
begin 
pv[j]:=0;for i:=1 to 4 do 
 pv[j]:=pv[j]+a[i]*b[i,j] 
 end; 
 if pv[4]<>1 then 
 for i:=1 to 4 do 
 pv[i]:=pv[i]/pv[4] 
 end; 
 procedure povorot(ugol:integer); 
 var p:real; 
 begin 
 p:=ugol*2*pi/360; 
 m[2,2]:=cos(p);m[2,3]:=sin(p);m[3,2]:=-sin(p);m[3,3]:=cos(p) 
 end; 
 procedure sme(sx,sy,sz:real); 
 begin 
 for i:=1 to n do 
 begin 
 t[i,1]:=t[i,1]+sx;t[i,2]:=t[i,2]+sy;t[i,3]:=t[i,3]+sz 
 end 
 end; 
 procedure mas(mx,my,mz:real); 
 begin 
 m[1,1]:=mx;m[2,2]:=my;m[3,3]:=mz 
 end; 


 begin 
 dr:=detect; 
 initgraph(dr,reg,'') ; 
 setbkcolor(15); 
 for i:=1 to n do 
 mult(t[i],e,pt[i]); 
 draw(pt,red); 
 readln; 
 repeat 
 sme(-200,-300,-200); 
 povorot(2); 
 for i:=1 to n do 
 mult(t[i],m,t[i]); 
 sme(200,300,200); 
 for i:=1 to n do 
 mult(t[i],e,pt[i]); 
 draw(pt,blue); 
 delay(100); 
 cleardevice; 
 until keypressed; 
 closegraph; 
 end.
О, мну попёрло Забей на предыдущий пример, вот практически твоё задание )))
Вложения
Тип файла: txt MATRIX3D.PAS.txt (10.6 Кб, 168 просмотров)
пыщь

Последний раз редактировалось JTG; 25.10.2007 в 17:57.
JTG вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
Обработка изображения Hollander Мультимедиа в Delphi 6 10.03.2008 14:21
Изображения в БД alikon1 БД в Delphi 3 08.10.2007 13:13