Top.Mail.Ru
Ответы

Delphi Рисуем куб. Подскажите как сделать поворотную ось Z, чтобы можно было указывать углы поворота.

procedure TForm1.Button1Click(Sender: TObject);

var

x,y,z,xz,yz: integer;

begin

Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);

for z:=0 to 8 do

for y:=0 to 100 do

for x:=0 to 100 do

begin

If CheckBox1.Checked Then xz:=0-z else xz:=0+z;

If CheckBox2.Checked Then yz:=0-z else yz:=0+z;

image1.Canvas.Pixels[100+x+(xz),100+y+(yz)]:=StringToColor('00'+IntToStr(z)+'000');

end;

end;

Дополнен

Вообще я хочу сделать прорисовку массива, но через OpenGL, а вручную.

Дополнен

Вообще я хочу сделать прорисовку массива, но НЕ через OpenGL, а вручную.

Дополнен Дополнен

Потом еще доделаю одну вещь:
То что дальше, то размером меньше, по сравнению с тем что ближе.

Дополнен

Спасибо большое "kelavric kelavric", буду пробовать.

По дате
По рейтингу
Аватар пользователя
Просветленный
11лет

Не надо доделывать одну вещь. Эта задача решается сразу и комплексно.
Попробуйте сначала сделать вращающуюся каркасную модель куба. Для этого
Вам понадобится:

1) массив отрезков, составляющих куб (эти отрезки задаются двумя тройками чисел)

2) процедура, пересчитывающая этот массив в новый при вращении вокруг оси z,

3) процедура, пересчитывающая трехмерные координаты вершин куба в экранные координаты.

Второй пункт реализуется матрицами поворота, см. , например, здесь:
http://compgraphics.info/3D/3d_affine_transformations.php

Третий пункт реализуется проективными отображениями, см. , например, здесь:
http://www.intuit.ru/studies/courses/10622/1106/lecture/18024?page=2

После того, как научитесь вычислять координаты граней, можете попробовать их раскрашивать по Фонгу или по Гуро, см. , например, здесь:
http://ru.wikipedia.org/wiki/Затенение_по_Фонгу