Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Трехмерная фигура

Автор: DB 20.11.2004 3:09

Как в паскале изобразить 3х мерную фигуру например куб.
Надо завести трехмерный массив или как ?если не сложно напишите код проги.

Автор: volvo 20.11.2004 3:54

Чтобы просто изобразить куб - нужно просто запомнить положение его вершин. Для хранения каждой вершины лучше всего подойдет такая структура:


Type
 TPoint = Record
   X, Y, Z: Integer;
 End;

Const
 { 8, так как у куба 8 вершин }
 Cube: Array[1 .. 8] Of TPoint =
   ((X:0; Y:30; Z:0),
    (X:20; Y:30; Z:0),
    (X:20; Y:10; Z:0),
    (X:0; Y:10; Z:0),
    (X:0; Y:30; Z:20),
    (X:20; Y:30; Z:20),
    (X:20; Y:10; Z:20),
    (X:0; Y:10; Z:20));

А потом эти точки соединять в нужном порядке... Например, с помощью такой процедуры:

Procedure DrawLine(Var a, b: TPoint);
 { следующие 2 функции - для преобразования "координат пользователя"
    в "экранные координаты" }
 Function cX( X, Z : Integer ) : Integer;
   Begin
     cX := (X + (GetMaxX Div 2)) - Z;
   End;
 Function cY( Y, Z : Integer ) : Integer;
   Begin
     cY := (GetMaxY Div 2) - Y + Z;
   End;
 
 Begin
   Line(cX(a.x, a.z), cY(a.y, a.z), cX(b.x, b.z), cY(b.y, b.z));
 End;

Осталось только объединить все в одну программу...

Автор: Abbat 20.11.2004 10:07

Хорошо придумал. А если надо повернуть куб? Тоже по точкам? smile.gif

Автор: volvo 20.11.2004 16:07

Abbat

lol.gif Вообще-то в вопросе было сказано

Цитата
изобразить 3х мерную фигуру


Так что о повороте речи не было. Если нужен поворот, об этом надо спрашивать сразу (см. мою подпись). Для поворота 3D фигур существует много способов (так же как, впрочем, и для отображения). Я вообще пишу 3D графику с использованием ООП... Если нужно, могу привести программу для поворота куба.

Автор: -DB- 21.11.2004 1:08

Цитата
Если нужно, могу привести программу для поворота куба

Покажи код если не сложно.

Автор: Romtek 21.11.2004 21:26

http://pascal.sources.ru/demo/index.htm

Автор: GLuk 22.11.2004 4:24

Сколько можно тереть одно и тоже?