示例#1
0
        //Куб в параллельной проекции
        public Bitmap drawCubeParal(Point drawOrigin)
        {
            //точки куба, которые конвертируем в 2д
            PointF[]  point2Dconvert = new PointF[8];
            Point3D[] cubePoints     = fillCubeVertices(Width, Height, Depth);

            //изменение положения точек при повороте
            cubePoints = TransformCube.RotateX(cubePoints, RotateX);
            cubePoints = TransformCube.RotateY(cubePoints, RotateY);
            cubePoints = TransformCube.RotateZ(cubePoints, RotateZ);

            Point3D vec;

            for (int i = 0; i < point2Dconvert.Length; i++)
            {
                vec = cubePoints[i];
                point2Dconvert[i].X = (int)(vec.X + drawOrigin.X);
                point2Dconvert[i].Y = (int)(vec.Y + drawOrigin.Y);
            }
            var tmpBmp = draw2DCube(point2Dconvert, drawOrigin, cubePoints);

            return(tmpBmp);
        }
示例#2
0
        //Куб в перспективной проекции
        public Bitmap drawCubePersp(Point drawOrigin)
        {
            PointF[]  point2Dconvert = new PointF[8];
            Point3D[] cubePoints     = fillCubeVertices(Width, Height, Depth);

            //изменение положения точек при повороте
            cubePoints = TransformCube.RotateX(cubePoints, RotateX);
            cubePoints = TransformCube.RotateY(cubePoints, RotateY);
            cubePoints = TransformCube.RotateZ(cubePoints, RotateZ);

            //Перевод 3д точек в 2д
            Point3D vec;

            for (int i = 0; i < point2Dconvert.Length; i++)
            {
                vec = cubePoints[i];
                point2Dconvert[i].X = (int)((vec.X * camera1.Position.Z - vec.Z * camera1.Position.X) / (camera1.Position.Z - vec.Z) + drawOrigin.X);
                point2Dconvert[i].Y = (int)((vec.Y * camera1.Position.Z - vec.Z * camera1.Position.Y) / (camera1.Position.Z - vec.Z) + drawOrigin.Y);
            }

            var tmpBmp = draw2DCube(point2Dconvert, drawOrigin, cubePoints);

            return(tmpBmp);
        }