Simplified judgement model by having time as an Int instead of Double
This commit is contained in:
parent
dbc6570fd5
commit
53bd826e91
@ -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()
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user