diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java index eca81f6..4154037 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/ui/components/PersonalMotionPreviewElement.java @@ -2,7 +2,6 @@ package com.example.fitbot.ui.components; import android.content.Context; import android.graphics.Canvas; -import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.util.AttributeSet; @@ -13,8 +12,6 @@ import com.aldebaran.qi.sdk.QiContext; import com.example.fitbot.exercise.Exercise; import com.example.fitbot.util.FitnessCycle; import com.example.fitbot.util.path.GesturePath; -import com.example.fitbot.util.path.PathSegment; -import com.example.fitbot.util.processing.MotionData; import com.example.fitbot.util.processing.MotionProcessor; import org.joml.Matrix4f; @@ -22,11 +19,8 @@ import org.joml.Vector2f; import org.joml.Vector3f; import org.joml.Vector4f; -import java.util.ArrayList; -import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicReference; public class PersonalMotionPreviewElement extends View { @@ -47,9 +41,11 @@ public class PersonalMotionPreviewElement extends View { private final Paint targetPaint = new Paint(); private final Paint backgroundColor = new Paint(); - private Matrix4f modelViewMatrix = new Matrix4f(); // The model view matrix for the 3D to 2D transformation. + private Matrix4f modelMatrix = new Matrix4f(); // The model view matrix for the 3D to 2D transformation. + private Matrix4f viewMatrix = new Matrix4f() + .lookAt(new Vector3f(4, 4, 4), new Vector3f(0, 0, 0), new Vector3f(0, 1, 0)); // The view matrix for the 3D to 2D transformation. private Matrix4f projectionMatrix = new Matrix4f(); // The projection matrix for the 3D to 2D transformation. - private final Vector4f objectPosition = new Vector4f(0, 0, -2, 1); // The location of the object in 3D space. + private final Vector4f objectPosition = new Vector4f(0, 0, 0, 1); // The location of the object in 3D space. private ConcurrentLinkedQueue vectors = new ConcurrentLinkedQueue<>(); private Vector2f[] axisVectors; @@ -172,8 +168,7 @@ public class PersonalMotionPreviewElement extends View { private Vector2f projectVertex(Vector3f point, int virtualWidth, int virtualHeight) { - - modelViewMatrix + modelMatrix .identity() .translate(-objectPosition.x, -objectPosition.y, -objectPosition.z); @@ -185,8 +180,9 @@ public class PersonalMotionPreviewElement extends View { // Convert world coordinates to screen-space using MVP matrix Vector4f screenCoordinates = new Vector4f(point, 1.0f) - .mul(this.modelViewMatrix) - .mul(this.projectionMatrix); + .mul(this.projectionMatrix) + .mul(this.viewMatrix) + .mul(this.modelMatrix); // Normalize screen coordinates from (-1, 1) to (0, virtualWidth) and (0, virtualHeight) float normalizedX = (screenCoordinates.x / screenCoordinates.w + 1.0f) * 0.5f * virtualWidth; diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/MotionProcessor.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/MotionProcessor.java index 016a520..de35e7d 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/MotionProcessor.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/util/processing/MotionProcessor.java @@ -169,11 +169,13 @@ public class MotionProcessor { // Step 2: Create rotation matrices for each axis // Step 4: Rotate the acceleration vector - return motionData.acceleration + return motionData.rotation + .mul(5); + /*return motionData.acceleration .rotateZ(-motionData.rotation.z) .rotateY(-motionData.rotation.y) .rotateX(-motionData.rotation.x) - .mul(sampleRate * sampleRate / 2); + .mul(sampleRate * sampleRate / 2);*/ } /**