Switch to unified view

a b/Body/AAUHuman/Trunk/SegmentsCervicalSpine.any
1
/// Definition of the cervical spine
2
AnyFolder SegmentsCervicalSpine = {
3
4
  #include "SkullSeg.any"  
5
  
6
  AnySeg C1Seg = {
7
8
    AnyFolder &StdPar = ..ModelParameters.C1;    
9
10
    r0= .C2Seg.C2C1JntNode.sRel*.C2Seg.Axes0'+.C2Seg.r0-C2C1JntNode.sRel*Axes0';
11
12
    AnyVar MassS = ..Scaling.MassScaling.Cervical.MassScale;    
13
    AnyVar MassStandard = ..StandardParameters.CervicalSpine.Mass*0.135;
14
    
15
    Mass = MassS*MassStandard;           
16
    Jii = StdPar.Jii;
17
18
    // This file includes the trunk specifc scaling function
19
    // and anatomical reference system
20
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.C1Seg.ScaleFunction;
21
    #include "TrunkScalingAndAnatomicalFrame.any"
22
23
    sCoM = Scale(StdPar.sCoM_pos);
24
    JaboutCoMOnOff = On;
25
    
26
    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
27
    
28
    AnyRefNode C2C1JntNode = {sRel = .Scale(.StdPar.C2C1JntNode_pos);};        
29
    AnyRefNode C1C0JntNode = {
30
      sRel = .Scale(.StdPar.C1C0JntNode_pos);
31
      AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1, 0, 0};};
32
      // Rotated node with x axis aligned with the superior articular facet
33
      AnyRefNode RotNode = {
34
        ARel = RotMat(0.25*(..SuperiorArticularFacetAnteriorNodeR.sRel + ..SuperiorArticularFacetPosteriorNodeR.sRel + ..SuperiorArticularFacetAnteriorNodeL.sRel + ..SuperiorArticularFacetPosteriorNodeL.sRel),
35
                      0.5*(..SuperiorArticularFacetAnteriorNodeR.sRel + ..SuperiorArticularFacetAnteriorNodeL.sRel),
36
                      0.25*(..SuperiorArticularFacetAnteriorNodeR.sRel + ..SuperiorArticularFacetPosteriorNodeR.sRel + ..SuperiorArticularFacetAnteriorNodeL.sRel + ..SuperiorArticularFacetPosteriorNodeL.sRel)
37
                      + (..SuperiorArticularFacetAnteriorNodeL.sRel - ..SuperiorArticularFacetAnteriorNodeR.sRel))*RotMat(pi/2,x);
38
      };
39
    };        
40
    
41
    // Nodes at the superior articular facet
42
    AnyRefNode SuperiorArticularFacetAnteriorNodeR = {sRel = .Scale(.StdPar.Right.SuperiorArticularFacetAnteriorNode_pos);};
43
    AnyRefNode SuperiorArticularFacetPosteriorNodeR = {sRel = .Scale(.StdPar.Right.SuperiorArticularFacetPosteriorNode_pos);};
44
    AnyRefNode SuperiorArticularFacetAnteriorNodeL = {sRel = .Scale(.StdPar.Left.SuperiorArticularFacetAnteriorNode_pos);};
45
    AnyRefNode SuperiorArticularFacetPosteriorNodeL = {sRel = .Scale(.StdPar.Left.SuperiorArticularFacetPosteriorNode_pos);};
46
47
    //Longus colli nodes
48
    AnyRefNode LongusColliT1C1NodeR = {sRel = .Scale(.StdPar.Right.LongusColliT1C1Node_pos);};
49
    AnyRefNode LongusColliT1C1NodeL = {sRel = .Scale(.StdPar.Left.LongusColliT1C1Node_pos);};
50
    
51
    //Splenius cervicis nodes
52
    AnyRefNode SpleniusCervicisT3C1NodeR = {sRel = .Scale(.StdPar.Right.SpleniusCervicisT3C1Node_pos);};
53
    AnyRefNode SpleniusCervicisT3C1NodeL = {sRel = .Scale(.StdPar.Left.SpleniusCervicisT3C1Node_pos);};
54
    
55
    AnyDrawSurf DrwSTL = {
56
      FileName = ...STL.FilenameC1Seg;
57
      RGB = ...ColorRef.Segments;
58
      Opacity = Main.DrawSettings.BonesOpacity.C1;
59
      AnyFunTransform3D &Scale =.Scale;
60
    };
61
    AnyRefNode Right ={};
62
    AnyRefNode Left ={};
63
    
64
  };
65
  
