snow_rendering 0.1.0
snow_rendering: ^0.1.0 copied to clipboard
Weather-to-rendering computation for driving safety applications. Road surface classification, precipitation particle parameters, and visibility degradation derived from weather data. Pure Dart — no F [...]
snow_rendering #
Turn weather data into driving safety guidance. snow_rendering classifies road surface conditions, computes grip factors, and derives visibility and precipitation parameters from real weather observations.
Pure Dart — no Flutter dependency. Safe to use from any Dart environment.
Features #
RoadSurfaceState— six-state classification (dry, wet, slush, compactedSnow, blackIce, standingWater) with grip factorsDrivingConditionAssessment— combined assessment with advisory message from a singleWeatherConditionPrecipitationConfig— particle count, velocity, size, and lifetime parameters by type and intensityVisibilityDegradation— opacity and blur sigma from visibility distance in metresHysteresisFilter<T>— debounce filter preventing rapid oscillation at boundary conditions
Install #
dependencies:
snow_rendering: ^0.1.0
Quick Start #
import 'package:driving_weather/driving_weather.dart';
import 'package:snow_rendering/snow_rendering.dart';
final condition = WeatherCondition(
precipType: PrecipitationType.snow,
intensity: PrecipitationIntensity.heavy,
temperatureCelsius: -5,
visibilityMeters: 400,
windSpeedKmh: 30,
iceRisk: false,
timestamp: DateTime.now(),
);
final assessment = DrivingConditionAssessment.fromCondition(condition);
print(assessment.surfaceState); // RoadSurfaceState.compactedSnow
print(assessment.gripFactor); // 0.3
print(assessment.advisoryMessage); // Compacted snow — use winter tyres, reduce speed
print(assessment.visibility.blurSigma); // 2.0 (mild blur at 400m)
print(assessment.precipitation.particleCount); // 500 (heavy snow)
Debounced Classification #
Wrap in HysteresisFilter to prevent flickering at boundary conditions:
final filter = HysteresisFilter<RoadSurfaceState>();
// Requires the same state in 2 of last 3 readings before transitioning.
final stable = filter.update(RoadSurfaceState.fromCondition(condition));
Road Surface States #
| State | Grip Factor | When |
|---|---|---|
| dry | 1.0 | No precipitation, temp > -3°C |
| wet | 0.7 | Rain above freezing |
| standingWater | 0.6 | Heavy rain, temp > 3°C |
| slush | 0.5 | Melting snow or sleet |
| compactedSnow | 0.3 | Cold heavy snow (temp < -2°C) |
| blackIce | 0.15 | Ice risk flag, freezing rain, or temp ≤ -3°C |