diff --git a/ShoulderCase/@Muscle/getForceResultant.m b/ShoulderCase/@Muscle/getForceResultant.m new file mode 100644 index 0000000..3160a27 --- /dev/null +++ b/ShoulderCase/@Muscle/getForceResultant.m @@ -0,0 +1,8 @@ +function output = getForceResultant(obj) + applicationPoint = mean(obj.forceApplicationPoint); + forceResultant = Vector(applicationPoint, applicationPoint); + for i = 1:size(obj.subdivisions, 3) + forceResultant = forceResultant + obj.forceVector(i); + end + output = forceResultant; +end \ No newline at end of file diff --git a/ShoulderCase/@RotatorCuff/measureAnteroPosteriorImbalance.m b/ShoulderCase/@RotatorCuff/measureAnteroPosteriorImbalance.m index e2875ab..f40a60d 100644 --- a/ShoulderCase/@RotatorCuff/measureAnteroPosteriorImbalance.m +++ b/ShoulderCase/@RotatorCuff/measureAnteroPosteriorImbalance.m @@ -1,21 +1,21 @@ function measureAnteroPosteriorImbalance(obj) scapulaCS = obj.shoulder.scapula.coordSys; forceResultant = Vector(scapulaCS.origin, scapulaCS.origin)... - + obj.SC.forceVector... - + obj.SS.forceVector... - + obj.IS.forceVector... - + obj.TM.forceVector; + + obj.SC.getForceResultant()... + + obj.SS.getForceResultant()... + + obj.IS.getForceResultant()... + + obj.TM.getForceResultant(); % Take infero-superior orthogonal component <=> project on scapular axial plane inferoSuperior = Vector(scapulaCS.origin, scapulaCS.origin + scapulaCS.IS); imbalanceVector = inferoSuperior.orthogonalComplementTo(forceResultant); lateroMedial = Vector(scapulaCS.origin, scapulaCS.origin - scapulaCS.ML); anteroPosterior = Vector(scapulaCS.origin, scapulaCS.origin - scapulaCS.PA); % posterior imbalance is positive obj.anteroPosteriorImbalance = ... sign(dot(imbalanceVector, anteroPosterior)) *... rad2deg(lateroMedial.angle(imbalanceVector)); end \ No newline at end of file