66
  AnySeg C2Seg = {
67
    
68
    AnyFolder &StdPar = ..ModelParameters.C2;    
69
    
70
    r0= .C3Seg.C3C2JntNode.sRel*.C3Seg.Axes0'+.C3Seg.r0-C3C2JntNode.sRel*Axes0';
71
72
    // This file includes the trunk specifc scaling function
73
    // and anatomical reference system
74
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.C2Seg.ScaleFunction;
75
    #include "TrunkScalingAndAnatomicalFrame.any"
76
    
77
    AnyVar MassS = ..Scaling.MassScaling.Cervical.MassScale;
78
    
79
    AnyVar MassStandard = ..StandardParameters.CervicalSpine.Mass*0.153;
80
    
81
    Mass = MassS*MassStandard;           
82
    
83
    Jii = StdPar.Jii;    
84
    sCoM = Scale(StdPar.sCoM_pos);
85
    
86
    JaboutCoMOnOff = On;
87
    
88
    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
89
    
90
    AnyRefNode C3C2JntNode = {sRel = .Scale(.StdPar.C3C2JntNode_pos);};        
91
    AnyRefNode C2C1JntNode = {
92
      sRel = .Scale(.StdPar.C2C1JntNode_pos);
93
      AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1, 0, 0};};
94
      // Rotated node with x axis aligned with the superior articular facet
95
      AnyRefNode RotNode = {
96
        ARel = RotMat(0.25*(..SuperiorArticularFacetAnteriorNodeR.sRel + ..SuperiorArticularFacetPosteriorNodeR.sRel + ..SuperiorArticularFacetAnteriorNodeL.sRel + ..SuperiorArticularFacetPosteriorNodeL.sRel),
97
                      0.5*(..SuperiorArticularFacetAnteriorNodeR.sRel + ..SuperiorArticularFacetAnteriorNodeL.sRel),
98
                      0.25*(..SuperiorArticularFacetAnteriorNodeR.sRel + ..SuperiorArticularFacetPosteriorNodeR.sRel + ..SuperiorArticularFacetAnteriorNodeL.sRel + ..SuperiorArticularFacetPosteriorNodeL.sRel)
99
                      + (..SuperiorArticularFacetAnteriorNodeL.sRel - ..SuperiorArticularFacetAnteriorNodeR.sRel))*RotMat(pi/2,x);
100
      };
101
    };        
102
        
103
    // Nodes at the superior articular facet
104
    AnyRefNode SuperiorArticularFacetAnteriorNodeR = {sRel = .Scale(.StdPar.Right.SuperiorArticularFacetAnteriorNode_pos);};
105
    AnyRefNode SuperiorArticularFacetPosteriorNodeR = {sRel = .Scale(.StdPar.Right.SuperiorArticularFacetPosteriorNode_pos);};
106
    AnyRefNode SuperiorArticularFacetAnteriorNodeL = {sRel = .Scale(.StdPar.Left.SuperiorArticularFacetAnteriorNode_pos);};
107
    AnyRefNode SuperiorArticularFacetPosteriorNodeL = {sRel = .Scale(.StdPar.Left.SuperiorArticularFacetPosteriorNode_pos);};
108
109
    //Longus colli nodes
110
    AnyRefNode LongusColliT1C2NodeR = {sRel = .Scale(.StdPar.Right.LongusColliT1C2Node_pos);};
111
    AnyRefNode LongusColliT1C2NodeL = {sRel = .Scale(.StdPar.Left.LongusColliT1C2Node_pos);};
112
    
113
    //Splenius cervicis nodes
114
    AnyRefNode SpleniusCervicisT3C2NodeR = {sRel = .Scale(.StdPar.Right.SpleniusCervicisT3C2Node_pos);};
115
    AnyRefNode SpleniusCervicisT3C2NodeL = {sRel = .Scale(.StdPar.Left.SpleniusCervicisT3C2Node_pos);};
116
    
117
    //Semispinalis cervicis nodes
118
    AnyRefNode SemispinalisCervicisT1C2NodeR = {sRel = .Scale(.StdPar.Right.SemispinalisCervicisT1C2Node_pos);};
119
    AnyRefNode SemispinalisCervicisT1C2NodeL = {sRel = .Scale(.StdPar.Left.SemispinalisCervicisT1C2Node_pos);};
120
    
121
    //Longissimus cervicis nodes
122
    AnyRefNode LongissimusCervicisT2C2NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCervicisT2C2Node_pos);};
123
    AnyRefNode LongissimusCervicisT2C2NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCervicisT2C2Node_pos);};
124
    
125
    //Multifidus cervicis nodes
