MindMachine: improve contrast and fix visual flash/pulse rendering

This commit is contained in:
Tretzi
2026-03-10 23:14:33 -05:00
parent d4990af092
commit fdf3bf01d3
3 changed files with 223 additions and 46 deletions

View File

@@ -0,0 +1,30 @@
package com.mindmachine.mvp.session
import com.mindmachine.mvp.domain.VisualPattern
import kotlin.math.PI
import kotlin.math.sin
fun computeVisualAlpha(
visualPattern: VisualPattern,
frameTimeNanos: Long,
blinkFrequencyHz: Float,
intensityPercent: Int,
): Float {
val intensity = (intensityPercent.coerceIn(0, 100) / 100f)
if (intensity <= 0f) return 0f
val frequency = blinkFrequencyHz.coerceIn(1f, 20f).toDouble()
val timeSeconds = frameTimeNanos / 1_000_000_000.0
return when (visualPattern) {
VisualPattern.FLASH -> {
val phase = (timeSeconds * frequency) % 1.0
if (phase < 0.5) intensity else 0f
}
VisualPattern.PULSE -> {
val pulse = ((sin(2.0 * PI * frequency * timeSeconds) + 1.0) / 2.0).toFloat()
(intensity * pulse).coerceIn(0f, intensity)
}
}
}