DrivenTouchScaleResolver.stevens constructor

DrivenTouchScaleResolver.stevens({
  1. required double baseIntensity,
  2. double exponent = 0.4,
  3. double referenceSize = 100.0,
  4. double minScale = 0.0,
  5. double maxScale = 1.0,
  6. double scalingFactor = 0.15,
})

Stevens' Power Law: Perceived intensity = k × (stimulus intensity)^n For touch feedback, exponent n ≈ 0.3-0.5 is appropriate.

Implementation

DrivenTouchScaleResolver.stevens({
  /// Base intensity factor. (0.5-1.2 typical range)
  required double baseIntensity,

  /// Power law exponent for touch perception. (0.4 is scientifically validated)
  double exponent = 0.4,

  /// Reference size in pixels for scaling calculations. (100px typical)
  double referenceSize = 100.0,

  /// Higher minimum scale to prevent over-scaling on small widgets.
  double minScale = 0.0,

  /// Reasonable maximum scale for subtle effects on large widgets.
  double maxScale = 1.0,

  /// Scaling multiplier to control overall effect intensity. (0.1-0.3 range)
  double scalingFactor = 0.15,
}) : _value = baseIntensity,
     _mode = _ScaleMode.stevens {
  _parameters = {
    'exponent': exponent,
    'referenceSize': referenceSize,
    'minScale': minScale,
    'maxScale': maxScale,
    'scalingFactor': scalingFactor,
  };
}