126
    AnyRefNode MultifidusCervicisC2NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC2Node_pos);};
127
    AnyRefNode MultifidusCervicisC2NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC2Node_pos);};
128
    
129
    AnyDrawSurf DrwSTL = {
130
      FileName = ...STL.FilenameC2Seg;
131
      RGB = ...ColorRef.Segments;
132
      Opacity = Main.DrawSettings.BonesOpacity.C2;
133
      AnyFunTransform3D &Scale =.Scale;
134
    };
135
    AnyRefNode Right ={};
136
    AnyRefNode Left ={};
137
  };    
138
139
  
140
  AnySeg C3Seg = {
141
142
    AnyFolder &StdPar = ..ModelParameters.C3;    
143
    
144
    r0= .C4Seg.C4C3JntNode.sRel*.C4Seg.Axes0'+.C4Seg.r0-C4C3JntNode.sRel*Axes0';
145
146
    AnyVar MassS = ..Scaling.MassScaling.Cervical.MassScale;    
147
    AnyVar MassStandard = ..StandardParameters.CervicalSpine.Mass*0.147;
148
    
149
      // This file includes the trunk specifc scaling function
150
    // and anatomical reference system
151
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.C3Seg.ScaleFunction;
152
    #include "TrunkScalingAndAnatomicalFrame.any"
153
    
154
    Mass = MassS*MassStandard;           
155
156
    Jii = StdPar.Jii;    
157
    sCoM = Scale(StdPar.sCoM_pos);
158
    
159
    JaboutCoMOnOff = On;
160
    
161
    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
162
    
163
    AnyRefNode C4C3JntNode = {sRel = .Scale(.StdPar.C4C3JntNode_pos);};        
164
    AnyRefNode C3C2JntNode = {
165
      sRel = .Scale(.StdPar.C3C2JntNode_pos);
166
      AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1, 0, 0};};
167
      // Rotated node with x axis parallel to the superior endplate surface
168
      AnyRefNode RotNode = {
169
        ARel = RotMat(0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel),
170
                      ..SuperiorEndplateAnteriorNode.sRel,
171
                      0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel) + (..UncinateProcessNodeL.sRel - ..UncinateProcessNodeR.sRel))*RotMat(pi/2,x);
172
      };      
173
    };        
174
    
175
    // Nodes at the anterior and posterior points on the superior endplate
176
    AnyRefNode SuperiorEndplateAnteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplateAnteriorNode_pos);};
177
    AnyRefNode SuperiorEndplatePosteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplatePosteriorNode_pos);};
178
    
179
    // Nodes at the right and left points on the superior endplate
180
    AnyRefNode UncinateProcessNodeR = {sRel = .Scale(.StdPar.Right.UncinateProcessNode_pos);};
181
    AnyRefNode UncinateProcessNodeL = {sRel = .Scale(.StdPar.Left.UncinateProcessNode_pos);};
182
183
    //Longus colli nodes
184
    AnyRefNode LongusColliT1C3NodeR = {sRel = .Scale(.StdPar.Right.LongusColliT1C3Node_pos);};
185
    AnyRefNode LongusColliT1C3NodeL = {sRel = .Scale(.StdPar.Left.LongusColliT1C3Node_pos);};
186
    
187
    //Longus cappitis nodes
188
    AnyRefNode LongusCapitisC3C0NodeR = {sRel = .Scale(.StdPar.Right.LongusCapitisC3C0Node_pos);};
189
    AnyRefNode LongusCapitisC3C0NodeL = {sRel = .Scale(.StdPar.Left.LongusCapitisC3C0Node_pos);};
190
    
191
    //Scalenus medius nodes
192
    AnyRefNode ScalenusMediusT1C3NodeR = {sRel = .Scale(.StdPar.Right.ScalenusMediusT1C3Node_pos);};
193
    AnyRefNode ScalenusMediusT1C3NodeL = {sRel = .Scale(.StdPar.Left.ScalenusMediusT1C3Node_pos);};
194
    
195
    //Splenius cervicis nodes
196
    AnyRefNode SpleniusCervicisT3C3NodeR = {sRel = .Scale(.StdPar.Right.SpleniusCervicisT3C3Node_pos);};
197
    AnyRefNode SpleniusCervicisT3C3NodeL = {sRel = .Scale(.StdPar.Left.SpleniusCervicisT3C3Node_pos);};
198
    
199
    //Semispinalis cervicis nodes
200
    AnyRefNode SemispinalisCervicisT2C3NodeR = {sRel = .Scale(.StdPar.Right.SemispinalisCervicisT2C3Node_pos);};
