0%

pose_score | 舞姿打分评判标准

这一章是介绍如何给舞姿打分。


参考资料



打分机制

  • 两点连线和 x 或者 y 的夹角
  • 三点连线的夹角

最后我选择的是第一个方案。

关于选定第一个方案的理由如下:

  • 由于人的身体差异,身体的长短、手臂的长短都有可能影响角度
  • 选择每一个部位的点,就可以排除身体差异,而专注于动作本身

相关 js 代码


我们假设图片的走向是这样的

我们有两个点。

  • [10,2] 右上
  • [2,10] 左下

与 Y 轴比较

A 模式

1
2
3
4
5
6
7
8
9
10
const p1 = [2, 10]
const p2 = [10, 2]

const getTheta = ([ax, ay], [bx, by]) => {
let angle = Math.atan2((bx - ax), (by - ay))
let theta = angle * (180 / Math.PI);
return theta > 0 ? theta : 360 + theta;
}

console.log(getTheta(p1,p2));

输出

135

B 模式

1
2
3
4
5
6
7
8
9
10
const p1 = [2, 10]
const p2 = [10, 2]

const getTheta = ([ax, ay], [bx, by]) => {
let angle = Math.atan2((bx - ax), (ay - by))
let theta = angle * (180 / Math.PI);
return theta > 0 ? theta : 360 + theta;
}

console.log(getTheta(p1,p2));

输出

45
请我喝杯咖啡吧~