Помощь - Поиск - Пользователи - Календарь
Полная версия: Трехмерная фигура
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
DB
Как в паскале изобразить 3х мерную фигуру например куб.
Надо завести трехмерный массив или как ?если не сложно напишите код проги.
volvo
Чтобы просто изобразить куб - нужно просто запомнить положение его вершин. Для хранения каждой вершины лучше всего подойдет такая структура:

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
Хорошо придумал. А если надо повернуть куб? Тоже по точкам? smile.gif
volvo
Abbat

lol.gif Вообще-то в вопросе было сказано
Цитата
изобразить 3х мерную фигуру


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

Покажи код если не сложно.
Romtek
http://pascal.sources.ru/demo/index.htm
GLuk
Сколько можно тереть одно и тоже?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.