201
    AnyRefNode SemispinalisCervicisT2C3NodeL = {sRel = .Scale(.StdPar.Left.SemispinalisCervicisT2C3Node_pos);};
202
    
203
    //Longissimus capitis nodes
204
    AnyRefNode LongissimusCapitisC3C0NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCapitisC3C0Node_pos);};
205
    AnyRefNode LongissimusCapitisC3C0NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCapitisC3C0Node_pos);};
206
    
207
    //Longissimus cervicis nodes
208
    AnyRefNode LongissimusCervicisT2C3NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCervicisT2C3Node_pos);};
209
    AnyRefNode LongissimusCervicisT2C3NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCervicisT2C3Node_pos);};
210
    
211
    //Multifidus cervicis nodes
212
    AnyRefNode MultifidusCervicisC3NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC3Node_pos);};
213
    AnyRefNode MultifidusCervicisC3NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC3Node_pos);};
214
    
215
    AnyDrawSurf DrwSTL = {
216
      FileName = ...STL.FilenameC3Seg;
217
      RGB = ...ColorRef.Segments;
218
      Opacity = Main.DrawSettings.BonesOpacity.C3;
219
      AnyFunTransform3D &Scale =.Scale;
220
    };
221
    AnyRefNode Right ={};
222
    AnyRefNode Left ={};
223
  };
224
  
225
  AnySeg C4Seg = {
226
  
227
    AnyFolder &StdPar = ..ModelParameters.C4;    
228
229
    r0= .C5Seg.C5C4JntNode.sRel*.C5Seg.Axes0'+.C5Seg.r0-C5C4JntNode.sRel*Axes0';    
230
    
231
    AnyVar MassS = ..Scaling.MassScaling.Cervical.MassScale;    
232
    AnyVar MassStandard = ..StandardParameters.CervicalSpine.Mass*0.141;
233
    
234
    Mass = MassS*MassStandard;           
235
    
236
    // This file includes the trunk specifc scaling function
237
    // and anatomical reference system
238
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.C4Seg.ScaleFunction;
239
    #include "TrunkScalingAndAnatomicalFrame.any"
240
    
241
    Jii = StdPar.Jii;    
242
    sCoM = Scale(StdPar.sCoM_pos);
243
    
244
    JaboutCoMOnOff = On;
245
    
246
    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
247
    
248
    AnyRefNode C5C4JntNode = {sRel = .Scale(.StdPar.C5C4JntNode_pos);};        
249
    AnyRefNode C4C3JntNode = {
250
      sRel = .Scale(.StdPar.C4C3JntNode_pos);
251
      AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1, 0, 0};};
252
      // Rotated node with x axis parallel to the superior endplate surface
253
      AnyRefNode RotNode = {
254
        ARel = RotMat(0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel),
255
                      ..SuperiorEndplateAnteriorNode.sRel,
256
                      0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel) + (..UncinateProcessNodeL.sRel - ..UncinateProcessNodeR.sRel))*RotMat(pi/2,x);
257
      };
258
    };        
259
    
260
    // Nodes at the anterior and posterior points on the superior endplate
261
    AnyRefNode SuperiorEndplateAnteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplateAnteriorNode_pos);};
262
    AnyRefNode SuperiorEndplatePosteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplatePosteriorNode_pos);};
263
    
264
    // Nodes at the right and left points on the superior endplate
265
    AnyRefNode UncinateProcessNodeR = {sRel = .Scale(.StdPar.Right.UncinateProcessNode_pos);};
266
    AnyRefNode UncinateProcessNodeL = {sRel = .Scale(.StdPar.Left.UncinateProcessNode_pos);};
267
268
    //Longus colli nodes
269
    AnyRefNode LongusColliT1C4NodeR = {sRel = .Scale(.StdPar.Right.LongusColliT1C4Node_pos);};
270
    AnyRefNode LongusColliT1C4NodeL = {sRel = .Scale(.StdPar.Left.LongusColliT1C4Node_pos);};
271
    
272
    //Longus cappitis nodes
273
    AnyRefNode LongusCapitisC4C0NodeR = {sRel = .Scale(.StdPar.Right.LongusCapitisC4C0Node_pos);};
274
    AnyRefNode LongusCapitisC4C0NodeL = {sRel = .Scale(.StdPar.Left.LongusCapitisC4C0Node_pos);};
275
    
276
    //Scalenus anterior nodes
277
    AnyRefNode ScalenusAnteriorT1C4NodeR = {sRel = .Scale(.StdPar.Right.ScalenusAnteriorT1C4Node_pos);};
