diff --git a/.idea/misc.xml b/.idea/misc.xml
index f86549b..16389f9 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -12,19 +12,18 @@
-
-
-
+
-
+
-
+
+
diff --git a/app/src/main/java/com/example/acapendulum20/canvas/CanvasPendulum.kt b/app/src/main/java/com/example/acapendulum20/canvas/CanvasPendulum.kt
index 709673c..aae0c75 100644
--- a/app/src/main/java/com/example/acapendulum20/canvas/CanvasPendulum.kt
+++ b/app/src/main/java/com/example/acapendulum20/canvas/CanvasPendulum.kt
@@ -26,6 +26,7 @@ class CanvasPendulum @JvmOverloads constructor(
this.canvas = it
}
+ //println("ONDRAW")
//draw line
mPendulum.startPosition.x = (width / 2).toFloat()
paint.isAntiAlias = true
@@ -47,7 +48,7 @@ class CanvasPendulum @JvmOverloads constructor(
canvas?.drawCircle(
mPendulum.stopPosition.x,
mPendulum.stopPosition.y,
- mPendulum.ballRadius,
+ mPendulum.ballr,
paint
)
@@ -56,7 +57,7 @@ class CanvasPendulum @JvmOverloads constructor(
paint.strokeWidth = 1f
paint.color = Color.RED
if (mPendulum.angleVelocity > 0) {
- if (mPendulum.stopPosition.x < (width / 3) - 30f && mPendulum.stopPosition.x + 30 > (width / 3) - 30f - mPendulum.ballRadius) {
+ if (mPendulum.stopPosition.x < (width / 3) - 30f && mPendulum.stopPosition.x + 30 > (width / 3) - 30f - mPendulum.ballr) {
paint.style = Paint.Style.FILL_AND_STROKE
paint.strokeWidth = 10f
paint.color = Color.GREEN
@@ -69,7 +70,7 @@ class CanvasPendulum @JvmOverloads constructor(
paint.strokeWidth = 1f
paint.color = Color.RED
if (mPendulum.angleVelocity < 0) {
- if (mPendulum.stopPosition.x > (width / 1.5) - 30f && mPendulum.stopPosition.x + 30 < (width / 1.5) + 30f + mPendulum.ballRadius) {
+ if (mPendulum.stopPosition.x > (width / 1.5) - 30f && mPendulum.stopPosition.x + 30 < (width / 1.5) + 30f + mPendulum.ballr) {
paint.style = Paint.Style.FILL_AND_STROKE
paint.strokeWidth = 10f
paint.color = Color.GREEN
@@ -85,39 +86,45 @@ class CanvasPendulum @JvmOverloads constructor(
if (mPendulum.magneticField) {
+ var gravity = 0.981f
+ var damping = 0.996f
+
if (mPendulum.stopPosition.x > canvas.width / 4f && mPendulum.stopPosition.x <= canvas.width * 0.75f) {
- mPendulum.gravity = 1.981f
+ gravity = 1.981f
if (mPendulum.stopPosition.x > canvas.width / 3.toFloat() && mPendulum.stopPosition.x <= canvas.width / 1.5.toFloat()) {
- mPendulum.gravity = 2.981f
+ gravity = 2.981f
if (mPendulum.stopPosition.x >= canvas.width / 2.toFloat() - 3 && mPendulum.stopPosition.x <= canvas.width / 2.toFloat() + 3) {
- mPendulum.damping = 0.3f
+ damping = 0.3f
}
}
}
- mPendulum.angleAcceleration = ((-1 * mPendulum.gravity / mPendulum.stringLength) * (mPendulum.startAngle)).toFloat()
+ mPendulum.angleAcceleration =
+ ((-1 * gravity / mPendulum.r) * (mPendulum.angle)).toFloat()
mPendulum.angleVelocity += mPendulum.angleAcceleration
- mPendulum.angleVelocity *= mPendulum.damping
- mPendulum.startAngle += mPendulum.angleVelocity
+ mPendulum.angleVelocity *= damping
+ mPendulum.angle += mPendulum.angleVelocity
//Polar to cartesian conversion
- mPendulum.stopPosition.x = mPendulum.stringLength * (sin(mPendulum.startAngle)).toFloat()
- mPendulum.stopPosition.y = mPendulum.stringLength * (cos(mPendulum.startAngle)).toFloat()
+ mPendulum.stopPosition.x = mPendulum.r * (sin(mPendulum.angle)).toFloat()
+ mPendulum.stopPosition.y = mPendulum.r * (cos(mPendulum.angle)).toFloat()
//Origin transition
mPendulum.stopPosition.x += mPendulum.startPosition.x
}
if (!mPendulum.magneticField) {
+ val gravity = 0.981f
+ val damping = 0.996f
-
- mPendulum.angleAcceleration = ((-1 * mPendulum.gravity / mPendulum.stringLength) * (mPendulum.startAngle)).toFloat()
+ mPendulum.angleAcceleration =
+ ((-1 * gravity / mPendulum.r) * (mPendulum.angle)).toFloat()
mPendulum.angleVelocity += mPendulum.angleAcceleration
- mPendulum.angleVelocity *= mPendulum.damping
- mPendulum.startAngle += mPendulum.angleVelocity
+ mPendulum.angleVelocity *= damping
+ mPendulum.angle += mPendulum.angleVelocity
//Polar to cartesian conversion
- mPendulum.stopPosition.x = mPendulum.stringLength * (sin(mPendulum.startAngle)).toFloat()
- mPendulum.stopPosition.y = mPendulum.stringLength * (cos(mPendulum.startAngle)).toFloat()
+ mPendulum.stopPosition.x = mPendulum.r * (sin(mPendulum.angle)).toFloat()
+ mPendulum.stopPosition.y = mPendulum.r * (cos(mPendulum.angle)).toFloat()
//Origin transition
mPendulum.stopPosition.x += mPendulum.startPosition.x
}
@@ -131,11 +138,11 @@ class CanvasPendulum @JvmOverloads constructor(
mPendulum.magneticField = magnet
}
- fun getVelocity(): Double {
- var currentVelocity = mPendulum.angleVelocity * 1000
+ fun getVelocity(): Double {
+ var currentVelocity = mPendulum.angleVelocity * 1000
- val roundoff = (currentVelocity * 100.0).roundToInt() / 100.0
- return abs(roundoff)
+ val roundoff = (currentVelocity * 100.0).roundToInt() / 100.0
+ return abs(roundoff)
}
}
@@ -147,15 +154,12 @@ class Pendulum {
var startPosition: Position = Position(0f, 0f)
var stopPosition: Position = Position(0f, 0f)
+ var r = 800f
- var startAngle: Double = Math.PI / 12
- var stringLength = 750f
- var ballRadius: Float = 70.0f
- var damping = 0.996f
-
- var angleVelocity: Float = 0.0f
- var angleAcceleration: Float = 0.0f
-
- var gravity = 0.981f
+ //PI/6 Max ausschwingen
+ var angle: Double = Math.PI / 12
+ var angleVelocity: Float = 0.0f //
+ var angleAcceleration: Float = 0.0f //
+ var ballr: Float = 70.0f //
var magneticField: Boolean = false
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/acapendulum20/fragments/pendulum/PendulumFragment.kt b/app/src/main/java/com/example/acapendulum20/fragments/pendulum/PendulumFragment.kt
index cd16d9e..8bf0c2e 100644
--- a/app/src/main/java/com/example/acapendulum20/fragments/pendulum/PendulumFragment.kt
+++ b/app/src/main/java/com/example/acapendulum20/fragments/pendulum/PendulumFragment.kt
@@ -84,13 +84,15 @@ class PendulumFragment : Fragment() {
magnetButton.setOnTouchListener(object : View.OnTouchListener{
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
if (event?.action == MotionEvent.ACTION_DOWN){
- //println("button action DOWN")
+ println("button action DOWN")
mCanvasPendulum.startMagnet(true)
+ //mCanvasPendulum.magnet(true)
}
if (event?.action == MotionEvent.ACTION_UP){
- //println("button action UP")
+ println("button action UP")
mCanvasPendulum.stopMagnet(false)
+ //mCanvasPendulum.magnet(false)
}
return true
}
diff --git a/app/src/main/java/com/example/acapendulum20/fragments/update/MeasurementList.kt b/app/src/main/java/com/example/acapendulum20/fragments/update/MeasurementList.kt
index 39a5e1a..f3c36d6 100644
--- a/app/src/main/java/com/example/acapendulum20/fragments/update/MeasurementList.kt
+++ b/app/src/main/java/com/example/acapendulum20/fragments/update/MeasurementList.kt
@@ -16,9 +16,9 @@ import java.text.SimpleDateFormat
import java.util.*
import com.example.acapendulum20.viewmodel.MeasurementViewmodel
-class MeasurementList: RecyclerView.Adapter() {
+class MeasurementList(private var mMeasurementViewmodel: MeasurementViewmodel): RecyclerView.Adapter() {
+
- private lateinit var mMeasurementViewmodel: MeasurementViewmodel
private var sessionList = emptyList()
@@ -52,7 +52,7 @@ class MeasurementList: RecyclerView.Adapter() {
holder.itemView.usedHand_txt.text = "used hand: " + currentItem.usedHand
holder.itemView.deleteMeasurement_btn.setOnClickListener{
- deleteMeasurement()
+ deleteMeasurement(currentItem)
}
}
@@ -62,8 +62,12 @@ class MeasurementList: RecyclerView.Adapter() {
notifyDataSetChanged()
}
- private fun deleteMeasurement() {
- mMeasurementViewmodel = ViewModelProvider(this).get(MeasurementViewmodel::class.java)
+ private fun deleteMeasurement(currentItem: Measurement) {
+ //mMeasurementViewmodel = ViewModelProvider(this).get(MeasurementViewmodel::class.java)
+ println(mMeasurementViewmodel)
+ println(currentItem)
+ mMeasurementViewmodel.deleteMeasurement(currentItem)
+ println("Hopefully deleted the Measurement")
}
}
diff --git a/app/src/main/java/com/example/acapendulum20/fragments/update/UpdateFragment.kt b/app/src/main/java/com/example/acapendulum20/fragments/update/UpdateFragment.kt
index 6d46e79..9f0a8a8 100644
--- a/app/src/main/java/com/example/acapendulum20/fragments/update/UpdateFragment.kt
+++ b/app/src/main/java/com/example/acapendulum20/fragments/update/UpdateFragment.kt
@@ -64,19 +64,23 @@ class UpdateFragment : Fragment() {
datePickerDialog.show()
}
+ mUserViewModel = ViewModelProvider(this).get(UserViewmodel::class.java)
+ mMeasurementViewmodel = ViewModelProvider(this).get(MeasurementViewmodel::class.java)
+ mMeasurementViewmodel.readAllDataForUserId(args.currentUser.id)
+
+
+
//Recylerview
- val adapter = MeasurementList()
+ val adapter = MeasurementList(mMeasurementViewmodel)
val recyclerView = view.SessionRecyclerview
recyclerView.adapter = adapter
recyclerView.layoutManager = LinearLayoutManager(requireContext())
- mUserViewModel = ViewModelProvider(this).get(UserViewmodel::class.java)
- mMeasurementViewmodel = ViewModelProvider(this).get(MeasurementViewmodel::class.java)
- mMeasurementViewmodel.readAllDataForUserId(args.currentUser.id)
mMeasurementViewmodel.readAllData.observe(viewLifecycleOwner, Observer { measurement ->
adapter.setData(measurement)
})
+
view.updateFirstName_et.setText(args.currentUser.firstName)
view.updateLastName_et.setText(args.currentUser.lastName)
view.updateBirthday_et.setText(args.currentUser.birthday)
diff --git a/app/src/main/java/com/example/acapendulum20/viewmodel/MeasurementViewmodel.kt b/app/src/main/java/com/example/acapendulum20/viewmodel/MeasurementViewmodel.kt
index 66d92d4..cade02b 100644
--- a/app/src/main/java/com/example/acapendulum20/viewmodel/MeasurementViewmodel.kt
+++ b/app/src/main/java/com/example/acapendulum20/viewmodel/MeasurementViewmodel.kt
@@ -12,7 +12,7 @@ import kotlinx.coroutines.launch
class MeasurementViewmodel(application: Application): AndroidViewModel(application) {
- //lateinit var readAllData: LiveData>
+ lateinit var readAllData: LiveData>
private val repository: MeasurementRepository
init{