public LEDTerrainModule(ModuleConfiguration moduleConfiguration) : base(moduleConfiguration, 2.5f) { perlin = new Perlin(-1); matProj = Mat4x4.MakeProjection(45.0f, 1.5f, 0.1f, 1000.0f); // Set up "World Tranmsform" though not updating theta // makes this a bit redundant Mat4x4 matRotZ, matRotX; matRotZ = Mat4x4.MakeRotationZ(0f); matRotX = Mat4x4.MakeRotationX(1.1f); Mat4x4 matTrans = Mat4x4.MakeTranslation(0.0f, 0.0f, 5.0f); matWorld = Mat4x4.MakeIdentity(); // Form World Matrix matWorld = matRotZ * matRotX; // Transform by rotation matWorld = matWorld * matTrans; // Transform by translation // Create "Point At" Matrix for camera Vector3D vUp = new Vector3D(0, 2, 0); Vector3D vTarget = new Vector3D(0, 0, 1); Mat4x4 matCameraRot = Mat4x4.MakeRotationY(fYaw); vLookDir = matCameraRot * vTarget; vTarget = vCamera + vLookDir; Mat4x4 matCamera = Mat4x4.PointAt(vCamera, vTarget, vUp); // Make view matrix from camera matView = matCamera.QuickInverse(); }
public LEDCubeModule(ModuleConfiguration moduleConfiguration) : base(moduleConfiguration, 3f) { meshCube.Tris = new List <Triangle>() { // SOUTH new Triangle(new List <Vector3D>() { new Vector3D(0.0f, 0.0f, 0.0f, 1.0f), new Vector3D(0.0f, 1.0f, 0.0f, 1.0f), new Vector3D(1.0f, 1.0f, 0.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(0.0f, 0.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f) }), new Triangle(new List <Vector3D>() { new Vector3D(0.0f, 0.0f, 0.0f, 1.0f), new Vector3D(1.0f, 1.0f, 0.0f, 1.0f), new Vector3D(1.0f, 0.0f, 0.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f), new Vector2D(1.0f, 1.0f, 1.0f) }), // EAST new Triangle(new List <Vector3D>() { new Vector3D(1.0f, 0.0f, 0.0f, 1.0f), new Vector3D(1.0f, 1.0f, 0.0f, 1.0f), new Vector3D(1.0f, 1.0f, 1.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(0.0f, 0.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f) }), new Triangle(new List <Vector3D>() { new Vector3D(1.0f, 0.0f, 0.0f, 1.0f), new Vector3D(1.0f, 1.0f, 1.0f, 1.0f), new Vector3D(1.0f, 0.0f, 1.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f), new Vector2D(1.0f, 1.0f, 1.0f) }), // NORTH new Triangle(new List <Vector3D>() { new Vector3D(1.0f, 0.0f, 1.0f, 1.0f), new Vector3D(1.0f, 1.0f, 1.0f, 1.0f), new Vector3D(0.0f, 1.0f, 1.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(0.0f, 0.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f) }), new Triangle(new List <Vector3D>() { new Vector3D(1.0f, 0.0f, 1.0f, 1.0f), new Vector3D(0.0f, 1.0f, 1.0f, 1.0f), new Vector3D(0.0f, 0.0f, 1.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f), new Vector2D(1.0f, 1.0f, 1.0f) }), // WEST new Triangle(new List <Vector3D>() { new Vector3D(0.0f, 0.0f, 1.0f, 1.0f), new Vector3D(0.0f, 1.0f, 1.0f, 1.0f), new Vector3D(0.0f, 1.0f, 0.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(0.0f, 0.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f) }), new Triangle(new List <Vector3D>() { new Vector3D(0.0f, 0.0f, 1.0f, 1.0f), new Vector3D(0.0f, 1.0f, 0.0f, 1.0f), new Vector3D(0.0f, 0.0f, 0.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f), new Vector2D(1.0f, 1.0f, 1.0f) }), // TOP new Triangle(new List <Vector3D>() { new Vector3D(0.0f, 1.0f, 0.0f, 1.0f), new Vector3D(0.0f, 1.0f, 1.0f, 1.0f), new Vector3D(1.0f, 1.0f, 1.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(0.0f, 0.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f) }), new Triangle(new List <Vector3D>() { new Vector3D(0.0f, 1.0f, 0.0f, 1.0f), new Vector3D(1.0f, 1.0f, 1.0f, 1.0f), new Vector3D(1.0f, 1.0f, 0.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f), new Vector2D(1.0f, 1.0f, 1.0f) }), // BOTTOM new Triangle(new List <Vector3D>() { new Vector3D(1.0f, 0.0f, 1.0f, 1.0f), new Vector3D(0.0f, 0.0f, 1.0f, 1.0f), new Vector3D(0.0f, 0.0f, 0.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(0.0f, 0.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f) }), new Triangle(new List <Vector3D>() { new Vector3D(1.0f, 0.0f, 1.0f, 1.0f), new Vector3D(0.0f, 0.0f, 0.0f, 1.0f), new Vector3D(1.0f, 0.0f, 0.0f, 1.0f) }, new List <Vector2D>() { new Vector2D(0.0f, 1.0f, 1.0f), new Vector2D(1.0f, 0.0f, 1.0f), new Vector2D(1.0f, 1.0f, 1.0f) }), }; matProj = Mat4x4.MakeProjection(90.0f, (float)renderHeight / (float)renderWidth, 0.1f, 1000.0f); }