278
    AnyRefNode ScalenusAnteriorT1C4NodeL = {sRel = .Scale(.StdPar.Left.ScalenusAnteriorT1C4Node_pos);};
279
    
280
    //Semispinalis capitis nodes
281
    AnyRefNode SemispinalisCapitisC4C0NodeR = {sRel = .Scale(.StdPar.Right.SemispinalisCapitisC4C0Node_pos);};
282
    AnyRefNode SemispinalisCapitisC4C0NodeL = {sRel = .Scale(.StdPar.Left.SemispinalisCapitisC4C0Node_pos);};
283
    
284
    //Semispinalis cervicis nodes
285
    AnyRefNode SemispinalisCervicisT3C4NodeR = {sRel = .Scale(.StdPar.Right.SemispinalisCervicisT3C4Node_pos);};
286
    AnyRefNode SemispinalisCervicisT3C4NodeL = {sRel = .Scale(.StdPar.Left.SemispinalisCervicisT3C4Node_pos);};
287
    
288
    //Longissimus capitis nodes
289
    AnyRefNode LongissimusCapitisC4C0NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCapitisC4C0Node_pos);};
290
    AnyRefNode LongissimusCapitisC4C0NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCapitisC4C0Node_pos);};
291
    
292
    //Longissimus cervicis nodes
293
    AnyRefNode LongissimusCervicisT2C4NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCervicisT2C4Node_pos);};
294
    AnyRefNode LongissimusCervicisT2C4NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCervicisT2C4Node_pos);};
295
    
296
    //Multifidus cervicis nodes
297
    AnyRefNode MultifidusCervicisC4NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC4Node_pos);};
298
    AnyRefNode MultifidusCervicisC4NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC4Node_pos);};
299
    
300
    AnyDrawSurf DrwSTL = {
301
      FileName = ...STL.FilenameC4Seg;
302
      RGB = ...ColorRef.Segments;
303
      Opacity = Main.DrawSettings.BonesOpacity.C4;
304
      AnyFunTransform3D &Scale =.Scale;
305
    };
306
    AnyRefNode Right ={};
307
    AnyRefNode Left ={};
308
  };
309
  
310
  AnySeg C5Seg = {
311
312
    AnyFolder &StdPar = ..ModelParameters.C5;    
313
    
314
    r0= .C6Seg.C6C5JntNode.sRel*.C6Seg.Axes0'+.C6Seg.r0-C6C5JntNode.sRel*Axes0';
315
316
    AnyVar MassS = ..Scaling.MassScaling.Cervical.MassScale;    
317
    AnyVar MassStandard = ..StandardParameters.CervicalSpine.Mass*0.141;
318
    
319
    Mass = MassS*MassStandard;           
320
    
321
    // This file includes the trunk specifc scaling function
322
    // and anatomical reference system
323
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.C5Seg.ScaleFunction;
324
    #include "TrunkScalingAndAnatomicalFrame.any"
325
    
326
    Jii = StdPar.Jii;    
327
    sCoM = Scale(StdPar.sCoM_pos);
328
    
329
    JaboutCoMOnOff = On;
330
    
331
    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
332
    
333
    AnyRefNode C6C5JntNode = {sRel = .Scale(.StdPar.C6C5JntNode_pos);};        
334
    AnyRefNode C5C4JntNode = {
335
      sRel = .Scale(.StdPar.C5C4JntNode_pos);
336
      AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1, 0, 0};};
337
      // Rotated node with x axis parallel to the superior endplate surface
338
      AnyRefNode RotNode = {
339
        ARel = RotMat(0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel),
340
                      ..SuperiorEndplateAnteriorNode.sRel,
341
                      0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel) + (..UncinateProcessNodeL.sRel - ..UncinateProcessNodeR.sRel))*RotMat(pi/2,x);
342
      };
343
    };        
344
    
345
    // Nodes at the anterior and posterior points on the superior endplate
346
    AnyRefNode SuperiorEndplateAnteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplateAnteriorNode_pos);};
347
    AnyRefNode SuperiorEndplatePosteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplatePosteriorNode_pos);};
348
    
349
    // Nodes at the right and left points on the superior endplate
350
    AnyRefNode UncinateProcessNodeR = {sRel = .Scale(.StdPar.Right.UncinateProcessNode_pos);};
351
    AnyRefNode UncinateProcessNodeL = {sRel = .Scale(.StdPar.Left.UncinateProcessNode_pos);};
352
353
    //Longus colli nodes
354
    AnyRefNode LongusColliT1C5NodeR = {sRel = .Scale(.StdPar.Right.LongusColliT1C5Node_pos);};
