Exemple #1
0
        private void Render(object sender, GlControlEventArgs e)
        {
            if (_shader == null)
            {
                return;
            }

            var v = _cameraHelper.CameraMatrix;

            _shader.M = v;

            _shader.ShadingLevel = 0;
            FiguresHelper.Draw3DCross(4, 1);
            _shader.ShadingLevel = 1;

            _shader.LightPos = new Vector3(1f, 1f, 1f);

            var r1     = Matrix4x4.CreateRotationY(Mathf.ToRadian(_phi));
            var t      = Matrix4x4.CreateTranslation(new Vector3(_radius, 2f, 0f));
            var r2     = Matrix4x4.CreateRotationX(Mathf.ToRadian(90)) * Matrix4x4.CreateRotationY(Mathf.ToRadian(90)) * Matrix4x4.CreateRotationZ(Mathf.ToRadian(45));
            var scaleM = Matrix4x4.CreateScale(0.2f);
            var r3     = Matrix4x4.CreateRotationY(Mathf.ToRadian(-_phi * 10));
            var r4     = Matrix4x4.CreateRotationZ(Mathf.ToRadian(25));
            var m      = r3 * r2 * t * r1 * scaleM * r4;

            _shader.M = m * v;

            Figure3DHelper.DrawMesh(_boomerang, Colors.Chocolate);

            _phi += _step;
        }
Exemple #2
0
        private void OnMouseMove(object sender, MouseEventArgs e)
        {
            Control senderControl = (Control)sender;

            GetNormalized(e.Location, senderControl, out float newX, out float newY);


            if (_isLeftMousePressed)
            {
                float dx = newX - _prevPoint.X;
                float dy = newY - _prevPoint.Y;
                ModelMatrix *= Matrix4x4.CreateRotationX(-dy, Vector3.Zero);
                ModelMatrix *= Matrix4x4.CreateRotationY(dx, Vector3.Zero);
            }

            if (_isRightMousePressed)
            {
                float dx = newX - _prevPoint.X;
                float dy = newY - _prevPoint.Y;

                float sensitivity = 50.0f;
                dx = dx * sensitivity;
                dy = dy * sensitivity;

                _yaw   += dx;
                _pitch += dy;

                if (_pitch > 89.0f)
                {
                    _pitch = 89.0f;
                }
                if (_pitch < -89.0f)
                {
                    _pitch = -89.0f;
                }

                Vector3 newFront;
                newFront.X   = (float)(Math.Cos(_yaw.ToRadians()) * Math.Cos(_pitch.ToRadians()));
                newFront.Y   = (float)Math.Sin(_pitch.ToRadians());
                newFront.Z   = (float)(Math.Sin(_yaw.ToRadians()) * Math.Cos(_pitch.ToRadians()));
                _cameraFront = Vector3.Normalize(newFront);
            }

            _prevPoint.X = newX;
            _prevPoint.Y = newY;
        }