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", буду пробовать.
Не надо доделывать одну вещь. Эта задача решается сразу и комплексно.
Попробуйте сначала сделать вращающуюся каркасную модель куба. Для этого
Вам понадобится:
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/Затенение_по_Фонгу