355
    AnyRefNode LongusColliT1C5NodeL = {sRel = .Scale(.StdPar.Left.LongusColliT1C5Node_pos);};
356
    
357
    //Longus cappitis nodes
358
    AnyRefNode LongusCapitisC5C0NodeR = {sRel = .Scale(.StdPar.Right.LongusCapitisC5C0Node_pos);};
359
    AnyRefNode LongusCapitisC5C0NodeL = {sRel = .Scale(.StdPar.Left.LongusCapitisC5C0Node_pos);};
360
    
361
    //Scalenus Posterior nodes
362
    AnyRefNode ScalenusPosteriorT1C5NodeR = {sRel = .Scale(.StdPar.Right.ScalenusPosteriorT1C5Node_pos);};
363
    AnyRefNode ScalenusPosteriorT1C5NodeL = {sRel = .Scale(.StdPar.Left.ScalenusPosteriorT1C5Node_pos);};
364
    
365
    //Semispinalis capitis nodes
366
    AnyRefNode SemispinalisCapitisC5C0NodeR = {sRel = .Scale(.StdPar.Right.SemispinalisCapitisC5C0Node_pos);};
367
    AnyRefNode SemispinalisCapitisC5C0NodeL = {sRel = .Scale(.StdPar.Left.SemispinalisCapitisC5C0Node_pos);};
368
    
369
    //Semispinalis cervicis nodes
370
    AnyRefNode SemispinalisCervicisT4C5NodeR = {sRel = .Scale(.StdPar.Right.SemispinalisCervicisT4C5Node_pos);};
371
    AnyRefNode SemispinalisCervicisT4C5NodeL = {sRel = .Scale(.StdPar.Left.SemispinalisCervicisT4C5Node_pos);};
372
    
373
    //Longissimus capitis nodes
374
    AnyRefNode LongissimusCapitisC5C0NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCapitisC5C0Node_pos);};
375
    AnyRefNode LongissimusCapitisC5C0NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCapitisC5C0Node_pos);};
376
    
377
    //Longissimus cervicis nodes
378
    AnyRefNode LongissimusCervicisT2C5NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCervicisT2C5Node_pos);};
379
    AnyRefNode LongissimusCervicisT2C5NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCervicisT2C5Node_pos);};
380
    
381
    //Multifidus cervicis nodes
382
    AnyRefNode MultifidusCervicisC5C2NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC5C2Node_pos);};
383
    AnyRefNode MultifidusCervicisC5C2NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC5C2Node_pos);};
384
    
385
    AnyRefNode MultifidusCervicisC5NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC5Node_pos);};
386
    AnyRefNode MultifidusCervicisC5NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC5Node_pos);};
387
    
388
    AnyDrawSurf DrwSTL = {
389
      FileName = ...STL.FilenameC5Seg;
390
      RGB = ...ColorRef.Segments;
391
      Opacity = Main.DrawSettings.BonesOpacity.C5;
392
      AnyFunTransform3D &Scale =.Scale;
393
    };
394
    AnyRefNode Right ={};
395
    AnyRefNode Left ={};
396
  };
397
  
398
  AnySeg C6Seg = {
399
400
    AnyFolder &StdPar = ..ModelParameters.C6;    
401
402
    r0= .C7Seg.C7C6JntNode.sRel*.C7Seg.Axes0'+.C7Seg.r0-C7C6JntNode.sRel*Axes0';
403
404
    AnyVar MassS = ..Scaling.MassScaling.Cervical.MassScale;    
405
    AnyVar MassStandard = ..StandardParameters.CervicalSpine.Mass*0.147;
406
    
407
    Mass = MassS*MassStandard;           
408
409
    // This file includes the trunk specifc scaling function
410
    // and anatomical reference system
411
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.C6Seg.ScaleFunction;
412
    #include "TrunkScalingAndAnatomicalFrame.any"
413
        
414
    Jii = StdPar.Jii;    
415
    sCoM = Scale(StdPar.sCoM_pos);
416
    
417
    JaboutCoMOnOff = On;
418
    
419
    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
420
    
421
    AnyRefNode C7C6JntNode = {sRel = .Scale(.StdPar.C7C6JntNode_pos);};        
422
    AnyRefNode C6C5JntNode = {
423
      sRel = .Scale(.StdPar.C6C5JntNode_pos);
424
      AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1, 0, 0};};
425
      // Rotated node with x axis parallel to the superior endplate surface
426
      AnyRefNode RotNode = {
427
        ARel = RotMat(0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel),
428
                      ..SuperiorEndplateAnteriorNode.sRel,
429
                      0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel) + (..UncinateProcessNodeL.sRel - ..UncinateProcessNodeR.sRel))*RotMat(pi/2,x);
