3D ISOMETRIC MINI ENGINE IN C DOT NET

Original Action Script source code :

 

 

// Action script.../*z direction will be implemented using inverse cos and sin functionsz is not implemented here and will show objects in diferent angle u can implement z direction !!!*/// [onClipEvent of sprite 2 in frame 1] onClipEvent (load) { var xi = 100; var yi = 100; var r = 50; var x1 = 0; var x2 = 0; var y1 = 0; var y2 = 0; var g = 4; var ux = 0; var uy = 0; var z = 1; var i = 0; var k = 0; x1 = _root.cosx(1, ux, xi, this); y1 = _root.sinx(1, uy, yi, this); x2 = _root.cosx(1, ux, xi, this); y2 = _root.sinx(1, uy, yi, this); var grouthy = 180; var j = 40; var A; } // [onClipEvent of sprite 2 in frame 1] onClipEvent (load) { var xi = 100; var yi = 100; var r = 50; var x1 = 0; var x2 = 0; var y1 = 0; var y2 = 0; var g = 4; var ux = 0; var uy = 0; var z = 1; var i = 0; var k = 0; x1 = _root.cosx(1, ux, xi, this); y1 = _root.sinx(1, uy, yi, this); x2 = _root.cosx(1, ux, xi, this); y2 = _root.sinx(1, uy, yi, this); var grouthy = 18; var j = 40; var A; } // [onClipEvent of sprite 2 in frame 1] onClipEvent (load) { var xi = 100; var yi = 100; var r = 50; var x1 = 0; var x2 = 0; var y1 = 0; var y2 = 0; var g = 4; var ux = 0; var uy = 0; var z = 1; var i = 0; var k = 0; x1 = _root.cosx(1, ux, xi, this); y1 = _root.sinx(1, uy, yi, this); x2 = _root.cosx(1, ux, xi, this); y2 = _root.sinx(1, uy, yi, this); var grouthy = 1.800000; var j = 40; var A; }




