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); }
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(); }