430
      };
431
    };        
432
    
433
    // Nodes at the anterior and posterior points on the superior endplate
434
    AnyRefNode SuperiorEndplateAnteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplateAnteriorNode_pos);};
435
    AnyRefNode SuperiorEndplatePosteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplatePosteriorNode_pos);};
436
    
437
    // Nodes at the right and left points on the superior endplate
438
    AnyRefNode UncinateProcessNodeR = {sRel = .Scale(.StdPar.Right.UncinateProcessNode_pos);};
439
    AnyRefNode UncinateProcessNodeL = {sRel = .Scale(.StdPar.Left.UncinateProcessNode_pos);};
440
441
    //Longus colli nodes
442
    AnyRefNode LongusColliT1C6NodeR = {sRel = .Scale(.StdPar.Right.LongusColliT1C6Node_pos);};
443
    AnyRefNode LongusColliT1C6NodeL = {sRel = .Scale(.StdPar.Left.LongusColliT1C6Node_pos);};
444
    
445
    //Longus cappitis nodes
446
    AnyRefNode LongusCapitisC6C0NodeR = {sRel = .Scale(.StdPar.Right.LongusCapitisC6C0Node_pos);};
447
    AnyRefNode LongusCapitisC6C0NodeL = {sRel = .Scale(.StdPar.Left.LongusCapitisC6C0Node_pos);};
448
    
449
    //Semispinalis capitis nodes
450
    AnyRefNode SemispinalisCapitisC6C0NodeR = {sRel = .Scale(.StdPar.Right.SemispinalisCapitisC6C0Node_pos);};
451
    AnyRefNode SemispinalisCapitisC6C0NodeL = {sRel = .Scale(.StdPar.Left.SemispinalisCapitisC6C0Node_pos);};
452
    
453
    //Semispinalis cervicis nodes
454
    AnyRefNode SemispinalisCervicisT5C6NodeR = {sRel = .Scale(.StdPar.Right.SemispinalisCervicisT5C6Node_pos);};
455
    AnyRefNode SemispinalisCervicisT5C6NodeL = {sRel = .Scale(.StdPar.Left.SemispinalisCervicisT5C6Node_pos);};
456
    
457
    //Longissimus capitis nodes
458
    AnyRefNode LongissimusCapitisC6C0NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCapitisC6C0Node_pos);};
459
    AnyRefNode LongissimusCapitisC6C0NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCapitisC6C0Node_pos);};
460
    
461
    //Longissimus cervicis nodes
462
    AnyRefNode LongissimusCervicisT2C6NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCervicisT2C6Node_pos);};
463
    AnyRefNode LongissimusCervicisT2C6NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCervicisT2C6Node_pos);};
464
    
465
    //Multifidus cervicis nodes
466
    AnyRefNode MultifidusCervicisC6C2NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC6C2Node_pos);};
467
    AnyRefNode MultifidusCervicisC6C2NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC6C2Node_pos);};
468
    
469
    AnyRefNode MultifidusCervicisC6C3NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC6C3Node_pos);};
470
    AnyRefNode MultifidusCervicisC6C3NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC6C3Node_pos);};
471
    
472
    AnyRefNode MultifidusCervicisC6NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC6Node_pos);};
473
    AnyRefNode MultifidusCervicisC6NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC6Node_pos);};
474
    
475
    AnyDrawSurf DrwSTL = {
476
      FileName = ...STL.FilenameC6Seg;
477
      RGB = ...ColorRef.Segments;
478
      Opacity = Main.DrawSettings.BonesOpacity.C6;
479
      AnyFunTransform3D &Scale =.Scale;
480
    };
481
    AnyRefNode Right ={};
482
    AnyRefNode Left ={};
483
  };
484
  
485
  AnySeg C7Seg = {
486
487
    AnyFolder &StdPar = ..ModelParameters.C7;    
488
   
489
    r0= ..SegmentsThorax.T1Seg.T1C7JntNode.sRel*..SegmentsThorax.T1Seg.Axes0'+..SegmentsThorax.T1Seg.r0-T1C7JntNode.sRel*Axes0';
490
    
491
    AnyVar MassS = ..Scaling.MassScaling.Cervical.MassScale;    
492
    AnyVar MassStandard = ..StandardParameters.CervicalSpine.Mass*0.135;
493
    
494
    Mass = MassS*MassStandard;           
495
    
496
    // This file includes the trunk specifc scaling function
497
    // and anatomical reference system
498
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.C7Seg.ScaleFunction;
499
    #include "TrunkScalingAndAnatomicalFrame.any"
500
    
501
    Jii = StdPar.Jii;    
502
    sCoM = Scale(StdPar.sCoM_pos);
503
    
504
    JaboutCoMOnOff = On;
505
    
506
    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
507
    
508
    AnyRefNode T1C7JntNode = {sRel = .Scale(.StdPar.T1C7JntNode_pos);};        
509
    AnyRefNode C7C6JntNode = {
510
      sRel = .Scale(.StdPar.C7C6JntNode_pos);
511
      AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1, 0, 0};};
