Simplified judgement model by having time as an Int instead of Double

This commit is contained in:
nise.moe 2024-03-07 21:45:22 +01:00
parent dbc6570fd5
commit 53bd826e91
3 changed files with 8 additions and 8 deletions

View File

@ -55,7 +55,7 @@ class CompressJudgements {
fun compress(judgements: List<Judgement>): ByteArray { fun compress(judgements: List<Judgement>): ByteArray {
val byteStream = ByteArrayOutputStream() val byteStream = ByteArrayOutputStream()
var lastTimestamp = 0.0 var lastTimestamp = 0
judgements.forEach { judgement -> judgements.forEach { judgement ->
byteStream.use { stream -> byteStream.use { stream ->
@ -63,7 +63,7 @@ class CompressJudgements {
* We allocate an arbitrary amount of buffer which *hopefully* is enough. * We allocate an arbitrary amount of buffer which *hopefully* is enough.
*/ */
ByteBuffer.allocate(4096).let { buffer -> ByteBuffer.allocate(4096).let { buffer ->
buffer.putVLQ((judgement.time - lastTimestamp).toInt()) buffer.putVLQ((judgement.time - lastTimestamp))
buffer.putVLQ(round(judgement.x * 100).toInt()) buffer.putVLQ(round(judgement.x * 100).toInt())
buffer.putVLQ(round(judgement.y * 100).toInt()) buffer.putVLQ(round(judgement.y * 100).toInt())
buffer.put(judgement.type.ordinal.toByte()) buffer.put(judgement.type.ordinal.toByte())
@ -85,7 +85,7 @@ class CompressJudgements {
val buffer = ByteBuffer.wrap(data) val buffer = ByteBuffer.wrap(data)
val judgements = mutableListOf<Judgement>() val judgements = mutableListOf<Judgement>()
var lastTime = 0.0 var lastTime = 0
while (buffer.hasRemaining()) { while (buffer.hasRemaining()) {
val deltaTime = buffer.getVLQ() val deltaTime = buffer.getVLQ()

View File

@ -9,7 +9,7 @@ import kotlinx.serialization.Serializable
*/ */
@Serializable @Serializable
data class Judgement( data class Judgement(
val time: Double, val time: Int,
val x: Double, val x: Double,
val y: Double, val y: Double,
val type: Type, val type: Type,

View File

@ -9,8 +9,8 @@ class CompressJudgementsTest {
@Test @Test
fun testCompress() { fun testCompress() {
val judgements = listOf( val judgements = listOf(
Judgement(time = 1.0, x = 1.0, y = 1.0, type = Judgement.Type.THREE_HUNDRED, distanceToCenter = 1.0, distanceToEdge = 1.0, error = 1.0), Judgement(time = 1, x = 1.0, y = 1.0, type = Judgement.Type.THREE_HUNDRED, distanceToCenter = 1.0, distanceToEdge = 1.0, error = 1.0),
Judgement(time = 2.0, x = 2.0, y = 2.0, type = Judgement.Type.THREE_HUNDRED, distanceToCenter = 2.0, distanceToEdge = 2.0, error = 2.0) Judgement(time = 2, x = 2.0, y = 2.0, type = Judgement.Type.THREE_HUNDRED, distanceToCenter = 2.0, distanceToEdge = 2.0, error = 2.0)
) )
val compressedData = CompressJudgements.compress(judgements) val compressedData = CompressJudgements.compress(judgements)
assertTrue(compressedData.isNotEmpty()) assertTrue(compressedData.isNotEmpty())
@ -19,8 +19,8 @@ class CompressJudgementsTest {
@Test @Test
fun testCompressAndDecompress() { fun testCompressAndDecompress() {
val originalJudgements = listOf( val originalJudgements = listOf(
Judgement(time = 1.123456789123456, x = 1.0, y = 1.0, type = Judgement.Type.THREE_HUNDRED, distanceToCenter = 1.0, distanceToEdge = 1.0, error = 1.0), Judgement(time = 1, x = 1.0, y = 1.0, type = Judgement.Type.THREE_HUNDRED, distanceToCenter = 1.0, distanceToEdge = 1.0, error = 1.0),
Judgement(time = 2.123456789123456, x = 2.0, y = 2.0, type = Judgement.Type.THREE_HUNDRED, distanceToCenter = 2.0, distanceToEdge = 2.0, error = 2.0) Judgement(time = 2, x = 2.0, y = 2.0, type = Judgement.Type.THREE_HUNDRED, distanceToCenter = 2.0, distanceToEdge = 2.0, error = 2.0)
) )
val compressedData = CompressJudgements.compress(originalJudgements) val compressedData = CompressJudgements.compress(originalJudgements)
val decompressedJudgements = CompressJudgements.decompress(compressedData) val decompressedJudgements = CompressJudgements.decompress(compressedData)