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