512
      // Rotated node with x axis parallel to the superior endplate surface
513
      AnyRefNode RotNode = {
514
        ARel = RotMat(0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel),
515
                      ..SuperiorEndplateAnteriorNode.sRel,
516
                      0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel) + (..SuperiorEndplateNodeL.sRel - ..SuperiorEndplateNodeR.sRel))*RotMat(pi/2,x);
517
      };
518
    };        
519
520
    // Nodes at the anterior and posterior points on the superior endplate
521
    AnyRefNode SuperiorEndplateAnteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplateAnteriorNode_pos);};
522
    AnyRefNode SuperiorEndplatePosteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplatePosteriorNode_pos);};
523
    
524
    // Nodes at the right and left points on the superior endplate
525
    AnyRefNode SuperiorEndplateNodeR = {sRel = .Scale(.StdPar.Right.SuperiorEndplateNode_pos);};
526
    AnyRefNode SuperiorEndplateNodeL = {sRel = .Scale(.StdPar.Left.SuperiorEndplateNode_pos);};
527
528
    //Splenius capitis nodes
529
    AnyRefNode SpleniusCapitisC7C0NodeR = {sRel = .Scale(.StdPar.Right.SpleniusCapitisC7C0Node_pos);};
530
    AnyRefNode SpleniusCapitisC7C0NodeL = {sRel = .Scale(.StdPar.Left.SpleniusCapitisC7C0Node_pos);};
531
    
532
    //Semispinalis capitis nodes
533
    AnyRefNode SemispinalisCapitisC7C0NodeR = {sRel = .Scale(.StdPar.Right.SemispinalisCapitisC7C0Node_pos);};
534
    AnyRefNode SemispinalisCapitisC7C0NodeL = {sRel = .Scale(.StdPar.Left.SemispinalisCapitisC7C0Node_pos);};
535
    
536
    //Semispinalis cervicis nodes
537
    AnyRefNode SemispinalisCervicisT6C7NodeR = {sRel = .Scale(.StdPar.Right.SemispinalisCervicisT6C7Node_pos);};
538
    AnyRefNode SemispinalisCervicisT6C7NodeL = {sRel = .Scale(.StdPar.Left.SemispinalisCervicisT6C7Node_pos);};
539
    
540
    //Longissimus capitis nodes
541
    AnyRefNode LongissimusCapitisC7C0NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCapitisC7C0Node_pos);};
542
    AnyRefNode LongissimusCapitisC7C0NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCapitisC7C0Node_pos);};
543
    
544
    //Longissimus cervicis nodes
545
    AnyRefNode LongissimusCervicisT2C7NodeR = {sRel = .Scale(.StdPar.Right.LongissimusCervicisT2C7Node_pos);};
546
    AnyRefNode LongissimusCervicisT2C7NodeL = {sRel = .Scale(.StdPar.Left.LongissimusCervicisT2C7Node_pos);};
547
    
548
    //Multifidus cervicis nodes
549
    AnyRefNode MultifidusCervicisC7C3NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC7C3Node_pos);};
550
    AnyRefNode MultifidusCervicisC7C3NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC7C3Node_pos);};
551
                                                                  
552
    AnyRefNode MultifidusCervicisC7C4NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC7C4Node_pos);};
553
    AnyRefNode MultifidusCervicisC7C4NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC7C4Node_pos);};
554
    
555
    AnyRefNode MultifidusCervicisC7NodeR = {sRel = .Scale(.StdPar.Right.MultifidusCervicisC7Node_pos);};
556
    AnyRefNode MultifidusCervicisC7NodeL = {sRel = .Scale(.StdPar.Left.MultifidusCervicisC7Node_pos);};
557
    
558
    AnyDrawSurf DrwSTL = {
559
      FileName = ...STL.FilenameC7Seg;
560
      RGB = ...ColorRef.Segments;
561
      Opacity = Main.DrawSettings.BonesOpacity.C7;
562
      AnyFunTransform3D &Scale =.Scale;
563
    };
564
    AnyRefNode Right ={};
565
    AnyRefNode Left ={};
566
  };
567
};