public Matrix GetModificationMatrix()
        {
            Matrix matrix = ModificationMatrix.NewIdentityMatrix(4);

            matrix = matrix.Multiply(ModificationMatrix.NewScaleMatrix(ScaleX, ScaleY, ScaleZ));
            matrix = matrix.Multiply(ModificationMatrix.NewRotateXMatrix(MathHelpers.FromDegreesToRadians(AngleX)));
            matrix = matrix.Multiply(ModificationMatrix.NewRotateYMatrix(MathHelpers.FromDegreesToRadians(AngleY)));
            matrix = matrix.Multiply(ModificationMatrix.NewRotateZMatrix(MathHelpers.FromDegreesToRadians(AngleZ)));
            return(matrix);
        }
Пример #2
0
        public void DrawObjects()
        {
            FastBitmap bitmap       = new FastBitmap(new Bitmap(Camera.Width, Camera.Height));
            Matrix     cameraMatrix = Camera.GetCameraMatrix();

            // z-buffer (z-matrix). For each camera viewport pixel.
            // first, fill it with double.MaxValue with future z-buffer algoritm in mind.
            double[,] buffer = new double[Camera.Width, Camera.Height];
            for (int i = 0; i < Camera.Width; ++i)
            {
                for (int j = 0; j < Camera.Height; ++j)
                {
                    buffer[i, j] = double.MaxValue;
                }
            }

            if (IsPanning)
            { // defining light
                Matrix lightMatrix = ModificationMatrix.NewIdentityMatrix(4);
                var    light       = Light;
                {
                    Point3D lightPosition = new Point3D(light);
                }
            }

            if (SelectedForPanObject != null)
            {
                DrawObject(SelectedForPanObject, bitmap, buffer, cameraMatrix);
            }
            else
            {
                for (int i = 0; i < Objects.Count; ++i)
                {
                    SceneObject radioObject = Objects[i];
                    if (IsVisibleForCamera(radioObject.BasePoint, radioObject.MaxLength, cameraMatrix))
                    {
                        DrawObject(radioObject, bitmap, buffer, cameraMatrix);
                    }
                }
            }
            canvas.Image = bitmap.GetBitmap();
        }