summaryrefslogtreecommitdiff
path: root/android-app/app/src
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-06-04 00:11:20 +0000
committerClaude <noreply@anthropic.com>2026-06-04 00:11:20 +0000
commit7a51bb3ca3b8929a52165be0b729cc77dd87912d (patch)
tree0d65c91ccb3cd0a902c7a132c819751cdd8f9b04 /android-app/app/src
parentbfeab101083970a3fd5a67aa62d09a7506027da4 (diff)
parent40d78f5f08d89b7c5d7f1870d4a0268cfcdd6437 (diff)
Merge claude/wind-particles-movement-eNrTx: fix wind particles not moving
https://claude.ai/code/session_017TwkSjhzhmTcHKmVG5MWUa
Diffstat (limited to 'android-app/app/src')
-rw-r--r--android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt10
1 files changed, 6 insertions, 4 deletions
diff --git a/android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt b/android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt
index 26d9ea2..746efb5 100644
--- a/android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt
+++ b/android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt
@@ -21,7 +21,7 @@ import kotlin.random.Random
* tail segment, then advance the position by the wind vector.
*
* Speed is scaled to the visible viewport so the animation looks consistent at any
- * zoom level: a particle at reference wind (10 kt) crosses ~30% of the screen in
+ * zoom level: a particle at reference wind (10 kt) crosses ~100% of the screen in
* MAX_AGE seconds.
*
* Longitude arithmetic is done in a west-relative [0, lonSpan] coordinate space
@@ -103,8 +103,8 @@ class ParticleWindView @JvmOverloads constructor(
// Span wraps around antimeridian when lonEast < lonWest (e.g. Pacific viewport)
val lonSpan = if (lonEast >= lonWest) lonEast - lonWest else lonEast - lonWest + 360f
- // Speed scale: at 10kt a particle crosses 30% of viewport in MAX_AGE seconds.
- val speedScale = latRange * 0.03f / MAX_AGE
+ // Speed scale: at 10kt a particle crosses 100% of viewport in MAX_AGE seconds.
+ val speedScale = latRange * 0.1f / MAX_AGE
// Geographic travel direction: opposite of the FROM direction.
val travelRad = Math.toRadians((windDirFromDeg + 180.0) % 360.0)
@@ -139,7 +139,9 @@ class ParticleWindView @JvmOverloads constructor(
var newLon = lonWest + Random.nextFloat() * lonSpan
if (newLon > 180f) newLon -= 360f
particleLon[i] = newLon
- particleAge[i] = Random.nextFloat() * MAX_AGE
+ // Start fresh so each particle gets a full lifetime to drift across the viewport.
+ // A tiny stagger (0–2 s) desynchronises bursts of simultaneous respawns.
+ particleAge[i] = Random.nextFloat() * 2f
continue
}