void UpdateReticleView(UITouch touch, bool predicated = false)
        {
            if (touch == null || touch.Type != UITouchType.Stylus)
            {
                return;
            }

            ReticleView.PredictedDotLayer.Hidden  = !predicated;
            ReticleView.PredictedLineLayer.Hidden = !predicated;

            var azimuthAngle      = touch.GetAzimuthAngle(View);
            var azimuthUnitVector = touch.GetAzimuthUnitVector(View);
            var altitudeAngle     = touch.AltitudeAngle;

            if (predicated)
            {
                ReticleView.PredictedAzimuthAngle      = azimuthAngle;
                ReticleView.PredictedAzimuthUnitVector = azimuthUnitVector;
                ReticleView.PredictedAltitudeAngle     = altitudeAngle;
            }
            else
            {
                var location = touch.PreviousLocationInView(View);
                ReticleView.Center                  = location;
                ReticleView.ActualAzimuthAngle      = azimuthAngle;
                ReticleView.ActualAzimuthUnitVector = azimuthUnitVector;
                ReticleView.ActualAltitudeAngle     = altitudeAngle;
            }
        }
Example #2
0
        void UpdateReticleView(UITouch touch, bool predicated = false)
        {
            if (touch == null)
            {
                return;
            }

            ReticleView.PredictedDotLayer.Hidden  = !predicated;
            ReticleView.PredictedLineLayer.Hidden = !predicated;

            ReticleView.Center = touch.LocationInView(touch.View);

            var azimuthAngle      = touch.GetAzimuthAngle(touch.View);
            var azimuthUnitVector = touch.GetAzimuthUnitVector(touch.View);
            var altitudeAngle     = touch.AltitudeAngle;

            if (predicated)
            {
                ReticleView.PredictedAzimuthAngle      = azimuthAngle;
                ReticleView.PredictedAzimuthUnitVector = azimuthUnitVector;
                ReticleView.PredictedAzimuthAngle      = altitudeAngle;
            }
            else
            {
                ReticleView.ActualAzimuthAngle      = azimuthAngle;
                ReticleView.ActualAzimuthUnitVector = azimuthUnitVector;
                ReticleView.ActualAzimuthAngle      = altitudeAngle;
            }
        }
Example #3
0
        private nfloat LineWidthForShading(CGContext context, UITouch touch)
        {
            var previousLocation = touch.PreviousLocationInView(this);
            var location         = touch.LocationInView(this);

            var vector1 = touch.GetAzimuthUnitVector(this);
            var vector2 = new CGPoint(location.X - previousLocation.X, location.Y - previousLocation.Y);

            var angle = Math.Abs(Math.Atan2(vector2.Y, vector2.X) - Math.Atan2(vector1.dy, vector1.dx));

            angle = angle > π ? 2 * π - angle : π - angle;

            var minAngle        = 0;
            var maxAngle        = π / 2;
            var normalizedAngle = (angle - minAngle) / (maxAngle - minAngle);

            var maxLineWidth = 60;
            var lineWidth    = maxLineWidth * normalizedAngle;

            var minAltitudeAngle = 0.25;
            var maxAltitudeAngle = TiltThreshold;

            var altitudeAngle = Math.Min(minAltitudeAngle, touch.AltitudeAngle);

            var normalizedAltitude = 1 - ((altitudeAngle - minAltitudeAngle) / (maxAltitudeAngle - minAltitudeAngle));

            lineWidth = lineWidth * normalizedAltitude + MinLineWidth;

            var minForce = 0;
            var maxForce = 5;

            var normalizedAlpha = (touch.Force - minForce) / (maxForce - minForce);

            context.SetAlpha(normalizedAlpha);

            return((nfloat)lineWidth);
        }
		void UpdateReticleView (UITouch touch, bool predicated = false)
		{
			if (touch == null)
				return;

			ReticleView.PredictedDotLayer.Hidden = !predicated;
			ReticleView.PredictedLineLayer.Hidden = !predicated;

			ReticleView.Center = touch.LocationInView (touch.View);

			var azimuthAngle = touch.GetAzimuthAngle (touch.View);
			var azimuthUnitVector = touch.GetAzimuthUnitVector (touch.View);
			var altitudeAngle = touch.AltitudeAngle;

			if (predicated) {
				ReticleView.PredictedAzimuthAngle = azimuthAngle;
				ReticleView.PredictedAzimuthUnitVector = azimuthUnitVector;
				ReticleView.PredictedAzimuthAngle = altitudeAngle;
			} else {
				ReticleView.ActualAzimuthAngle = azimuthAngle;
				ReticleView.ActualAzimuthUnitVector = azimuthUnitVector;
				ReticleView.ActualAzimuthAngle = altitudeAngle;
			}
		}
		void UpdateReticleView (UITouch touch, bool predicated = false)
		{
			if (touch == null || touch.Type != UITouchType.Stylus)
				return;

			ReticleView.PredictedDotLayer.Hidden = !predicated;
			ReticleView.PredictedLineLayer.Hidden = !predicated;

			var azimuthAngle = touch.GetAzimuthAngle (View);
			var azimuthUnitVector = touch.GetAzimuthUnitVector (View);
			var altitudeAngle = touch.AltitudeAngle;

			if (predicated) {
				ReticleView.PredictedAzimuthAngle = azimuthAngle;
				ReticleView.PredictedAzimuthUnitVector = azimuthUnitVector;
				ReticleView.PredictedAltitudeAngle = altitudeAngle;
			} else {
				var location = touch.PreviousLocationInView (View);
				ReticleView.Center = location;
				ReticleView.ActualAzimuthAngle = azimuthAngle;
				ReticleView.ActualAzimuthUnitVector = azimuthUnitVector;
				ReticleView.ActualAltitudeAngle = altitudeAngle;
			}
		}