Switch to side-by-side view

--- a
+++ b/MATLAB/private/getCurrentMusclePathAsMat.m
@@ -0,0 +1,75 @@
+%-------------------------------------------------------------------------%
+% Copyright (c) 2019 Modenese L.                                          %
+%                                                                         %
+% Licensed under the Apache License, Version 2.0 (the "License");         %
+% you may not use this file except in compliance with the License.        %
+% You may obtain a copy of the License at                                 %
+% http://www.apache.org/licenses/LICENSE-2.0.                             %
+%                                                                         % 
+% Unless required by applicable law or agreed to in writing, software     %
+% distributed under the License is distributed on an "AS IS" BASIS,       %
+% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or         %
+% implied. See the License for the specific language governing            %
+% permissions and limitations under the License.                          %
+%                                                                         %
+%    Author:   Luca Modenese,  2017                                       %
+%    email:    l.modenese@imperial.ac.uk                                  %
+% ----------------------------------------------------------------------- %
+% Given a state, this script collects info about the path of a muscle. 
+% Bodies of muscle attachments and point coordinates are made available as
+% a list and a matrix respectively.
+% 
+% INPUTS: 
+%           - osimMuscle: an OpenSim model (API object).
+%           - s: state, used to update the current muscle path and get
+%               active conditional viapoints.
+%
+% OUTPUTS: 
+%           - mus_bodyset_list: matrix where each row is a muscle point and
+%           columns are its [X Y Z] coordinates in the reference system of 
+%           the body they belong to (as in .osim file).
+%           - mus_pointset_mat: cell array of body names, same length as
+%           the PathPointSet, with the name of the Body for each point.
+%           
+%
+% last modified: 
+% 2017: created.
+% 26 Jun 2018: comments (LM)
+% 29 Nov 2018: renamed, recommented, modified, added to MFD Matlab version.
+% ----------------------------------------------------------------------- %
+function [mus_bodyset_list, mus_pointset_mat] = getCurrentMusclePathAsMat(osimMuscle, s)
+
+% load libraries
+import org.opensim.modeling.*;
+
+% get pathpointset
+curr_PathPointSet = osimMuscle.getGeometryPath.getPathPointSet();
+
+n_pp = 1;
+for n_p = 0:curr_PathPointSet.getSize-1
+    
+    % point under examination
+    curr_point = curr_PathPointSet.get(n_p);
+    attachBody = curr_point.getBodyName();
+    
+    % if pathpoint is conditional, then check if it is active
+    if strcmp(char(curr_point.getConcreteClassName), 'ConditionalPathPoint')
+        cond_viapoint = ConditionalPathPoint.safeDownCast(curr_point);
+        % is it active?
+        if cond_viapoint.isActive(s)
+            % if yes add it to point set
+            mus_pointset_mat(n_pp, 1:3) = [curr_point.getLocation.get(0), curr_point.getLocation.get(1), curr_point.getLocation.get(2)]; %#ok<*AGROW>
+            mus_bodyset_list(n_pp) = {char(attachBody)};
+            n_pp = n_pp+1;
+        else
+            continue
+        end
+    else
+        % if not conditional add it
+        mus_pointset_mat(n_pp, 1:3) = [curr_point.getLocation.get(0), curr_point.getLocation.get(1), curr_point.getLocation.get(2)];
+        mus_bodyset_list(n_pp) = {char(attachBody)};
+        n_pp = n_pp+1;
+    end
+end
+
+end
\ No newline at end of file