What is it you are trying to achieve?
wrote a code that lets me rotate 'LUC' on X, Y, and Z axis, but its a wire frame and i would like to able to draw the faces of the objects
What is the problem you are having?
dont know how to tell what faces of the objects i can 'see' and which ones i cant
Describe what you have tried to solve this problem
tried a couple of different techniques
Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)
Turing: |
setscreen ("graphics: 800; 600")
setscreen ("offscreenonly")
var points : int := 44
var ox, oy : int
var x, y, z, tx, tz, ty, xr, yr, zr : array 1 .. points of real
var dx, dy : array 1 .. points of int
var Vx : real := 0
var Vy : real := - 850
var Vz : real := 0
var direction : int
var move : string (1)
procedure initialvalues
% "L"
x (1) := - 1
y (1) := 50
z (1) := 200
x (2) := - 1
y (2) := - 50
z (2) := 200
x (3) := - 100
y (3) := - 50
z (3) := 200
x (4) := - 100
y (4) := 50
z (4) := 200
x (5) := - 1
y (5) := 50
z (5) := 1
x (6) := - 1
y (6) := - 50
z (6) := 1
x (7) := - 100
y (7) := - 50
z (7) := - 100
x (8) := - 100
y (8) := 50
z (8) := - 100
x (9) := 100
y (9) := 50
z (9) := 1
x (10) := 100
y (10) := - 50
z (10) := 1
x (11) := 100
y (11) := - 50
z (11) := - 100
x (12) := 100
y (12) := 50
z (12) := - 100
% "U"
x (13) := 300
y (13) := 50
z (13) := 200
x (14) := 300
y (14) := - 50
z (14) := 200
x (15) := 200
y (15) := - 50
z (15) := 200
x (16) := 200
y (16) := 50
z (16) := 200
x (17) := 300
y (17) := 50
z (17) := 1
x (18) := 300
y (18) := - 50
z (18) := 1
x (19) := 200
y (19) := - 50
z (19) := - 100
x (20) := 200
y (20) := 50
z (20) := - 100
x (21) := 500
y (21) := 50
z (21) := - 100
x (22) := 500
y (22) := - 50
z (22) := - 100
x (23) := 400
y (23) := - 50
z (23) := 1
x (24) := 400
y (24) := 50
z (24) := 1
x (25) := 500
y (25) := 50
z (25) := 200
x (26) := 500
y (26) := - 50
z (26) := 200
x (27) := 400
y (27) := - 50
z (27) := 200
x (28) := 400
y (28) := 50
z (28) := 200
% "C"
x (29) := 800
y (29) := 50
z (29) := 200
x (30) := 800
y (30) := - 50
z (30) := 200
x (31) := 800
y (31) := - 50
z (31) := 100
x (32) := 800
y (32) := 50
z (32) := 100
x (33) := 700
y (33) := 50
z (33) := 100
x (34) := 700
y (34) := - 50
z (34) := 100
x (35) := 600
y (35) := - 50
z (35) := 200
x (36) := 600
y (36) := 50
z (36) := 200
x (37) := 700
y (37) := 50
z (37) := 1
x (38) := 700
y (38) := - 50
z (38) := 1
x (39) := 600
y (39) := - 50
z (39) := - 100
x (40) := 600
y (40) := 50
z (40) := - 100
x (41) := 800
y (41) := 50
z (41) := 1
x (42) := 800
y (42) := - 50
z (42) := 1
x (43) := 800
y (43) := - 50
z (43) := - 100
x (44) := 800
y (44) := 50
z (44) := - 100
ox := maxx div 2
oy := maxy div 2
for a : 1 .. points
x (a ) := x (a ) - 350
if x (a ) > - 1 and y (a ) > 0 then
tx (a ) := arctand (x (a ) / y (a ))
elsif x (a ) > 0 and y (a ) < 1 then
tx (a ) := (- 90 - arctand (y (a ) / x (a ))) + 180
elsif x (a ) < 1 and y (a ) < 0 then
tx (a ) := arctand (x (a ) / y (a )) + 180
else
tx (a ) := (- 90 - arctand (y (a ) / x (a ))) + 360
end if
if x (a ) > - 1 and z (a ) > 0 then
ty (a ) := arctand (x (a ) / z (a ))
elsif x (a ) > 0 and z (a ) < 1 then
ty (a ) := (- 90 - arctand (z (a ) / x (a ))) + 180
elsif x (a ) < 1 and z (a ) < 0 then
ty (a ) := arctand (x (a ) / z (a )) + 180
else
ty (a ) := (- 90 - arctand (z (a ) / x (a ))) + 360
end if
if y (a ) > - 1 and z (a ) > 0 then
tz (a ) := arctand (y (a ) / z (a ))
elsif y (a ) > 0 and z (a ) < 1 then
tz (a ) := (- 90 - arctand (z (a ) / y (a ))) + 180
elsif y (a ) < 1 and z (a ) < 0 then
tz (a ) := arctand (y (a ) / z (a )) + 180
else
tz (a ) := (- 90 - arctand (z (a ) / y (a ))) + 360
end if
xr (a ) := sqrt ((x (a ) ** 2) + (y (a ) ** 2))
yr (a ) := sqrt ((x (a ) ** 2) + (z (a ) ** 2))
zr (a ) := sqrt ((z (a ) ** 2) + (y (a ) ** 2))
dx (a ) := (((100 / (y (a ) - Vy + 100)) * (x (a ) - Vx )) + Vx ) div 1
dy (a ) := (((100 / (y (a ) - Vy + 100)) * (z (a ) - Vz )) + Vz ) div 1
end for
end initialvalues
procedure draw
for a : 1 .. points
dx (a ) := (((200 / (y (a ) - Vy + 200)) * (x (a ) - Vx )) + Vx ) div 1
dy (a ) := (((200 / (y (a ) - Vy + 200)) * (z (a ) - Vz )) + Vz ) div 1
%drawfilloval (dx (a) + ox, dy (a) + oy, 1, 1, red)
end for
% "L"
drawline (dx (1) + ox, dy (1) + oy, dx (2) + ox, dy (2) + oy, red)
drawline (dx (2) + ox, dy (2) + oy, dx (3) + ox, dy (3) + oy, red)
drawline (dx (3) + ox, dy (3) + oy, dx (4) + ox, dy (4) + oy, red)
drawline (dx (4) + ox, dy (4) + oy, dx (1) + ox, dy (1) + oy, red)
drawline (dx (5) + ox, dy (5) + oy, dx (6) + ox, dy (6) + oy, red)
drawline (dx (7) + ox, dy (7) + oy, dx (8) + ox, dy (8) + oy, red)
drawline (dx (9) + ox, dy (9) + oy, dx (10) + ox, dy (10) + oy, red)
drawline (dx (10) + ox, dy (10) + oy, dx (11) + ox, dy (11) + oy, red)
drawline (dx (11) + ox, dy (11) + oy, dx (12) + ox, dy (12) + oy, red)
drawline (dx (12) + ox, dy (12) + oy, dx (9) + ox, dy (9) + oy, red)
drawline (dx (1) + ox, dy (1) + oy, dx (5) + ox, dy (5) + oy, red)
drawline (dx (2) + ox, dy (2) + oy, dx (6) + ox, dy (6) + oy, red)
drawline (dx (3) + ox, dy (3) + oy, dx (7) + ox, dy (7) + oy, red)
drawline (dx (4) + ox, dy (4) + oy, dx (8) + ox, dy (8) + oy, red)
drawline (dx (5) + ox, dy (5) + oy, dx (9) + ox, dy (9) + oy, red)
drawline (dx (6) + ox, dy (6) + oy, dx (10) + ox, dy (10) + oy, red)
drawline (dx (7) + ox, dy (7) + oy, dx (11) + ox, dy (11) + oy, red)
drawline (dx (8) + ox, dy (8) + oy, dx (12) + ox, dy (12) + oy, red)
% "U"
drawline (dx (13) + ox, dy (13) + oy, dx (14) + ox, dy (14) + oy, red)
drawline (dx (14) + ox, dy (14) + oy, dx (15) + ox, dy (15) + oy, red)
drawline (dx (15) + ox, dy (15) + oy, dx (16) + ox, dy (16) + oy, red)
drawline (dx (16) + ox, dy (16) + oy, dx (13) + ox, dy (13) + oy, red)
drawline (dx (17) + ox, dy (17) + oy, dx (18) + ox, dy (18) + oy, red)
drawline (dx (19) + ox, dy (19) + oy, dx (20) + ox, dy (20) + oy, red)
drawline (dx (21) + ox, dy (21) + oy, dx (22) + ox, dy (22) + oy, red)
drawline (dx (23) + ox, dy (23) + oy, dx (24) + ox, dy (24) + oy, red)
drawline (dx (25) + ox, dy (25) + oy, dx (26) + ox, dy (26) + oy, red)
drawline (dx (26) + ox, dy (26) + oy, dx (27) + ox, dy (27) + oy, red)
drawline (dx (27) + ox, dy (27) + oy, dx (28) + ox, dy (28) + oy, red)
drawline (dx (28) + ox, dy (28) + oy, dx (25) + ox, dy (25) + oy, red)
drawline (dx (13) + ox, dy (13) + oy, dx (17) + ox, dy (17) + oy, red)
drawline (dx (14) + ox, dy (14) + oy, dx (18) + ox, dy (18) + oy, red)
drawline (dx (15) + ox, dy (15) + oy, dx (19) + ox, dy (19) + oy, red)
drawline (dx (16) + ox, dy (16) + oy, dx (20) + ox, dy (20) + oy, red)
drawline (dx (17) + ox, dy (17) + oy, dx (24) + ox, dy (24) + oy, red)
drawline (dx (18) + ox, dy (18) + oy, dx (23) + ox, dy (23) + oy, red)
drawline (dx (19) + ox, dy (19) + oy, dx (22) + ox, dy (22) + oy, red)
drawline (dx (20) + ox, dy (20) + oy, dx (21) + ox, dy (21) + oy, red)
drawline (dx (21) + ox, dy (21) + oy, dx (25) + ox, dy (25) + oy, red)
drawline (dx (22) + ox, dy (22) + oy, dx (26) + ox, dy (26) + oy, red)
drawline (dx (23) + ox, dy (23) + oy, dx (27) + ox, dy (27) + oy, red)
drawline (dx (24) + ox, dy (24) + oy, dx (28) + ox, dy (28) + oy, red)
% "C"
drawline (dx (29) + ox, dy (29) + oy, dx (30) + ox, dy (30) + oy, red)
drawline (dx (30) + ox, dy (30) + oy, dx (31) + ox, dy (31) + oy, red)
drawline (dx (31) + ox, dy (31) + oy, dx (32) + ox, dy (32) + oy, red)
drawline (dx (32) + ox, dy (32) + oy, dx (29) + ox, dy (29) + oy, red)
drawline (dx (33) + ox, dy (33) + oy, dx (34) + ox, dy (34) + oy, red)
drawline (dx (35) + ox, dy (35) + oy, dx (36) + ox, dy (36) + oy, red)
drawline (dx (37) + ox, dy (37) + oy, dx (38) + ox, dy (38) + oy, red)
drawline (dx (39) + ox, dy (39) + oy, dx (40) + ox, dy (40) + oy, red)
drawline (dx (41) + ox, dy (41) + oy, dx (42) + ox, dy (42) + oy, red)
drawline (dx (42) + ox, dy (42) + oy, dx (43) + ox, dy (43) + oy, red)
drawline (dx (43) + ox, dy (43) + oy, dx (44) + ox, dy (44) + oy, red)
drawline (dx (44) + ox, dy (44) + oy, dx (41) + ox, dy (41) + oy, red)
drawline (dx (29) + ox, dy (29) + oy, dx (36) + ox, dy (36) + oy, red)
drawline (dx (30) + ox, dy (30) + oy, dx (35) + ox, dy (35) + oy, red)
drawline (dx (31) + ox, dy (31) + oy, dx (34) + ox, dy (34) + oy, red)
drawline (dx (32) + ox, dy (32) + oy, dx (33) + ox, dy (33) + oy, red)
drawline (dx (33) + ox, dy (33) + oy, dx (37) + ox, dy (37) + oy, red)
drawline (dx (34) + ox, dy (34) + oy, dx (38) + ox, dy (38) + oy, red)
drawline (dx (35) + ox, dy (35) + oy, dx (39) + ox, dy (39) + oy, red)
drawline (dx (36) + ox, dy (36) + oy, dx (40) + ox, dy (40) + oy, red)
drawline (dx (37) + ox, dy (37) + oy, dx (41) + ox, dy (41) + oy, red)
drawline (dx (38) + ox, dy (38) + oy, dx (42) + ox, dy (42) + oy, red)
drawline (dx (39) + ox, dy (39) + oy, dx (43) + ox, dy (43) + oy, red)
drawline (dx (40) + ox, dy (40) + oy, dx (44) + ox, dy (44) + oy, red)
end draw
procedure rotateX
for a : 1 .. points
xr (a ) := sqrt ((x (a ) ** 2) + (y (a ) ** 2))
if x (a ) > - 1 and y (a ) > 0 then
tx (a ) := arctand (x (a ) / y (a ))
elsif x (a ) > 0 and y (a ) < 1 then
tx (a ) := (- 90 - arctand (y (a ) / x (a ))) + 180
elsif x (a ) < 1 and y (a ) < 0 then
tx (a ) := arctand (x (a ) / y (a )) + 180
else
tx (a ) := (- 90 - arctand (y (a ) / x (a ))) + 360
end if
end for
for a : 1 .. 30
for b : 1 .. points
tx (b ) := tx (b ) + direction
x (b ) := sind (tx (b )) * xr (b )
y (b ) := cosd (tx (b )) * xr (b )
end for
draw
View.Update
delay (20)
cls
end for
end rotateX
procedure rotateY
for a : 1 .. points
yr (a ) := sqrt ((x (a ) ** 2) + (z (a ) ** 2))
if x (a ) > - 1 and z (a ) > 0 then
ty (a ) := arctand (x (a ) / z (a ))
elsif x (a ) > 0 and z (a ) < 1 then
ty (a ) := (- 90 - arctand (z (a ) / x (a ))) + 180
elsif x (a ) < 1 and z (a ) < 0 then
ty (a ) := arctand (x (a ) / z (a )) + 180
else
ty (a ) := (- 90 - arctand (z (a ) / x (a ))) + 360
end if
end for
for a : 1 .. 30
for b : 1 .. points
ty (b ) := ty (b ) + direction
x (b ) := sind (ty (b )) * yr (b )
z (b ) := cosd (ty (b )) * yr (b )
end for
draw
View.Update
delay (20)
cls
end for
end rotateY
procedure rotateZ
for a : 1 .. points
zr (a ) := sqrt ((z (a ) ** 2) + (y (a ) ** 2))
if y (a ) > - 1 and z (a ) > 0 then
tz (a ) := arctand (y (a ) / z (a ))
elsif y (a ) > 0 and z (a ) < 1 then
tz (a ) := (- 90 - arctand (z (a ) / y (a ))) + 180
elsif y (a ) < 1 and z (a ) < 0 then
tz (a ) := arctand (y (a ) / z (a )) + 180
else
tz (a ) := (- 90 - arctand (z (a ) / y (a ))) + 360
end if
end for
for a : 1 .. 30
for b : 1 .. points
tz (b ) := tz (b ) + direction
y (b ) := sind (tz (b )) * zr (b )
z (b ) := cosd (tz (b )) * zr (b )
end for
draw
View.Update
delay (20)
cls
end for
end rotateZ
initialvalues
loop
getch (move )
if move = "d" then
direction := 3
rotateX
elsif move = "a" then
direction := - 3
rotateX
elsif move = "w" then
direction := 3
rotateZ
elsif move = "s" then
direction := - 3
rotateZ
elsif move = "e" then
direction := 3
rotateY
elsif move = "q" then
direction := - 3
rotateY
end if
end loop
|
Please specify what version of Turing you are using
4.1.1 |