Computer Science Canada 3d graphing |
Author: | Homer_simpson [ Mon Apr 20, 2009 12:28 pm ] |
Post subject: | 3d graphing |
i was bored so i messed around with my old 3d engine Quote: class Homer3Dengine
export loadass, moveobject, drawobject, camera, obj, movecamera type dot : record x, y, z : real end record proc assign3d (var d : dot, x, y, z : real) d.x := x d.y := y d.z := z + 10 end assign3d type object : record axy, axz, ayz, cx, cy, cz : real maxpoly : int poly : array 1 .. 1000, 1 .. 2 of dot col : array 1 .. 1000 of int end record var obj : object type cam : record axy, axz, ayz, cx, cy, cz, zoom : real end record var camera : cam camera.cx := 0 camera.cy := 0 camera.cz := 0 camera.axy := 0 camera.axz := 0 camera.ayz := 0 camera.zoom := 3000 proc loadass (filename : string) var file, i : int := 0 var x1, y1, z1, x2, y2, z2, x3, y3, z3 : real var col : int loop exit when i > 250 i += 1 %read : file, x1, y1, z1, x2, y2, z2, x3, y3, z3, col x1 := (sind (i * 10) * 100) * (i / 30) x2 := (sind ((i + 1) * 10 + 1) * 100) * ((i + 1) / 30) y1 := (cosd (i * 10) * 100) * (i / 30) y2 := (cosd ((i + 1) * 10 + 2) * 100) * ((i + 1) / 30) z1 := i * 3 z2 := (i + 1) * 3 col := 2 assign3d (obj.poly (i, 1), x1, y1, z1) assign3d (obj.poly (i, 2), x2, y2, z2) obj.col (i) := col end loop obj.maxpoly := i obj.axy := 0 obj.axz := 0 obj.ayz := 0 end loadass proc rotate (OriginX, OriginY : real, var secondpartX, secondpartY : real, Rotaion : real) var tempx := (((OriginX - secondpartX) * cosd (Rotaion)) + ((OriginY - secondpartY) * sind (Rotaion))) var tempy := (((OriginY - secondpartY) * cosd (Rotaion)) - ((OriginX - secondpartX) * sind (Rotaion))) secondpartY := OriginY - tempy secondpartX := OriginX - tempx end rotate proc findcenter (var x, y, z : real) x := 0.0 y := 0.0 z := 0.0 for i : 1 .. obj.maxpoly for ii : 1 .. 2 x += obj.poly (i, ii).x y += obj.poly (i, ii).y z += obj.poly (i, ii).z end for end for x /= (obj.maxpoly * 2) y /= (obj.maxpoly * 2) z /= (obj.maxpoly * 2) %drawfilloval (round (obj.cx / (obj.cz / camera.zoom)) + 320, round (obj.cy / (obj.cz / camera.zoom)) + 200, 10, 10, 12) end findcenter proc draw3dpolygon (d1, d2, d3 : dot, c, c2 : int, filled : boolean) if d1.z not= 0 and d2.z not= 0 and d3.z not= 0 then % drawline (round (d1.x / (d1.z / camera.zoom)) + 320, round (d1.y / (d1.z / camera.zoom)) + 200, round (d2.x / (d2.z / camera.zoom)) + 320, round (d2.y / (d2.z / camera.zoom)) + 200, c) % drawline (round (d1.x / (d1.z / camera.zoom)) + 320, round (d1.y / (d1.z / camera.zoom)) + 200, round (d3.x / (d3.z / camera.zoom)) + 320, round (d3.y / (d3.z / camera.zoom)) + 200, c) % drawline (round (d2.x / (d2.z / camera.zoom)) + 320, round (d2.y / (d2.z / camera.zoom)) + 200, round (d3.x / (d3.z / camera.zoom)) + 320, round (d3.y / (d3.z / camera.zoom)) + 200, c) %drawline (round (obj.cx / (obj.cz / camera.zoom)) + 320, round (obj.cy / (obj.cz / camera.zoom)) + 200, round (d2.x / (d2.z / camera.zoom)) + 320, round (d2.y / (d2.z / camera.zoom)) + 200, 12) var xx : array 1 .. 3 of int var yy : array 1 .. 3 of int xx (1) := round ((d1.x - camera.cx) / ((d1.z - camera.cz) / camera.zoom)) + 320 xx (2) := round ((d2.x - camera.cx) / ((d2.z - camera.cz) / camera.zoom)) + 320 xx (3) := round ((d3.x - camera.cx) / ((d3.z - camera.cz) / camera.zoom)) + 320 yy (1) := round ((d1.y - camera.cy) / ((d1.z - camera.cz) / camera.zoom)) + 200 yy (2) := round ((d2.y - camera.cy) / ((d2.z - camera.cz) / camera.zoom)) + 200 yy (3) := round ((d3.y - camera.cy) / ((d3.z - camera.cz) / camera.zoom)) + 200 if filled then %Draw.FillPolygon (xx, yy, 3, c) %Draw.Polygon (xx, yy, 3, c) end if Draw.Polygon (xx, yy, 3, c2) end if end draw3dpolygon proc draw3dline (d1, d2 : dot, c : int) if d1.z not= 0 and d2.z not= 0 then Draw.Line (round ((d1.x - camera.cx) / ((d1.z - camera.cz) / camera.zoom)) + 320, round ((d1.y - camera.cy) / ((d1.z - camera.cz) / camera.zoom)) + 200, round ((d2.x - camera.cx) / ((d2.z - camera.cz) / camera.zoom)) + 320, round ((d2.y - camera.cy) / ((d2.z - camera.cz) / camera.zoom)) + 200, c) end if end draw3dline proc drawobject (col, col2, typ : int) var cent, tvec : dot; if typ = 1 then for i : 1 .. obj.maxpoly %draw3dpolygon (obj.poly (i, 1), obj.poly (i, 2), obj.poly (i, 3), col, col2, true) cent.x := (obj.poly (i, 1).x + obj.poly (i, 2).x) / 3 cent.y := (obj.poly (i, 1).y + obj.poly (i, 2).y) / 3 cent.z := (obj.poly (i, 1).z + obj.poly (i, 2).z) / 3 %tvec.x := cent.x + obj.normals (i).x * 2 %tvec.y := cent.y + obj.normals (i).y * 2 %tvec.z := cent.z + obj.normals (i).z * 2 %draw3dline (cent, tvec, white) draw3dline (obj.poly (i, 1), obj.poly (i, 2), col2) %draw3dpolygon (tvec, tvec, tvec, col, col2, true) end for end if end drawobject proc moveobject (s : string, d : real) findcenter (obj.cx, obj.cy, obj.cz) case s of label "xy" : obj.axy += d for i : 1 .. obj.maxpoly for ii : 1 .. 2 rotate (obj.cx, obj.cy, obj.poly (i, ii).x, obj.poly (i, ii).y, d) end for end for label "xz" : obj.axz += d for i : 1 .. obj.maxpoly for ii : 1 .. 2 rotate (obj.cx, obj.cz, obj.poly (i, ii).x, obj.poly (i, ii).z, d) end for end for label "yz" : obj.ayz += d for i : 1 .. obj.maxpoly for ii : 1 .. 2 rotate (obj.cy, obj.cz, obj.poly (i, ii).y, obj.poly (i, ii).z, d) end for end for label "x" : for i : 1 .. obj.maxpoly for ii : 1 .. 3 obj.poly (i, ii).x += d end for end for label "y" : for i : 1 .. obj.maxpoly for ii : 1 .. 3 obj.poly (i, ii).y += d end for end for label "z" : for i : 1 .. obj.maxpoly for ii : 1 .. 2 obj.poly (i, ii).z += d end for end for label : end case end moveobject proc movecamera (s : string, d : real) case s of label "xy" : camera.axy += d for i : 1 .. obj.maxpoly for ii : 1 .. 3 rotate (camera.cx, camera.cy, obj.poly (i, ii).x, obj.poly (i, ii).y, d) end for end for label "xz" : camera.axz += d for i : 1 .. obj.maxpoly for ii : 1 .. 3 rotate (camera.cx, camera.cz, obj.poly (i, ii).x, obj.poly (i, ii).z, d) end for end for label "yz" : camera.ayz += d for i : 1 .. obj.maxpoly for ii : 1 .. 3 rotate (camera.cy, camera.cz, obj.poly (i, ii).y, obj.poly (i, ii).z, d) end for end for label "x" : camera.cx += d label "y" : camera.cy += d label "z" : camera.cz += d label "zoom" : camera.zoom += d if camera.zoom = 0 then camera.zoom += d end if label : end case end movecamera end Homer3Dengine var spike : ^Homer3Dengine new Homer3Dengine, spike %spike -> loadarf ("spike.arf") spike -> loadass ("spike.arf") colorback (black) cls View.Set ("offscreenonly") spike -> moveobject ("z", 17000) color (white) loop locate (1, 1) /*put "Object coords : ", spike -> obj.cx, " / ", spike -> obj.cy, " / ", spike -> obj.cz, " / " put "Object angles : ", spike -> obj.axy mod 360, " / ", spike -> obj.axz mod 360, " / ", spike -> obj.ayz mod 360, " / " put "Camera coords : ", spike -> camera.cx, " / ", spike -> camera.cy, " / ", spike -> camera.cz, " / " put "Camera angles : ", spike -> camera.axy mod 360, " / ", spike -> camera.axz mod 360, " / ", spike -> camera.ayz mod 360, " / " put "Camera zoom : ", spike -> camera.zoom, "X"%*/ spike -> moveobject ("xz", 1) %rotates the object in xz axis spike -> moveobject ("yz", 1) %rotates the object in xz axis %spike -> moveobject ("x", 1) %moves object in x axis %spike -> movecamera ("z", -1) %moves camera in z axis spike -> drawobject (1, 10, 1) %draws the object with color 1 and 10 and in method 1 View.Update delay (5) cls end loop |
Author: | Homer_simpson [ Mon Apr 20, 2009 12:50 pm ] |
Post subject: | Re: 3d graphing |
here's another one : Quote: class Homer3Dengine
export loadass, moveobject, drawobject, camera, obj, movecamera type dot : record x, y, z : real end record proc assign3d (var d : dot, x, y, z : real) d.x := x d.y := y d.z := z + 10 end assign3d type object : record axy, axz, ayz, cx, cy, cz : real maxpoly : int poly : array 1 .. 1000, 1 .. 2 of dot col : array 1 .. 1000 of int end record var obj : object type cam : record axy, axz, ayz, cx, cy, cz, zoom : real end record var camera : cam camera.cx := 0 camera.cy := 0 camera.cz := 0 camera.axy := 0 camera.axz := 0 camera.ayz := 0 camera.zoom := 3000 proc loadass (filename : string) var file, i : int := 0 var x1, y1, z1, x2, y2, z2, x3, y3, z3 : real var col : int loop exit when i > 250 i += 1 %read : file, x1, y1, z1, x2, y2, z2, x3, y3, z3, col x1 := (sind (i * 10) * 100) * (i / 30) x2 := (sind ((i + 1) * 10) * 100) * ((i + 1) / 30) y1 := (cosd (i * 10) * 100) * (i / 30) y2 := (cosd ((i + 1) * 10) * 100) * ((i + 1) / 30) z1 := (sind (i * 20) * 50) * (i / 30) %(i * i)/50 z2 := (sind ((i + 1) * 20) * 50) * (i / 30) %((i + 1)*(i+1)) / 50 col := 2 assign3d (obj.poly (i, 1), x1, y1, z1) assign3d (obj.poly (i, 2), x2, y2, z2) obj.col (i) := col end loop obj.maxpoly := i obj.axy := 0 obj.axz := 0 obj.ayz := 0 end loadass proc rotate (OriginX, OriginY : real, var secondpartX, secondpartY : real, Rotaion : real) var tempx := (((OriginX - secondpartX) * cosd (Rotaion)) + ((OriginY - secondpartY) * sind (Rotaion))) var tempy := (((OriginY - secondpartY) * cosd (Rotaion)) - ((OriginX - secondpartX) * sind (Rotaion))) secondpartY := OriginY - tempy secondpartX := OriginX - tempx end rotate proc findcenter (var x, y, z : real) x := 0.0 y := 0.0 z := 0.0 for i : 1 .. obj.maxpoly for ii : 1 .. 2 x += obj.poly (i, ii).x y += obj.poly (i, ii).y z += obj.poly (i, ii).z end for end for x /= (obj.maxpoly * 2) y /= (obj.maxpoly * 2) z /= (obj.maxpoly * 2) %drawfilloval (round (obj.cx / (obj.cz / camera.zoom)) + 320, round (obj.cy / (obj.cz / camera.zoom)) + 200, 10, 10, 12) end findcenter proc draw3dline (d1, d2 : dot, c : int) if d1.z not= 0 and d2.z not= 0 then Draw.ThickLine (round ((d1.x - camera.cx) / ((d1.z - camera.cz) / camera.zoom)) + 320, round ((d1.y - camera.cy) / ((d1.z - camera.cz) / camera.zoom)) + 200, round ((d2.x - camera.cx) / ((d2.z - camera.cz) / camera.zoom)) + 320, round ((d2.y - camera.cy) / ((d2.z - camera.cz) / camera.zoom)) + 200, 3, c) end if end draw3dline proc drawobject (col, col2, typ : int) var cent, tvec : dot; if typ = 1 then for i : 1 .. obj.maxpoly %draw3dpolygon (obj.poly (i, 1), obj.poly (i, 2), obj.poly (i, 3), col, col2, true) cent.x := (obj.poly (i, 1).x + obj.poly (i, 2).x) / 3 cent.y := (obj.poly (i, 1).y + obj.poly (i, 2).y) / 3 cent.z := (obj.poly (i, 1).z + obj.poly (i, 2).z) / 3 %tvec.x := cent.x + obj.normals (i).x * 2 %tvec.y := cent.y + obj.normals (i).y * 2 %tvec.z := cent.z + obj.normals (i).z * 2 %draw3dline (cent, tvec, white) draw3dline (obj.poly (i, 1), obj.poly (i, 2), col2) %draw3dpolygon (tvec, tvec, tvec, col, col2, true) end for end if end drawobject proc moveobject (s : string, d : real) findcenter (obj.cx, obj.cy, obj.cz) case s of label "xy" : obj.axy += d for i : 1 .. obj.maxpoly for ii : 1 .. 2 rotate (obj.cx, obj.cy, obj.poly (i, ii).x, obj.poly (i, ii).y, d) end for end for label "xz" : obj.axz += d for i : 1 .. obj.maxpoly for ii : 1 .. 2 rotate (obj.cx, obj.cz, obj.poly (i, ii).x, obj.poly (i, ii).z, d) end for end for label "yz" : obj.ayz += d for i : 1 .. obj.maxpoly for ii : 1 .. 2 rotate (obj.cy, obj.cz, obj.poly (i, ii).y, obj.poly (i, ii).z, d) end for end for label "x" : for i : 1 .. obj.maxpoly for ii : 1 .. 3 obj.poly (i, ii).x += d end for end for label "y" : for i : 1 .. obj.maxpoly for ii : 1 .. 3 obj.poly (i, ii).y += d end for end for label "z" : for i : 1 .. obj.maxpoly for ii : 1 .. 2 obj.poly (i, ii).z += d end for end for label : end case end moveobject proc movecamera (s : string, d : real) case s of label "xy" : camera.axy += d for i : 1 .. obj.maxpoly for ii : 1 .. 3 rotate (camera.cx, camera.cy, obj.poly (i, ii).x, obj.poly (i, ii).y, d) end for end for label "xz" : camera.axz += d for i : 1 .. obj.maxpoly for ii : 1 .. 3 rotate (camera.cx, camera.cz, obj.poly (i, ii).x, obj.poly (i, ii).z, d) end for end for label "yz" : camera.ayz += d for i : 1 .. obj.maxpoly for ii : 1 .. 3 rotate (camera.cy, camera.cz, obj.poly (i, ii).y, obj.poly (i, ii).z, d) end for end for label "x" : camera.cx += d label "y" : camera.cy += d label "z" : camera.cz += d label "zoom" : camera.zoom += d if camera.zoom = 0 then camera.zoom += d end if label : end case end movecamera end Homer3Dengine var spike : ^Homer3Dengine new Homer3Dengine, spike %spike -> loadarf ("spike.arf") spike -> loadass ("spike.arf") colorback (black) cls View.Set ("offscreenonly") spike -> moveobject ("z", 17000) color (white) loop locate (1, 1) /*put "Object coords : ", spike -> obj.cx, " / ", spike -> obj.cy, " / ", spike -> obj.cz, " / " put "Object angles : ", spike -> obj.axy mod 360, " / ", spike -> obj.axz mod 360, " / ", spike -> obj.ayz mod 360, " / " put "Camera coords : ", spike -> camera.cx, " / ", spike -> camera.cy, " / ", spike -> camera.cz, " / " put "Camera angles : ", spike -> camera.axy mod 360, " / ", spike -> camera.axz mod 360, " / ", spike -> camera.ayz mod 360, " / " put "Camera zoom : ", spike -> camera.zoom, "X"%*/ spike -> moveobject ("xy", .5) %rotates the object in xz axis spike -> moveobject ("xz", 1) %rotates the object in xz axis spike -> moveobject ("yz", 1) %rotates the object in xz axis %spike -> moveobject ("x", 1) %moves object in x axis %spike -> movecamera ("z", -1) %moves camera in z axis spike -> drawobject (1, 10, 1) %draws the object with color 1 and 10 and in method 1 View.Update delay (5) cls end loop you can replace this procedure to get different effects Quote: |
Author: | saltpro15 [ Mon Apr 20, 2009 2:20 pm ] |
Post subject: | RE:3d graphing |
... * starts slow clap * |
Author: | Homer_simpson [ Tue Apr 21, 2009 5:45 pm ] |
Post subject: | Re: 3d graphing |
here's one with controls : arrow keys Quote: class Homer3Dengine
export loadass, moveobject, drawobject, camera, obj, movecamera type dot : record x, y, z : real end record proc assign3d (var d : dot, x, y, z : real) d.x := x d.y := y d.z := z + 10 end assign3d type object : record axy, axz, ayz, cx, cy, cz : real maxpoly : int poly : array 1 .. 1000, 1 .. 2 of dot col : array 1 .. 1000 of int end record var obj : object type cam : record axy, axz, ayz, cx, cy, cz, zoom : real end record var camera : cam camera.cx := 0 camera.cy := 0 camera.cz := 0 camera.axy := 0 camera.axz := 0 camera.ayz := 0 camera.zoom := 3000 proc loadass (var1, var2 : real) var file, i : int := 0 var x1, y1, z1, x2, y2, z2 : real var col : int %var var1 := 30 loop exit when i > 450 i += 1 %read : file, x1, y1, z1, x2, y2, z2, x3, y3, z3, col x1 := (sind (i * var1) * 100) * (i / 30) x2 := (sind ((i + 1) * var1) * 100) * ((i + 1) / 30) y1 := (cosd (i * var1) * 100) * (i / 30) y2 := (cosd ((i + 1) * var1) * 100) * ((i + 1) / 30) z1 := (sind (i * var2) * 50) * (i / 50) %(i * i)/50 z2 := (sind ((i + 1) * var2) * 50) * ((i + 1) / 50) %((i + 1)*(i+1)) / 50 col := 2 assign3d (obj.poly (i, 1), x1, y1, z1) assign3d (obj.poly (i, 2), x2, y2, z2) obj.col (i) := col end loop obj.maxpoly := i obj.axy := 0 obj.axz := 0 obj.ayz := 0 end loadass proc rotate (OriginX, OriginY : real, var secondpartX, secondpartY : real, Rotaion : real) var tempx := (((OriginX - secondpartX) * cosd (Rotaion)) + ((OriginY - secondpartY) * sind (Rotaion))) var tempy := (((OriginY - secondpartY) * cosd (Rotaion)) - ((OriginX - secondpartX) * sind (Rotaion))) secondpartY := OriginY - tempy secondpartX := OriginX - tempx end rotate proc findcenter (var x, y, z : real) x := 0.0 y := 0.0 z := 0.0 for i : 1 .. obj.maxpoly for ii : 1 .. 2 x += obj.poly (i, ii).x y += obj.poly (i, ii).y z += obj.poly (i, ii).z end for end for x /= (obj.maxpoly * 2) y /= (obj.maxpoly * 2) z /= (obj.maxpoly * 2) %drawfilloval (round (obj.cx / (obj.cz / camera.zoom)) + 320, round (obj.cy / (obj.cz / camera.zoom)) + 200, 10, 10, 12) end findcenter proc draw3dline (d1, d2 : dot, c : int) if d1.z not= 0 and d2.z not= 0 then Draw.ThickLine (round ((d1.x - camera.cx) / ((d1.z - camera.cz) / camera.zoom)) + 320, round ((d1.y - camera.cy) / ((d1.z - camera.cz) / camera.zoom)) + 200, round ((d2.x - camera.cx) / ((d2.z - camera.cz) / camera.zoom)) + 320, round ((d2.y - camera.cy) / ((d2.z - camera.cz) / camera.zoom)) + 200, 1, c) end if end draw3dline proc drawobject (col, col2, typ : int) var cent, tvec : dot; if typ = 1 then for i : 1 .. obj.maxpoly %draw3dpolygon (obj.poly (i, 1), obj.poly (i, 2), obj.poly (i, 3), col, col2, true) cent.x := (obj.poly (i, 1).x + obj.poly (i, 2).x) / 3 cent.y := (obj.poly (i, 1).y + obj.poly (i, 2).y) / 3 cent.z := (obj.poly (i, 1).z + obj.poly (i, 2).z) / 3 %tvec.x := cent.x + obj.normals (i).x * 2 %tvec.y := cent.y + obj.normals (i).y * 2 %tvec.z := cent.z + obj.normals (i).z * 2 %draw3dline (cent, tvec, white) draw3dline (obj.poly (i, 1), obj.poly (i, 2), col2) %draw3dpolygon (tvec, tvec, tvec, col, col2, true) end for end if end drawobject proc moveobject (s : string, d : real) findcenter (obj.cx, obj.cy, obj.cz) case s of label "xy" : obj.axy += d for i : 1 .. obj.maxpoly for ii : 1 .. 2 rotate (obj.cx, obj.cy, obj.poly (i, ii).x, obj.poly (i, ii).y, d) end for end for label "xz" : obj.axz += d for i : 1 .. obj.maxpoly for ii : 1 .. 2 rotate (obj.cx, obj.cz, obj.poly (i, ii).x, obj.poly (i, ii).z, d) end for end for label "yz" : obj.ayz += d for i : 1 .. obj.maxpoly for ii : 1 .. 2 rotate (obj.cy, obj.cz, obj.poly (i, ii).y, obj.poly (i, ii).z, d) end for end for label "x" : for i : 1 .. obj.maxpoly for ii : 1 .. 3 obj.poly (i, ii).x += d end for end for label "y" : for i : 1 .. obj.maxpoly for ii : 1 .. 3 obj.poly (i, ii).y += d end for end for label "z" : for i : 1 .. obj.maxpoly for ii : 1 .. 2 obj.poly (i, ii).z += d end for end for label : end case end moveobject proc movecamera (s : string, d : real) case s of label "xy" : camera.axy += d for i : 1 .. obj.maxpoly for ii : 1 .. 3 rotate (camera.cx, camera.cy, obj.poly (i, ii).x, obj.poly (i, ii).y, d) end for end for label "xz" : camera.axz += d for i : 1 .. obj.maxpoly for ii : 1 .. 3 rotate (camera.cx, camera.cz, obj.poly (i, ii).x, obj.poly (i, ii).z, d) end for end for label "yz" : camera.ayz += d for i : 1 .. obj.maxpoly for ii : 1 .. 3 rotate (camera.cy, camera.cz, obj.poly (i, ii).y, obj.poly (i, ii).z, d) end for end for label "x" : camera.cx += d label "y" : camera.cy += d label "z" : camera.cz += d label "zoom" : camera.zoom += d if camera.zoom = 0 then camera.zoom += d end if label : end case end movecamera end Homer3Dengine var spike : ^Homer3Dengine new Homer3Dengine, spike %spike -> loadarf ("spike.arf") colorback (black) cls View.Set ("offscreenonly") var ch : char := " "; var v, v2 : real := 20.5 var xy, xz, yz : real v2 := 20 spike -> loadass (v, v2) spike -> moveobject ("z", 17000) color (white) loop if Input.hasch then ch := getchar if ord (ch) = 200 then v += .1 end if if ord (ch) = 208 then v -= .1 end if if ord (ch) = 205 then v2 += .1 end if if ord (ch) = 203 then v2 -= .1 end if xz := spike -> obj.axz yz := spike -> obj.ayz xy := spike -> obj.axy spike -> loadass (v, v2) spike -> moveobject ("z", 8500) %spike -> moveobject ("xy", xy) %spike -> moveobject ("xz", xz) %spike -> moveobject ("yz", yz) spike -> moveobject ("z", 17000) end if locate (1, 1) /*put "Object coords : ", spike -> obj.cx, " / ", spike -> obj.cy, " / ", spike -> obj.cz, " / " put "Object angles : ", spike -> obj.axy mod 360, " / ", spike -> obj.axz mod 360, " / ", spike -> obj.ayz mod 360, " / " put "Camera coords : ", spike -> camera.cx, " / ", spike -> camera.cy, " / ", spike -> camera.cz, " / " put "Camera angles : ", spike -> camera.axy mod 360, " / ", spike -> camera.axz mod 360, " / ", spike -> camera.ayz mod 360, " / " put "Camera zoom : ", spike -> camera.zoom, "X"%*/ spike -> moveobject ("xy", .5) %rotates the object in xz axis spike -> moveobject ("xz", 1) %rotates the object in xz axis spike -> moveobject ("yz", 1) %rotates the object in xz axis %spike -> moveobject ("x", 1) %moves object in x axis %spike -> movecamera ("z", -1) %moves camera in z axis spike -> drawobject (1, 10, 1) %draws the object with color 1 and 10 and in method 1 View.Update delay (5) cls end loop |