信息提示

main
o__-xpf-__o 4 weeks ago
parent 3aacc18d8c
commit f70e298aae

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidTestResultsUserPreferences">
<option name="androidTestResultsTableState">
<map>
<entry key="975774096">
<value>
<AndroidTestResultsTableState>
<option name="preferredColumnWidths">
<map>
<entry key="Duration" value="90" />
<entry key="Medium_Phone_API_36" value="120" />
<entry key="Tests" value="360" />
</map>
</option>
</AndroidTestResultsTableState>
</value>
</entry>
<entry key="1074918448">
<value>
<AndroidTestResultsTableState>
<option name="preferredColumnWidths">
<map>
<entry key="Duration" value="90" />
<entry key="Medium_Phone_API_36" value="120" />
<entry key="Tests" value="360" />
</map>
</option>
</AndroidTestResultsTableState>
</value>
</entry>
<entry key="1125150954">
<value>
<AndroidTestResultsTableState>
<option name="preferredColumnWidths">
<map>
<entry key="Duration" value="90" />
<entry key="Medium_Phone_API_36" value="120" />
<entry key="Tests" value="360" />
</map>
</option>
</AndroidTestResultsTableState>
</value>
</entry>
</map>
</option>
</component>
</project>

@ -0,0 +1,130 @@
package org.tensorflow.lite.examples.poseestimation.data
import kotlin.math.abs
class Angle {
// 站立姿势(正面)
fun standList(): List<Int> {
val list = List(8) { 90; 90; 170; 170; 90; 90; 180; 180 }
return list
}
// 硬拉(左侧面)
fun deadliftList(): List<Int> {
val list = List(8) { 90; 90; 180; 180; 150; 30; 120; 120 }
return list
}
// 深蹲(侧面观察)
fun squatList(): List<Int> {
val list = List(8) { 10; 10; 180; 180; 20; 20; 70; 70 }
/*左肩膀与右肩膀保持水平
list[1] = 180 // 右肩膀与左肩膀保持水平
list[2] = 90 // 左肘部默认弯曲角度为90°
list[3] = 90 // 右肘部默认弯曲角度为90°
list[4] = 90 // 左髋部下降,接近平行
list[5] = 90 // 右髋部下降,接近平行
list[6] = 90 // 左膝盖弯曲至90°
list[7] = 90 // 右膝盖弯曲至90°*/
return list
}
// 平板支撑Plank- 侧面观察
fun plankList(): List<Int> {
val list = List(8) { 90; 90; 90; 90; 180; 180; 180; 180 }
/*list[0] = 180 // 左肩膀与右肩膀保持水平
list[1] = 180 // 右肩膀与左肩膀保持水平
list[2] = 0 // 左肘部保持水平
list[3] = 0 // 右肘部保持水平
list[4] = 0 // 左膝盖保持直线
list[5] = 0 // 右膝盖保持直线
list[6] = 0 // 左脚踝与脚背成直线
list[7] = 0 // 右脚踝与脚背成直线*/
return list
}
// 引体向上(正面)
fun pullUpList(): List<Int> {
val list = List(8) { 100; 100; 100; 100; 90; 90; 180; 180 }
return list
}
/*
俯卧撑Push-up- 侧面观察
肩膀LEFT_SHOULDER, RIGHT_SHOULDER肩膀应在肘部正上方保持稳定不要耸肩 -> 左右肩膀的角度应接近180°保持在肘部上方
肘部LEFT_ELBOW, RIGHT_ELBOW肘部弯曲角度大约为90度且肘部始终保持在肩膀下方 -> 左右肘部角度为90°肘部应下沉不应过度弯曲
脚踝LEFT_ANKLE, RIGHT_ANKLE身体应从脚踝到肩膀成一直线避免臀部上升或下垂 -> 左右脚踝角度为0°保持直线
*/
fun pushUpList(): List<Int> {
val list = List(8) { 90 } // 初始值设置为90°
/*list[0] = 180 // 左肩膀与右肩膀保持水平
list[1] = 180 // 右肩膀与左肩膀保持水平
list[2] = 90 // 左肘部弯曲至90°
list[3] = 90 // 右肘部弯曲至90°
list[4] = 0 // 左膝盖保持直线
list[5] = 0 // 右膝盖保持直线
list[6] = 0 // 左脚踝角度保持自然
list[7] = 0 // 右脚踝角度保持自然*/
return list
}
}
class AngleDifference(private val angleObj: Angle) {
// 假设getAngles()方法已经实现并能返回一个List<Double>
fun getAngles(): List<Double> {
return listOf(100.0, 95.0, 180.0, 85.0, 90.0, 75.0, 160.0, 170.0)
}
// 计算角度差并根据角度值判断是否大于10返回相应的语句
fun calculateAngleDifference(listType: String): String {
// 根据传入的参数选择不同的角度列表
val selectedList = when (listType) {
"1" -> angleObj.standList() // 选择站立姿势列表
"2" -> angleObj.deadliftList() // 选择硬拉列表
"3" -> angleObj.pushUpList() // 选择俯卧撑列表
else -> throw IllegalArgumentException("未知的列表类型: $listType") // 处理无效的输入
}
// 获取另一个类中的角度列表
val angles = getAngles()
// 确保两个列表的大小一致
if (selectedList.size != angles.size) {
throw IllegalArgumentException("两个列表的大小不一致!")
}
// 计算差值并检查条件
val differenceList = mutableListOf<Double>()
for (i in selectedList.indices) {
differenceList.add((selectedList[i] - angles[i]).toDouble())
}
// 检查差值列表中的每个值
val absoluteValues = differenceList.map { abs(it) }
if (absoluteValues.all { it < 10 }) {
// 如果所有值的绝对值都小于10
return "动作标准"
} else {
// 根据不同的位置返回不同的语句
for (i in absoluteValues.indices) {
if (absoluteValues[i] > 10) {
return when (i) {
0 -> "第一个位置的角度差值超出标准,请调整!"
1 -> "第二个位置的角度差值超出标准,请调整!"
2 -> "第三个位置的角度差值超出标准,请调整!"
3 -> "第四个位置的角度差值超出标准,请调整!"
4 -> "第五个位置的角度差值超出标准,请调整!"
5 -> "第六个位置的角度差值超出标准,请调整!"
6 -> "第七个位置的角度差值超出标准,请调整!"
7 -> "第八个位置的角度差值超出标准,请调整!"
else -> "未知位置的角度差值超出标准,请检查!"
}
}
}
}
return "未知情况"
}
}
Loading…
Cancel
Save