Estoy trabajando con un estimador de pose que me da (x, y, z) para cada articulación. Estoy intentando calcular ángulos basados en estos y me encuentro con algunos problemas.
const find_angle = (Ax,Ay,Az,Bx,By,Bz,Cx,Cy,Cz) => { var AB = Math.sqrt(Math.pow(Bx-Ax,2) + Math.pow(By-Ay,2) + Math.pow(Bz-Az,2)); var CB = Math.sqrt(Math.pow(Bx-Cx,2) + Math.pow(By-Cy,2) + Math.pow(Bz-Cz,2)); var AC = Math.sqrt(Math.pow(Cx-Ax,2) + Math.pow(Cy-Ay,2) + Math.pow(Cz-Az,2)); const radians = Math.acos((CB*CB+AB*AB-AC*AC) / (2*CB*AB)); const angle = (Math.abs(radians*180.0/Math.PI)) console.log(angle) } // Knee find_angle(101, 166, 409, 107, 209, 790, 115, 248, 9564) // Ankle find_angle(100, 259, 1549, 97, 299, 9471, 95, 315, 1575)Salida:
La salida de la rodilla me parece correcta, pero la del tobillo no. Esperaba un ángulo en el rango de 70-90. Me pregunto si esta función es demasiado simple para lo que estoy tratando de hacer o qué mejoras podrían hacerse para que sea consistente en todas las articulaciones. El usuario mira a la cámara mientras se estima la pose.