// [Action in Frame 1]
 function vals(ii, o, ot) { switch (ii) { case 1:  { o.patrat1.cx1 = o.x1;  o.patrat1.cy1 = o.y1; break; } case 2:  { o.patrat1.cx2 = o.x1; o.patrat1.cy2 = o.y1; break; } case 3:  { o.patrat1.cx3 = o.x1; o.patrat1.cy3 = o.y1; break; } case 4:  { o.patrat1.cx4 = o.x1; o.patrat1.cy4 = o.y1; break; } case 5: { o.patrat2.cx5 = o.x1; o.patrat2.cy5 = o.y1; break; } case 6: { o.patrat2.cx6 = o.x1; o.patrat2.cy6 = o.y1; break; } case 7: { o.patrat2.cx7 = o.x1; o.patrat2.cy7 = o.y1; break; } case 8: { o.patrat2.cx8 = o.x1; o.patrat2.cy8 = o.y1; valsS(ot, o); break; } default: { break; } }// End of switch }// End of the function 
function valsS(ot, o) { ot.text = ""; ot.text = ot.text + o.patrat1.cx1; ot.text = ot.text + "\t"; ot.text = ot.text + o.patrat1.cy1; ot.text = ot.text + "\n"; ot.text = ot.text + o.patrat1.cx2; ot.text = ot.text + "\t"; ot.text = ot.text + o.patrat1.cy2; ot.text = ot.text + "\n";  ot.text = ot.text + o.patrat1.cx3; ot.text = ot.text + "\t";  ot.text = ot.text + o.patrat1.cy3; ot.text = ot.text + "\n";  ot.text = ot.text + o.patrat1.cx4; ot.text = ot.text + "\t";  ot.text = ot.text + o.patrat1.cy4;  ot.text = ot.text + "\n"; ot.text = ot.text + o.patrat2.cx5;  ot.text = ot.text + "\t"; ot.text = ot.text + o.patrat2.cy5; ot.text = ot.text + "\n";  ot.text = ot.text + o.patrat2.cx6;  ot.text = ot.text + "\t";  ot.text = ot.text + o.patrat2.cy6; ot.text = ot.text + "\n";  ot.text = ot.text + o.patrat2.cx7; ot.text = ot.text + "\t";  ot.text = ot.text + o.patrat2.cy7; ot.text = ot.text + "\n";  ot.text = ot.text + o.patrat2.cx8;  ot.text = ot.text + "\t";  ot.text = ot.text + o.patrat2.cy8;  ot.text = ot.text + "\n"; }   // End of the function     function drawCube(o) {   _root.moveTo(o.patrat1.cx1, o.patrat1.cy1);   _root.line(o.patrat1.cx1, o.patrat1.cy1, o.patrat1.cx2, o.patrat1.cy2);   _root.line(o.patrat1.cx2, o.patrat1.cy2, o.patrat1.cx3, o.patrat1.cy3); _root.line(o.patrat1.cx3, o.patrat1.cy3, o.patrat1.cx4, o.patrat1.cy4);  _root.line(o.patrat1.cx4, o.patrat1.cy4, o.patrat1.cx1, o.patrat1.cy1);  _root.line(o.patrat1.cx1, o.patrat1.cy1, o.patrat2.cx5, o.patrat2.cy5);  _root.line(o.patrat2.cx5, o.patrat2.cy5, o.patrat2.cx6, o.patrat2.cy6);  _root.line(o.patrat2.cx6, o.patrat2.cy6, o.patrat2.cx7, o.patrat2.cy7); _root.line(o.patrat2.cx7, o.patrat2.cy7, o.patrat2.cx8, o.patrat2.cy8);  _root.line(o.patrat2.cx8, o.patrat2.cy8, o.patrat2.cx5, o.patrat2.cy5);  _root.moveTo(o.patrat1.cx2, o.patrat1.cy2);  _root.line(o.patrat1.cx2, o.patrat1.cy2, o.patrat2.cx6, o.patrat2.cy6);  _root.moveTo(o.patrat1.cx3, o.patrat1.cy3);  _root.line(o.patrat1.cx3, o.patrat1.cy3, o.patrat2.cx7, o.patrat2.cy7);  _root.moveTo(o.patrat1.cx4, o.patrat1.cy4);  _root.line(o.patrat1.cx4, o.patrat1.cy4, o.patrat2.cx8, o.patrat2.cy8);  fillCube(o);  }  //End of the function   function calc(o, ot, xyz) {  o.xi = _root._ymouse;  o.yi = _root._xmouse;  _root.lineStyle(1, 0, 10);  var _l3 = 1;  while (_l3 <= 361) {  o.x1 = _root.cosx(xyz, _l3 + o.z, o.ux, o) + xyz + 250;  o.y1 = _root.sinx(xyz, _l3 + o.z, o.uy, o) + xyz + 250;  o.x2 = o.x1;  o.y2 = o.y1;  o.i++;  _root.vals(o.i, o, ot);  _l3 = _l3 + 360 / o.g;  }  // end while  o.i--;  }  // End of the function   function calc2(o, ot, xyz)  {  o.xi = _root._ymouse - (o.grouthy = o.grouthy + 1);  o.yi = _root._xmouse;  _root.lineStyle(1, 0, 10);  var _l3 = 1;  while (_l3 <= 361) {  o.x1 = _root.cosx(xyz, _l3 + o.z, o.ux, o) + xyz + 250;  o.y1 = _root.sinx(xyz, _l3 + o.z, o.uy, o) + xyz + 250;  o.x2 = o.x1;  o.y2 = o.y1;   o.i++;  _root.vals(o.i, o, ot);  _l3 = _l3 + 360 / o.g;  }  // end while }  //  End of the function   function sinx(a, U, z, o) {  var _l1 = Math.sin((a + U) / 57.400000) * o.r + o.xi;  return(_l1);  } //  // End of the function function cosx(b, U, z, o) {  var _l1 = Math.cos((b + U) / 57.400000) * o.r + o.yi;  return(_l1);  }  // End of the function   function fillCube(oo) {  _root.beginFill(0, oo.j);  _root.moveTo(oo.patrat1.cx1, oo.patrat1.cy1);  _root.lineTo(oo.patrat1.cx2, oo.patrat1.cy2);  _root.lineTo(oo.patrat2.cx6, oo.patrat2.cy6);  _root.lineTo(oo.patrat2.cx5, oo.patrat2.cy5);  _root.lineTo(oo.patrat1.cx1, oo.patrat1.cy1); _root.endFill();  _root.beginFill(4080, oo.j);  _root.moveTo(oo.patrat1.cx1, oo.patrat1.cy1);  _root.lineTo(oo.patrat1.cx2, oo.patrat1.cy2);  _root.lineTo(oo.patrat1.cx3, oo.patrat1.cy3);  _root.lineTo(oo.patrat1.cx4, oo.patrat1.cy4);  _root.lineTo(oo.patrat1.cx1, oo.patrat1.cy1);  _root.endFill();  _root.beginFill(16711680, oo.j);  _root.moveTo(oo.patrat2.cx5, oo.patrat2.cy5);  _root.lineTo(oo.patrat2.cx6, oo.patrat2.cy6);  _root.lineTo(oo.patrat2.cx7, oo.patrat2.cy7);  _root.lineTo(oo.patrat2.cx8, oo.patrat2.cy8);  _root.lineTo(oo.patrat2.cx5, oo.patrat2.cy5);  _root.endFill();  _root.beginFill(21760, oo.j);  _root.moveTo(oo.patrat2.cx5, oo.patrat2.cy5);  _root.lineTo(oo.patrat2.cx8, oo.patrat2.cy8);  _root.lineTo(oo.patrat1.cx4, oo.patrat1.cy4);  _root.lineTo(oo.patrat1.cx1, oo.patrat1.cy1);  _root.lineTo(oo.patrat2.cx5, oo.patrat2.cy5);  _root.endFill();  _root.beginFill(17408, oo.j);  _root.moveTo(oo.patrat2.cx7, oo.patrat2.cy7);  _root.lineTo(oo.patrat2.cx8, oo.patrat2.cy8);  _root.lineTo(oo.patrat1.cx4, oo.patrat1.cy4);  _root.lineTo(oo.patrat1.cx3, oo.patrat1.cy3);  _root.lineTo(oo.patrat2.cx7, oo.patrat2.cy7);  _root.endFill();  _root.beginFill(85, oo.j);  _root.moveTo(oo.patrat2.cx7, oo.patrat2.cy7);  _root.lineTo(oo.patrat2.cx6, oo.patrat2.cy6); _root.lineTo(oo.patrat1.cx2, oo.patrat1.cy2);  _root.lineTo(oo.patrat1.cx3, oo.patrat1.cy3);  _root.lineTo(oo.patrat2.cx7, oo.patrat2.cy7);  _root.endFill();  } //  End of the function   function line(x1, y1, x2, y2) {  _root.lineStyle(1, 85, 100);  _root.moveTo(x1, y1);  _root.lineTo(x2, y2);  }  // End of the function   function resetvarI(o) {  if (o.i >= 8) { o.i = 0; }  // end if  }   // End of the function    function cubeExecution(o, ot, xyz) {  resetvarI(o);  o.z = o.z + 2;  calc(o, ot, xyz);  calc2(o, ot, xyz);  drawCube(o, xyz);  clearInterval(o.A);  }  // End of the function   function DOALL3() {  cubeExecution(_root.cub3, _root.txtC, 180);  }  // End of the function   function DOALL1() {  clearAll();  cubeExecution(_root.cub1, _root.txtA, 0);  } // End of the function   function DOALL2() {  cubeExecution(_root.cub2, _root.txtB, 360);  }  // End of the function   function clearAll() {  _root.clear();  }  // End of the function   function drawPoint(px, py) {  _root.lineStyle(1, 0, 100);  _root.moveTo(px - 2, py);  _root.lineTo(px + 2, py);  _root.moveTo(px, py - 2);  _root.lineTo(px, py + 2); }  // End of the function   function drawLine(px1, py1, px2, py2) {  _root.lineStyle(1, 0, 100);  _root.moveTo(px1, py1);  _root.lineTo(px2, py2);  }  //   End of the function   function drawPointsSquare(px1, py1, px2, py2, px3, py3, px4, py4) {  _root.drawPoint(px1, py1);  _root.drawPoint(px2, py2);  _root.drawPoint(px3, py3);  _root.drawPoint(px4, py4);  } // End of the function 
function drawSquare(px1, py1, px2, py2, px3, py3, px4, py4) {  _root.drawLine(px1, py1, px2, py2);  _root.drawLine(px2, py2, px3, py3);  _root.drawLine(px3, py3, px4, py4);  _root.drawLine(px4, py4, px1, py1); }  //       End of the function   function drawPointsnGone(n, s, px, py) {  _root.drawnGone(n, s, px, py, "points");  }   // End of the function    function drawnGone(n, s, px, py, tip) { var _l4 = Math.cos(px / 57.400000) * s + px;  var _l3 = Math.sin(py / 57.400000) * s + py;  var _l7 = Math.cos(px / 57.400000) * s + px;  var _l6 = Math.sin(py / 57.400000) * s + py;  _root.lineStyle(1, 0, 100);  var _l2 = 1;  while (_l2 <= 361) { _l4 = Math.cos(_l2 / 57.400000) * s + px;  _l3 = Math.sin(_l2 / 57.400000) * s + py;  if (tip == "points") { _root.drawPoint(_l4, _l3);  }   // end if   if (tip != "points") {  if (_l2 > 1) {  _root.moveTo(_l4, _l3);  _root.lineTo(_l7, _l6);  }  // end if  }  // end if  _l7 = _l4;  _l6 = _l3;  _l2 = _l2 + 360 / n;  }  // end while  }  // End of the function   function drawPointsPolyGone() { }  // End of the function   function drawPolyGone() { }  // End of the function   function drawCircle(n, s, px, py, tip) {  _root.drawnGone(n, s, px, py, tip);  }  // End of the function   function drawElipse() { }  // End of the function   function fillArea3Points(px1, py1, px2, py2, px3, py3, colorx, alfa) {  _root.beginFill(colorx, alfa);  _root.moveTo(px1, py1);  _root.lineTo(px2, py2);  _root.lineTo(px3, py3);  _root.lineTo(px1, py1);  _root.endFill();  }  //  End of the function   function fillArea4Points(px1, py1, px2, py2, px3, py3, px4, py4, colorx, alfa) {  _root.beginFill(colorx, alfa);  _root.moveTo(px1, py1);  _root.lineTo(px2, py2);  _root.lineTo(px3, py3);  _root.lineTo(px4, py4);  _root.lineTo(px1, py1);  _root.endFill();  }         // End of the function 
_quality = "low";  _root.onMouseMove = function () { 
_root.cub1.z = _root.cub1.z + 1;  _root.cub2.z = _root.cub2.z - 1;  _root.cub3.z = _root.cub3.z - 0.100000; };  _root.onMouseDown = function () { _root.cub1.grouthy = 1;  _root.cub1.z = _root.cub1.z + 2;  _root.cub2.grouthy = 10;  _root.cub2.z = _root.cub2.z - 2;  _root.cub3.grouthy = -1;  _root.cub3.z = _root.cub3.z - 30;  _root.drawPoint(_xmouse, _ymouse);  _root.drawnGone(5, 100, _xmouse, _ymouse, "notpoints");  _root.drawCircle(60, 200, _xmouse, _ymouse, "notpoints");  _root.drawPointsnGone(5, 100, _xmouse, _ymouse);  _root.fillArea3Points(0, 0, 0, 100, 100, 0, 17, 5);  _root.fillArea4Points(100, 100, 200, 100, 200, 200, 100, 200, 17, 5); };
 _root.onEnterFrame = function () { };


// Action script... // [onClipEvent of sprite 1 in frame 1] onClipEvent (load) {  var cx1;  var cx2;   var cx3;    var cx4;     var cy1;      var cy2;       var cy3;        var cy4;         }    // [onClipEvent of sprite 1 in frame 1]  onClipEvent (load) {  var cx5;  var cx6;  var cx7;  var cx8;  var cy5;  var cy6;   var cy7;    var cy8;    }

// Action script... on (press) { _root.clear(); } 


 

 

and this is the c dot net source code i write for dot net platform :

 

 

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;
namespace as3dsrc{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }
        string mouseposxy = " ";        float _ymouse = 100;        float _xmouse = 100;        Font font0 = new Font("Arial", 10);        Pen pen0 = new Pen(Color.Black);        Brush brush0 = new SolidBrush(Color.Gray);
        Graphics g;        Cub cub1 = new Cub(300, 600, 25, 0, 0, 4, 0, 0, 0, 0, 0, 1, 2, 0, 1);        Cub cub2 = new Cub(400, 600, 50, 0, 0, 4, 0, 0, 0, 0, 0, 1, 2, 0, 1);        Cub cub3 = new Cub(600, 600, 100, 0, 0, 4, 0, 0, 0, 0, 0, 1, 2, 0, 1);        Objectot txtA = new Objectot();        Objectot txtB = new Objectot();        Objectot txtC = new Objectot();        float coordx1, coordy1, coordx2, coordy2;


                void vals(int ii, Cub o, Objectot ot)        {            switch (ii)            {                case 1:                    {                        o.patrat1.cx1 = o.x1;                        o.patrat1.cy1 = o.y1;                        break;                    }                case 2:                    {                        o.patrat1.cx2 = o.x1;                        o.patrat1.cy2 = o.y1;                        break;                    }                case 3:                    {                        o.patrat1.cx3 = o.x1;                        o.patrat1.cy3 = o.y1;                        break;                    }                case 4:                    {                        o.patrat1.cx4 = o.x1;                        o.patrat1.cy4 = o.y1;                        break;                    }                case 5:                    {                        o.patrat2.cx5 = o.x1;                        o.patrat2.cy5 = o.y1;                        break;                    }                case 6:                    {                        o.patrat2.cx6 = o.x1;                        o.patrat2.cy6 = o.y1;                        break;                    }                case 7:                    {                        o.patrat2.cx7 = o.x1;                        o.patrat2.cy7 = o.y1;                        break;                    }                case 8:                    {                        o.patrat2.cx8 = o.x1;                        o.patrat2.cy8 = o.y1;                        valsS(ot, o);                        break;                    }                default:                    {                        break;                    }            }        }
        void valsS(Objectot ot, Cub o)        {            ot.text = "";            ot.text = ot.text + o.patrat1.cx1;            ot.text = ot.text + "\t";            ot.text = ot.text + o.patrat1.cy1;            ot.text = ot.text + "\n";            ot.text = ot.text + o.patrat1.cx2;            ot.text = ot.text + "\t";            ot.text = ot.text + o.patrat1.cy2;            ot.text = ot.text + "\n";            ot.text = ot.text + o.patrat1.cx3;            ot.text = ot.text + "\t";            ot.text = ot.text + o.patrat1.cy3;            ot.text = ot.text + "\n";            ot.text = ot.text + o.patrat1.cx4;            ot.text = ot.text + "\t";            ot.text = ot.text + o.patrat1.cy4;            ot.text = ot.text + "\n";            ot.text = ot.text + o.patrat2.cx5;            ot.text = ot.text + "\t";            ot.text = ot.text + o.patrat2.cy5;            ot.text = ot.text + "\n";            ot.text = ot.text + o.patrat2.cx6;            ot.text = ot.text + "\t";            ot.text = ot.text + o.patrat2.cy6;            ot.text = ot.text + "\n";            ot.text = ot.text + o.patrat2.cx7;            ot.text = ot.text + "\t";            ot.text = ot.text + o.patrat2.cy7;            ot.text = ot.text + "\n";            ot.text = ot.text + o.patrat2.cx8;            ot.text = ot.text + "\t";            ot.text = ot.text + o.patrat2.cy8;            ot.text = ot.text + "\n";        }
        void drawCube(Cub o)        {
            moveTo(o.patrat1.cx1, o.patrat1.cy1);            line(o.patrat1.cx1, o.patrat1.cy1, o.patrat1.cx2, o.patrat1.cy2);            line(o.patrat1.cx2, o.patrat1.cy2, o.patrat1.cx3, o.patrat1.cy3);            line(o.patrat1.cx3, o.patrat1.cy3, o.patrat1.cx4, o.patrat1.cy4);            line(o.patrat1.cx4, o.patrat1.cy4, o.patrat1.cx1, o.patrat1.cy1);            line(o.patrat1.cx1, o.patrat1.cy1, o.patrat2.cx5, o.patrat2.cy5);            line(o.patrat2.cx5, o.patrat2.cy5, o.patrat2.cx6, o.patrat2.cy6);            line(o.patrat2.cx6, o.patrat2.cy6, o.patrat2.cx7, o.patrat2.cy7);            line(o.patrat2.cx7, o.patrat2.cy7, o.patrat2.cx8, o.patrat2.cy8);            line(o.patrat2.cx8, o.patrat2.cy8, o.patrat2.cx5, o.patrat2.cy5);            moveTo(o.patrat1.cx2, o.patrat1.cy2);            line(o.patrat1.cx2, o.patrat1.cy2, o.patrat2.cx6, o.patrat2.cy6);            moveTo(o.patrat1.cx3, o.patrat1.cy3);            line(o.patrat1.cx3, o.patrat1.cy3, o.patrat2.cx7, o.patrat2.cy7);            moveTo(o.patrat1.cx4, o.patrat1.cy4);            line(o.patrat1.cx4, o.patrat1.cy4, o.patrat2.cx8, o.patrat2.cy8);            fillCube(o);

        }
        
        void lineStyle(int width, Color c, int alpha){            //select a pen ...        }
        void calc(Cub o, Objectot ot, float xyz)        {
            o.xi = _ymouse;            o.yi = _xmouse;            lineStyle(1, Color.Black, 10);            float _l3 = 1;            while (_l3 <= 361)            {                o.x1 = cosx(xyz, _l3 + o.z, o.ux, o) + xyz + 250;                o.y1 = sinx(xyz, _l3 + o.z, o.uy, o) + xyz + 250;                o.x2 = o.x1;                o.y2 = o.y1;                o.i++;                vals((int)o.i, o, ot);                _l3 = _l3 + 360 / o.g;            }            // end while             o.i--;
        }
        void calc2(Cub o, Objectot ot, float xyz)        {
            o.xi = _ymouse - (o.grouthy = o.grouthy + (float) 0.25);   //replace 0.5 to modify the grouthy rate             o.yi = _xmouse;            lineStyle(1, Color.Black, 10);            float _l3 = 1;            while (_l3 <= 361)            {                o.x1 = cosx(xyz, _l3 + o.z, o.ux, o) + xyz + 250;                o.y1 = sinx(xyz, _l3 + o.z, o.uy, o) + xyz + 250;                o.x2 = o.x1;                o.y2 = o.y1;                o.i++;                vals((int)o.i, o, ot);                _l3 = _l3 + 360 / o.g;            }            // end while        }
   



        float sinx(float a, float U, float z, Cub o)        {
            float _l1 = (float)Math.Sin((a + U) / 57.400000) * o.r + o.xi;            return (_l1);
        }        float cosx(float b, float U, float z, Cub o)        {
            float _l1 = (float)Math.Cos((b + U) / 57.400000) * o.r + o.yi;            return (_l1);
        }
        void beginFill(Color c, float j) {           //fill an object graphic          // g.FillRectangle(brush0, this.coordx1, this.coordy1, this.coordx2, this.coordy2);        }        void moveTo(float vcx,float vcy) {          //select a point            this.coordx1 = vcx;            this.coordy1 = vcy;        }        void lineTo(float vcx, float vcy) {           // draw a line to this coords from other coords specified by moveTo()            this.coordx2 = vcx;            this.coordy2 = vcy;            g.DrawLine(pen0, coordx1, coordy1, coordx2, coordy2);            moveTo(vcx, vcy);        }        void endFill() {          //end the fill        }
        void fillCube(Cub oo)        {
            beginFill(Color.Black, oo.j);            moveTo(oo.patrat1.cx1, oo.patrat1.cy1);            lineTo(oo.patrat1.cx2, oo.patrat1.cy2);            lineTo(oo.patrat2.cx6, oo.patrat2.cy6);            lineTo(oo.patrat2.cx5, oo.patrat2.cy5);            lineTo(oo.patrat1.cx1, oo.patrat1.cy1);            endFill();            beginFill(Color.Black, oo.j);            moveTo(oo.patrat1.cx1, oo.patrat1.cy1);            lineTo(oo.patrat1.cx2, oo.patrat1.cy2);            lineTo(oo.patrat1.cx3, oo.patrat1.cy3);            lineTo(oo.patrat1.cx4, oo.patrat1.cy4);            lineTo(oo.patrat1.cx1, oo.patrat1.cy1);            endFill();            beginFill(Color.Black, oo.j);            moveTo(oo.patrat2.cx5, oo.patrat2.cy5);            lineTo(oo.patrat2.cx6, oo.patrat2.cy6);            lineTo(oo.patrat2.cx7, oo.patrat2.cy7);            lineTo(oo.patrat2.cx8, oo.patrat2.cy8);            lineTo(oo.patrat2.cx5, oo.patrat2.cy5);            endFill();            beginFill(Color.Black, oo.j);            moveTo(oo.patrat2.cx5, oo.patrat2.cy5);            lineTo(oo.patrat2.cx8, oo.patrat2.cy8);            lineTo(oo.patrat1.cx4, oo.patrat1.cy4);            lineTo(oo.patrat1.cx1, oo.patrat1.cy1);            lineTo(oo.patrat2.cx5, oo.patrat2.cy5);            endFill();            beginFill(Color.Black, oo.j);            moveTo(oo.patrat2.cx7, oo.patrat2.cy7);            lineTo(oo.patrat2.cx8, oo.patrat2.cy8);            lineTo(oo.patrat1.cx4, oo.patrat1.cy4);            lineTo(oo.patrat1.cx3, oo.patrat1.cy3);            lineTo(oo.patrat2.cx7, oo.patrat2.cy7);            endFill();            beginFill(Color.Black, oo.j);            moveTo(oo.patrat2.cx7, oo.patrat2.cy7);            lineTo(oo.patrat2.cx6, oo.patrat2.cy6);            lineTo(oo.patrat1.cx2, oo.patrat1.cy2);            lineTo(oo.patrat1.cx3, oo.patrat1.cy3);            lineTo(oo.patrat2.cx7, oo.patrat2.cy7);            endFill();
        }        void line(float x1, float y1, float x2, float y2)        {
            lineStyle(1, Color.Black, 100);            moveTo(x1, y1);            lineTo(x2, y2);
        }        void resetvarI(Cub o) { if (o.i >= 8) { o.i = 0; } }
        void clearInterval(float a) {          // tick of clock        }
        void cubeExecution(Cub o, Objectot ot, float xyz)        {
            resetvarI(o);            o.z = o.z + 1;            calc(o, ot, xyz);            calc2(o, ot, xyz);            drawCube(o);            clearInterval(o.A);
        }        void DOALL3()        {
            cubeExecution(cub3, txtC, 1);
        }        void DOALL1()        {
            clearAll();            cubeExecution(cub1, txtA, 20);
        }        void DOALL2()        {
            cubeExecution(cub2, txtB, 30);
        }        void clear() {            g.Clear(Color.White);        }        void clearAll()        {
            clear();
        }        void drawPoint(float px, float py)        {
            lineStyle(1, Color.Black, 100);            moveTo(px - 2, py);            lineTo(px + 2, py);            moveTo(px, py - 2);            lineTo(px, py + 2);
        }        void drawLine(float px1, float py1, float px2, float py2)        {
            lineStyle(1, Color.Black, 100);            moveTo(px1, py1);            lineTo(px2, py2);
        }        void drawPointsSquare(float px1, float py1, float px2, float py2, float px3, float py3, float px4, float py4)        {
            drawPoint(px1, py1);            drawPoint(px2, py2);            drawPoint(px3, py3);            drawPoint(px4, py4);
        }        void drawSquare(float px1, float py1, float px2, float py2, float px3, float py3, float px4, float py4)        {
            drawLine(px1, py1, px2, py2);            drawLine(px2, py2, px3, py3);            drawLine(px3, py3, px4, py4);            drawLine(px4, py4, px1, py1);
        }        void drawPointsnGone(float n, float s, float px, float py)        {
            drawnGone(n, s, px, py, "points");
        }        void drawnGone(float n, float s, float px, float py, String tip)        {
            float _l4 = (float)Math.Cos(px / 57.400000) * s + px;            float _l3 = (float)Math.Sin(py / 57.400000) * s + py;            float _l7 = (float)Math.Cos(px / 57.400000) * s + px;            float _l6 = (float)Math.Sin(py / 57.400000) * s + py;            lineStyle(1, Color.Black, 100);            float _l2 = 1;            while (_l2 <= 361)            {                _l4 = (float)Math.Cos(_l2 / 57.400000) * s + px;                _l3 = (float)Math.Sin(_l2 / 57.400000) * s + py;                if (tip == "points")                {                    drawPoint(_l4, _l3);                }                // end if                 if (tip != "points")                {                    if (_l2 > 1)                    {                        moveTo(_l4, _l3);                        lineTo(_l7, _l6);                    }                    // end if                 }                // end if                 _l7 = _l4;                _l6 = _l3;                _l2 = _l2 + 360 / n;            }            // end while         }

        void drawPointsPolyGone() { ;}        void drawPolyGone() { ;}


        void drawCircle(float n, float s, float px, float py, String tip)        {            drawnGone(n, s, px, py, tip);        }        void drawElipse() { }        void fillArea3Points(float px1, float py1, float px2, float py2, float px3, float py3, Color colorx, float alfa)        {            beginFill(colorx, alfa);            moveTo(px1, py1);            lineTo(px2, py2);            lineTo(px3, py3);            lineTo(px1, py1);            endFill();        }
       void fillArea4Points(float px1, float py1, float px2, float py2, float px3, float py3, float px4, float py4, Color colorx, float alfa)        {            beginFill(colorx, alfa);            moveTo(px1, py1);            lineTo(px2, py2);            lineTo(px3, py3);            lineTo(px4, py4);            lineTo(px1, py1);            endFill();        }
        class Objectot        {            public string text;            public Objectot() { }
        }        class Patrat1        {            //date            public float cx1;            public float cx2;            public float cx3;            public float cx4;            public float cy1;            public float cy2;            public float cy3;            public float cy4;            //metode            public Patrat1() { }        }
        class Patrat2        {            //date            public float cx5;            public float cx6;            public float cx7;            public float cx8;            public float cy5;            public float cy6;            public float cy7;            public float cy8;            //metode            public Patrat2() { }            //event            //onPress = clear();        }

        class Cub        {            //date            public Patrat1 patrat1 = new Patrat1();            public Patrat2 patrat2 = new Patrat2();            public float xi;            public float yi;            public float r;            public float x1;            public float x2;            public float y1;            public float y2;            public float g;            public float ux;            public float uy;            public float x;            public float i;            public float k;            public float grouthy;            public float j;            public float A;            public float z;            //metode            public Cub() {                setx1(this);                sety1(this);                setx2(this);                sety2(this);            }            public Cub(float pxi, float pyi, float pr, float px1, float py1, float pg, float pux, float puy, float px, float pi, float pk, float pgrouthy, float pj, float pA, float pz) {                this.xi = pxi;                this.yi = pyi;                this.r = pr;                this.x1 = px1;                this.y1 = py1;                this.g = pg;                this.ux = pux;                this.uy = puy;                this.x = px;                this.i = pi;                this.k = pk;                this.grouthy = pgrouthy;                this.j = pj;                this.A = pA;                this.z = pz;                setx1(this);                sety1(this);                setx2(this);                sety2(this);            }            float sinx(float a, float U, float z, Cub o)            {
                float _l1 = (float)Math.Sin((a + U) / 57.400000) * o.r + o.xi;                return (_l1);
            }            float cosx(float b, float U, float z, Cub o)            {
                float _l1 = (float)Math.Cos((b + U) / 57.400000) * o.r + o.yi;                return (_l1);
            }            public void setx1(Cub o) { x1=cosx(1, this.ux, this.xi, o); }            public void sety1(Cub o) { y1=sinx(1, this.uy, this.yi, o); }            public void setx2(Cub o) { x2=cosx(1, this.ux, this.xi, o); }            public void sety2(Cub o) { y2=sinx(1, this.uy, this.yi, o); }        }
        private void Form1_Load(object sender, EventArgs e)        {            this.Width = 1280;            this.Height = 1024;            this.Left = 0;            this.Top = 0;            g = CreateGraphics();

        }
        private void Form1_MouseDown(object sender, MouseEventArgs e)        {                  }
        private void Form1_MouseMove(object sender, MouseEventArgs e)        {                   }
        private void timer1_Tick(object sender, EventArgs e)        {            this.DOALL1();           this.DOALL2();           this.DOALL3();           label1.Text = txtA.text.ToString();           label2.Text = txtB.text.ToString();           label3.Text = txtC.text.ToString();                     mouseposxy = _xmouse + " : " + _ymouse;           this.Text = mouseposxy;        }
        private void Form1_MouseDown_1(object sender, MouseEventArgs e)        {            cub1.grouthy = 0;            cub1.z = cub1.z + 0;            cub2.grouthy = 0;            cub2.z = cub2.z - 0;            cub3.grouthy = 0;            cub3.z = cub3.z - 0;            drawPoint(_xmouse, _ymouse);            drawnGone(5, 100, _xmouse, _ymouse, "notpoints");            drawCircle(60, 200, _xmouse, _ymouse, "notpoints");            drawPointsnGone(5, 100, _xmouse, _ymouse);            fillArea3Points(0, 0, 0, 100, 100, 0, Color.Black, 5);            fillArea4Points(100, 100, 200, 100, 200, 200, 100, 200, Color.Black, 5);            _ymouse = e.Y;            _xmouse = e.X;            clearAll();        }
        private void Form1_MouseMove_1(object sender, MouseEventArgs e)        {            if (cub1.grouthy < 20)            {                cub1.z += 0;            }            cub2.z -= 0;            cub3.z -= 0;            _ymouse = e.Y;            _xmouse = e.X;        }    }}

 

this code will create an can of 3d object on the main Form