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();
        }
Example #2
0
        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);
        }