Ticket #1275: planarRotationTotal.mo

File planarRotationTotal.mo, 37.0 KB (added by dhedberg, 14 years ago)

Run the mos file and check the results. OpenModelica produces the following for me:

true
instantiateDaeFunction failed for Math.sin in scope: Modelica.Mechanics.MultiBody.Frames.Quaternions.planarRotation
instantiateDaeFunction failed for Math.sin in scope: Modelica.Mechanics.MultiBody.Frames.Quaternions.planarRotation
"Error: No matching function found for Math.sin(angle / 2.0) of type function(x:Real) => Real in component <NO COMPONENT>, candidates are function(x:Real) => Real
Error: Class Math.sin not found in scope Modelica.Mechanics.MultiBody.Frames.Quaternions.planarRotation.
Error: Wrong type or wrong number of arguments to vector([e * Math.sin(angle / 2);Math.cos(angle / 2)])'.
 (in component <NO COMPONENT>)
Error: No matching function found for Math.sin(angle / 2.0) of type function(x:Real) => Real in component <NO COMPONENT>, candidates are function(x:Real) => Real
Error: Class Math.sin not found in scope Modelica.Mechanics.MultiBody.Frames.Quaternions.planarRotation.
Error: Wrong type or wrong number of arguments to vector([e * Math.sin(angle / 2);Math.cos(angle / 2)])'.
 (in component <NO COMPONENT>)
"
""

So it does not seem to work as suggested, hence reopening this ticket.

Line 
1package Modelica "Modelica Standard Library (Version 3.1)"
2 extends Modelica.Icons.Library;
3 annotation(preferredView="info", version="3.1", versionBuild=5, versionDate="2009-08-14", dateModified="2009-12-18 08:49:49Z", revisionId="$Id:: package.mo 3222 2009-12-18 08:53:50Z #$", conversion(noneFromVersion="3.0.1", noneFromVersion="3.0", from(version="2.1", script="Scripts/ConvertModelica_from_2.2.2_to_3.0.mos"), from(version="2.2", script="Scripts/ConvertModelica_from_2.2.2_to_3.0.mos"), from(version="2.2.1", script="Scripts/ConvertModelica_from_2.2.2_to_3.0.mos"), from(version="2.2.2", script="Scripts/ConvertModelica_from_2.2.2_to_3.0.mos")), __Dymola_classOrder={"UsersGuide","Blocks","StateGraph","Electrical","Magnetic","Mechanics","Fluid","Media","Thermal","Math","Utilities","Constants","Icons","SIunits"}, Settings(NewStateSelection=true), Documentation(info="<HTML>
4<p>
5Package <b>Modelica</b> is a <b>standardized</b> and <b>free</b> package
6that is developed together with the Modelica language from the
7Modelica Association, see
8<a href=\"http://www.Modelica.org\">http://www.Modelica.org</a>.
9It is also called <b>Modelica Standard Library</b>.
10It provides model components in many domains that are based on
11standardized interface definitions. Some typical examples are shown
12in the next figure:
13</p>
14
15<p>
16<img src=\"Images/UsersGuide/ModelicaLibraries.png\">
17</p>
18
19<p>
20For an introduction, have especially a look at:
21</p>
22<ul>
23<li> <a href=\"Modelica://Modelica.UsersGuide.Overview\">Overview</a>
24 provides an overview of the Modelica Standard Library
25 inside the <a href=\"Modelica://Modelica.UsersGuide\">User's Guide</a>.</li>
26<li><a href=\"Modelica://Modelica.UsersGuide.ReleaseNotes\">Release Notes</a>
27 summarizes the changes of new versions of this package.</li>
28<li> <a href=\"Modelica://Modelica.UsersGuide.Contact\">Contact</a>
29 lists the contributors of the Modelica Standard Library.</li>
30<li> The <b>Examples</b> packages in the various libraries, demonstrate
31 how to use the components of the corresponding sublibrary.</li>
32</ul>
33
34<p>
35This version of the Modelica Standard Library consists of
36</p>
37<ul>
38<li> <b>922</b> models and blocks, and</li>
39<li> <b>615</b> functions
40</ul>
41<p>
42that are directly usable (= number of public, non-partial classes).
43</p>
44
45
46<p>
47<b>Licensed by the Modelica Association under the Modelica License 2</b><br>
48Copyright &copy; 1998-2009, ABB, arsenal research, T.&nbsp;Bödrich, DLR, Dynasim, Fraunhofer, Modelon,
49TU Hamburg-Harburg, Politecnico di Milano.
50</p>
51
52<p>
53<i>This Modelica package is <u>free</u> software and
54the use is completely at <u>your own risk</u>;
55it can be redistributed and/or modified under the terms of the
56Modelica license 2, see the license conditions (including the
57disclaimer of warranty)
58<a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense2\">here</a></u>
59or at
60<a href=\"http://www.Modelica.org/licenses/ModelicaLicense2\">
61http://www.Modelica.org/licenses/ModelicaLicense2</a>.
62</p>
63
64</HTML>
65"));
66 package Mechanics "Library of 1-dim. and 3-dim. mechanical components (multi-body, rotational, translational)"
67 extends Modelica.Icons.Library2;
68 annotation(Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), graphics={Rectangle(extent={{-5,-40},{45,-70}}, lineColor={0,0,0}, fillPattern=FillPattern.HorizontalCylinder, fillColor={192,192,192}),Ellipse(extent={{-90,-50},{-80,-60}}, lineColor={0,0,0}),Line(points={{-85,-55},{-60,-21}}, color={0,0,0}, thickness=0.5),Ellipse(extent={{-65,-16},{-55,-26}}, lineColor={0,0,0}),Line(points={{-60,-21},{9,-55}}, color={0,0,0}, thickness=0.5),Ellipse(extent={{4,-50},{14,-60}}, lineColor={0,0,0}, fillColor={0,0,0}, fillPattern=FillPattern.Solid),Line(points={{-10,-34},{72,-34},{72,-76},{-10,-76}}, color={0,0,0})}), Documentation(info="<HTML>
69<p>
70This package contains components to model the movement
71of 1-dim. rotational, 1-dim. translational, and
723-dim. <b>mechanical systems</b>.
73</p>
74</HTML>
75"));
76 package MultiBody "Library to model 3-dimensional mechanical systems"
77 import SI = Modelica.SIunits;
78 extends Modelica.Icons.Library;
79 annotation(Documentation(info="<HTML>
80<p>
81Library <b>MultiBody</b> is a <b>free</b> Modelica package providing
823-dimensional mechanical components to model in a convenient way
83<b>mechanical systems</b>, such as robots, mechanisms, vehicles.
84Typical animations generated with this library are shown
85in the next figure:
86</p>
87<p>
88<img src=\"../../Images/MultiBody/MultiBody.png\">
89</p>
90<p>
91For an introduction, have especially a look at:
92</p>
93<ul>
94<li> <a href=\"Modelica://Modelica.Mechanics.MultiBody.UsersGuide\">MultiBody.UsersGuide</a>
95 discusses the most important aspects how to use this library.</li>
96<li> <a href=\"Modelica://Modelica.Mechanics.MultiBody.Examples\">MultiBody.Examples</a>
97 contains examples that demonstrate the usage of this library.</li>
98</ul>
99
100<p>
101Copyright &copy; 1998-2009, Modelica Association and DLR.
102</p>
103<p>
104<i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified
105under the terms of the <b>Modelica license</b>, see the license conditions
106and the accompanying <b>disclaimer</b>
107<a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense2\">here</a>.</i>
108</p><br>
109</HTML>"));
110 package Frames "Functions to transform rotational frame quantities"
111 extends Modelica.Icons.Library;
112 package Quaternions "Functions to transform rotational frame quantities based on quaternions (also called Euler parameters)"
113 extends Modelica.Icons.Library;
114 type Orientation "Orientation type defining rotation from a frame 1 into a frame 2 with quaternions {p1,p2,p3,p0}"
115 extends Internal.QuaternionBase;
116 encapsulated function equalityConstraint "Return the constraint residues to express that two frames have the same quaternion orientation"
117 import Modelica;
118 import Modelica.Mechanics.MultiBody.Frames.Quaternions;
119 extends Modelica.Icons.Function;
120 input Quaternions.Orientation Q1 "Quaternions orientation object to rotate frame 0 into frame 1";
121 input Quaternions.Orientation Q2 "Quaternions orientation object to rotate frame 0 into frame 2";
122 output Real residue[3] "The half of the rotation angles around x-, y-, and z-axis of frame 1 to rotate frame 1 into frame 2 for a small rotation (shall be zero)";
123 annotation(Inline=true);
124 algorithm
125 residue:=[Q1[4],Q1[3],-Q1[2],-Q1[1];-Q1[3],Q1[4],Q1[1],-Q1[2];Q1[2],-Q1[1],Q1[4],-Q1[3]]*Q2;
126 end equalityConstraint;
127
128 annotation(Documentation(info="<html>
129<p>
130This type describes the <b>rotation</b> to rotate a frame 1 into
131a frame 2 using quaternions (also called <b>Euler parameters</b>)
132according to the following definition:
133</p>
134<pre>
135 Quaternions.Orientation Q;
136 Real n[3];
137 Real phi(unit=\"rad\");
138 Q = [ n*sin(phi/2)
139 cos(phi/2) ]
140</pre>
141<p>
142where \"n\" is the <b>axis of rotation</b> to rotate frame 1 into
143frame 2 and \"phi\" is the <b>rotation angle</b> for this rotation.
144Vector \"n\" is either resolved in frame 1 or in frame 2
145(the result is the same since the coordinates of \"n\" with respect to
146frame 1 are identical to its coordinates with respect to frame 2).
147<p>
148<p>
149The term \"quaternions\" is prefered over the historically
150more reasonable \"Euler parameters\" in order to not get
151confused with Modelica \"parameters\".
152</p>
153</html>
154"));
155 end Orientation;
156
157 function planarRotation "Return quaternions orientation object of a planar rotation"
158 import Modelica.Math;
159 extends Modelica.Icons.Function;
160 input Real e[3](each final unit="1") "Normalized axis of rotation (must have length=1)";
161 input Modelica.SIunits.Angle angle "Rotation angle to rotate frame 1 into frame 2 along axis e";
162 output Quaternions.Orientation Q "Quaternions orientation object to rotate frame 1 into frame 2 along axis e";
163 annotation(Inline=true);
164 algorithm
165 Q:=vector([e*Math.sin(angle/2);Math.cos(angle/2)]);
166 end planarRotation;
167
168 annotation(Documentation(info="<HTML>
169<p>
170Package <b>Frames.Quaternions</b> contains type definitions and
171functions to transform rotational frame quantities with quaternions.
172Functions of this package are currently only utilized in
173MultiBody.Parts.Body components, when quaternions shall be used
174as parts of the body states.
175Some functions are also used in a new Modelica package for
176B-Spline interpolation that is able to interpolate paths consisting of
177position vectors and orientation objects.
178</p>
179<h4>Content</h4>
180<p>In the table below an example is given for every function definition.
181The used variables have the following declaration:
182</p>
183<pre>
184 Quaternions.Orientation Q, Q1, Q2, Q_rel, Q_inv;
185 Real[3,3] T, T_inv;
186 Real[3] v1, v2, w1, w2, n_x, n_y, n_z, res_ori, phi;
187 Real[6] res_equal;
188 Real L, angle;
189</pre>
190<table border=1 cellspacing=0 cellpadding=2>
191 <tr><th><b><i>Function/type</i></b></th><th><b><i>Description</i></b></th></tr>
192 <tr><td valign=\"top\"><b>Orientation Q;</b></td>
193 <td valign=\"top\">New type defining a quaternion object that describes<br>
194 the rotation of frame 1 into frame 2.
195 </td>
196 </tr>
197 <tr><td valign=\"top\"><b>der_Orientation</b> der_Q;</td>
198 <td valign=\"top\">New type defining the first time derivative
199 of Frames.Quaternions.Orientation.
200 </td>
201 </tr>
202 <tr><td valign=\"top\">res_ori = <b>orientationConstraint</b>(Q);</td>
203 <td valign=\"top\">Return the constraints between the variables of a quaternion object<br>
204 (shall be zero).</td>
205 </tr>
206 <tr><td valign=\"top\">w1 = <b>angularVelocity1</b>(Q, der_Q);</td>
207 <td valign=\"top\">Return angular velocity resolved in frame 1 from
208 quaternion object Q<br> and its derivative der_Q.
209 </td>
210 </tr>
211 <tr><td valign=\"top\">w2 = <b>angularVelocity2</b>(Q, der_Q);</td>
212 <td valign=\"top\">Return angular velocity resolved in frame 2 from
213 quaternion object Q<br> and its derivative der_Q.
214 </td>
215 </tr>
216 <tr><td valign=\"top\">v1 = <b>resolve1</b>(Q,v2);</td>
217 <td valign=\"top\">Transform vector v2 from frame 2 to frame 1.
218 </td>
219 </tr>
220 <tr><td valign=\"top\">v2 = <b>resolve2</b>(Q,v1);</td>
221 <td valign=\"top\">Transform vector v1 from frame 1 to frame 2.
222 </td>
223 </tr>
224 <tr><td valign=\"top\">[v1,w1] = <b>multipleResolve1</b>(Q, [v2,w2]);</td>
225 <td valign=\"top\">Transform several vectors from frame 2 to frame 1.
226 </td>
227 </tr>
228 <tr><td valign=\"top\">[v2,w2] = <b>multipleResolve2</b>(Q, [v1,w1]);</td>
229 <td valign=\"top\">Transform several vectors from frame 1 to frame 2.
230 </td>
231 </tr>
232 <tr><td valign=\"top\">Q = <b>nullRotation</b>()</td>
233 <td valign=\"top\">Return quaternion object R that does not rotate a frame.
234 </tr>
235 <tr><td valign=\"top\">Q_inv = <b>inverseRotation</b>(Q);</td>
236 <td valign=\"top\">Return inverse quaternion object.
237 </td>
238 </tr>
239 <tr><td valign=\"top\">Q_rel = <b>relativeRotation</b>(Q1,Q2);</td>
240 <td valign=\"top\">Return relative quaternion object from two absolute
241 quaternion objects.
242 </td>
243 </tr>
244 <tr><td valign=\"top\">Q2 = <b>absoluteRotation</b>(Q1,Q_rel);</td>
245 <td valign=\"top\">Return absolute quaternion object from another
246 absolute<br> and a relative quaternion object.
247 </td>
248 </tr>
249 <tr><td valign=\"top\">Q = <b>planarRotation</b>(e, angle);</td>
250 <td valign=\"top\">Return quaternion object of a planar rotation.
251 </td>
252 </tr>
253 <tr><td valign=\"top\">phi = <b>smallRotation</b>(Q);</td>
254 <td valign=\"top\">Return rotation angles phi valid for a small rotation.
255 </td>
256 </tr>
257 <tr><td valign=\"top\">Q = <b>from_T</b>(T);</td>
258 <td valign=\"top\">Return quaternion object Q from transformation matrix T.
259 </td>
260 </tr>
261 <tr><td valign=\"top\">Q = <b>from_T_inv</b>(T_inv);</td>
262 <td valign=\"top\">Return quaternion object Q from inverse transformation matrix T_inv.
263 </td>
264 </tr>
265 <tr><td valign=\"top\">T = <b>to_T</b>(Q);</td>
266 <td valign=\"top\">Return transformation matrix T from quaternion object Q.
267 </tr>
268 <tr><td valign=\"top\">T_inv = <b>to_T_inv</b>(Q);</td>
269 <td valign=\"top\">Return inverse transformation matrix T_inv from quaternion object Q.
270 </td>
271 </tr>
272</table>
273</HTML>"));
274 end Quaternions;
275
276 package Internal "Internal definitions that may be removed or changed (do not use)"
277 extends Modelica.Icons.Library;
278 type QuaternionBase= Real[4];
279 end Internal;
280
281 annotation(Documentation(info="<HTML>
282<p>
283Package <b>Frames</b> contains type definitions and
284functions to transform rotational frame quantities. The basic idea is to
285hide the actual definition of an <b>orientation</b> in this package
286by providing essentially type <b>Orientation</b> together with
287<b>functions</b> operating on instances of this type.
288</p>
289<h4>Content</h4>
290<p>In the table below an example is given for every function definition.
291The used variables have the following declaration:
292</p>
293<pre>
294 Frames.Orientation R, R1, R2, R_rel, R_inv;
295 Real[3,3] T, T_inv;
296 Real[3] v1, v2, w1, w2, n_x, n_y, n_z, e, e_x, res_ori, phi;
297 Real[6] res_equal;
298 Real L, angle;
299</pre>
300<table border=1 cellspacing=0 cellpadding=2>
301 <tr><th><b><i>Function/type</i></b></th><th><b><i>Description</i></b></th></tr>
302 <tr><td valign=\"top\"><b>Orientation R;</b></td>
303 <td valign=\"top\">New type defining an orientation object that describes<br>
304 the rotation of frame 1 into frame 2.
305 </td>
306 </tr>
307 <tr><td valign=\"top\">res_ori = <b>orientationConstraint</b>(R);</td>
308 <td valign=\"top\">Return the constraints between the variables of an orientation object<br>
309 (shall be zero).</td>
310 </tr>
311 <tr><td valign=\"top\">w1 = <b>angularVelocity1</b>(R);</td>
312 <td valign=\"top\">Return angular velocity resolved in frame 1 from
313 orientation object R.
314 </td>
315 </tr>
316 <tr><td valign=\"top\">w2 = <b>angularVelocity2</b>(R);</td>
317 <td valign=\"top\">Return angular velocity resolved in frame 2 from
318 orientation object R.
319 </td>
320 </tr>
321 <tr><td valign=\"top\">v1 = <b>resolve1</b>(R,v2);</td>
322 <td valign=\"top\">Transform vector v2 from frame 2 to frame 1.
323 </td>
324 </tr>
325 <tr><td valign=\"top\">v2 = <b>resolve2</b>(R,v1);</td>
326 <td valign=\"top\">Transform vector v1 from frame 1 to frame 2.
327 </td>
328 </tr>
329 <tr><td valign=\"top\">v2 = <b>resolveRelative</b>(v1,R1,R2);</td>
330 <td valign=\"top\">Transform vector v1 from frame 1 to frame 2
331 using absolute orientation objects R1 of frame 1 and R2 of frame 2.
332 </td>
333 </tr>
334 <tr><td valign=\"top\">D1 = <b>resolveDyade1</b>(R,D2);</td>
335 <td valign=\"top\">Transform second order tensor D2 from frame 2 to frame 1.
336 </td>
337 </tr>
338 <tr><td valign=\"top\">D2 = <b>resolveDyade2</b>(R,D1);</td>
339 <td valign=\"top\">Transform second order tensor D1 from frame 1 to frame 2.
340 </td>
341 </tr>
342 <tr><td valign=\"top\">R = <b>nullRotation</b>()</td>
343 <td valign=\"top\">Return orientation object R that does not rotate a frame.
344 </tr>
345 <tr><td valign=\"top\">R_inv = <b>inverseRotation</b>(R);</td>
346 <td valign=\"top\">Return inverse orientation object.
347 </td>
348 </tr>
349 <tr><td valign=\"top\">R_rel = <b>relativeRotation</b>(R1,R2);</td>
350 <td valign=\"top\">Return relative orientation object from two absolute
351 orientation objects.
352 </td>
353 </tr>
354 <tr><td valign=\"top\">R2 = <b>absoluteRotation</b>(R1,R_rel);</td>
355 <td valign=\"top\">Return absolute orientation object from another
356 absolute<br> and a relative orientation object.
357 </td>
358 </tr>
359 <tr><td valign=\"top\">R = <b>planarRotation</b>(e, angle, der_angle);</td>
360 <td valign=\"top\">Return orientation object of a planar rotation.
361 </td>
362 </tr>
363 <tr><td valign=\"top\">angle = <b>planarRotationAngle</b>(e, v1, v2);</td>
364 <td valign=\"top\">Return angle of a planar rotation, given the rotation axis<br>
365 and the representations of a vector in frame 1 and frame 2.
366 </td>
367 </tr>
368 <tr><td valign=\"top\">R = <b>axisRotation</b>(axis, angle, der_angle);</td>
369 <td valign=\"top\">Return orientation object R to rotate around angle along axis of frame 1.
370 </td>
371 </tr>
372 <tr><td valign=\"top\">R = <b>axesRotations</b>(sequence, angles, der_angles);</td>
373 <td valign=\"top\">Return rotation object to rotate in sequence around 3 axes. Example:<br>
374 R = axesRotations({1,2,3},{pi/2,pi/4,-pi}, zeros(3));
375 </td>
376 </tr>
377 <tr><td valign=\"top\">angles = <b>axesRotationsAngles</b>(R, sequence);</td>
378 <td valign=\"top\">Return the 3 angles to rotate in sequence around 3 axes to<br>
379 construct the given orientation object.
380 </td>
381 </tr>
382 <tr><td valign=\"top\">phi = <b>smallRotation</b>(R);</td>
383 <td valign=\"top\">Return rotation angles phi valid for a small rotation R.
384 </td>
385 </tr>
386 <tr><td valign=\"top\">R = <b>from_nxy</b>(n_x, n_y);</td>
387 <td valign=\"top\">Return orientation object from n_x and n_y vectors.
388 </td>
389 </tr>
390 <tr><td valign=\"top\">R = <b>from_nxz</b>(n_x, n_z);</td>
391 <td valign=\"top\">Return orientation object from n_x and n_z vectors.
392 </td>
393 </tr>
394 <tr><td valign=\"top\">R = <b>from_T</b>(T,w);</td>
395 <td valign=\"top\">Return orientation object R from transformation matrix T and
396 its angular velocity w.
397 </td>
398 </tr>
399 <tr><td valign=\"top\">R = <b>from_T2</b>(T,der(T));</td>
400 <td valign=\"top\">Return orientation object R from transformation matrix T and
401 its derivative der(T).
402 </td>
403 </tr>
404 <tr><td valign=\"top\">R = <b>from_T_inv</b>(T_inv,w);</td>
405 <td valign=\"top\">Return orientation object R from inverse transformation matrix T_inv and
406 its angular velocity w.
407 </td>
408 </tr>
409 <tr><td valign=\"top\">R = <b>from_Q</b>(Q,w);</td>
410 <td valign=\"top\">Return orientation object R from quaternion orientation object Q
411 and its angular velocity w.
412 </td>
413 </tr>
414 <tr><td valign=\"top\">T = <b>to_T</b>(R);</td>
415 <td valign=\"top\">Return transformation matrix T from orientation object R.
416 </tr>
417 <tr><td valign=\"top\">T_inv = <b>to_T_inv</b>(R);</td>
418 <td valign=\"top\">Return inverse transformation matrix T_inv from orientation object R.
419 </td>
420 </tr>
421 <tr><td valign=\"top\">Q = <b>to_Q</b>(R);</td>
422 <td valign=\"top\">Return quaternione orientation object Q from orientation object R.
423 </td>
424 </tr>
425 <tr><td valign=\"top\">exy = <b>to_exy</b>(R);</td>
426 <td valign=\"top\">Return [e_x, e_y] matrix of an orientation object R, <br>
427 with e_x and e_y vectors of frame 2, resolved in frame 1.
428 </tr>
429 <tr><td valign=\"top\">L = <b>length</b>(n_x);</td>
430 <td valign=\"top\">Return length L of a vector n_x.
431 </td>
432 </tr>
433 <tr><td valign=\"top\">e_x = <b>normalize</b>(n_x);</td>
434 <td valign=\"top\">Return normalized vector e_x of n_x such that length of e_x is one.
435 </td>
436 </tr>
437 <tr><td valign=\"top\">e = <b>axis</b>(i);</td>
438 <td valign=\"top\">Return unit vector e directed along axis i
439 </td>
440 </tr>
441 <tr><td valign=\"top\"><a href=\"Modelica://Modelica.Mechanics.MultiBody.Frames.Quaternions\">Quaternions</a></td>
442 <td valign=\"top\"><b>Package</b> with functions to transform rotational frame quantities based
443 on quaternions (also called Euler parameters).
444 </td>
445 </tr>
446 <tr><td valign=\"top\"><a href=\"Modelica://Modelica.Mechanics.MultiBody.Frames.TransformationMatrices\">TransformationMatrices</a></td>
447 <td valign=\"top\"><b>Package</b> with functions to transform rotational frame quantities based
448 on transformation matrices.
449 </td>
450 </tr>
451</table>
452</HTML>"));
453 end Frames;
454
455 end MultiBody;
456
457 end Mechanics;
458
459 package Math "Library of mathematical functions (e.g., sin, cos) and of functions operating on vectors and matrices"
460 import SI = Modelica.SIunits;
461 extends Modelica.Icons.Library2;
462 function cos "Cosine"
463 extends baseIcon1;
464 input SI.Angle u;
465 output Real y;
466
467 external "C" y=cos(u) ;
468 annotation(Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}, grid={2,2}), graphics={Line(points={{-90,0},{68,0}}, color={192,192,192}),Polygon(points={{90,0},{68,8},{68,-8},{90,0}}, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid),Line(points={{-80,80},{-74.4,78.1},{-68.7,72.3},{-63.1,63},{-56.7,48.7},{-48.6,26.6},{-29.3,-32.5},{-22.1,-51.7},{-15.7,-65.3},{-10.1,-73.8},{-4.42,-78.8},{1.21,-79.9},{6.83,-77.1},{12.5,-70.6},{18.1,-60.6},{24.5,-45.7},{32.6,-23},{50.3,31.3},{57.5,50.7},{63.9,64.6},{69.5,73.4},{75.2,78.6},{80,80}}, color={0,0,0}),Text(extent={{-36,82},{36,34}}, lineColor={192,192,192}, textString="cos")}), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}, grid={2,2}), graphics={Text(extent={{-103,72},{-83,88}}, textString="1", lineColor={0,0,255}),Text(extent={{-103,-72},{-83,-88}}, textString="-1", lineColor={0,0,255}),Text(extent={{70,25},{90,5}}, textString="2*pi", lineColor={0,0,255}),Line(points={{-100,0},{84,0}}, color={95,95,95}),Polygon(points={{98,0},{82,6},{82,-6},{98,0}}, lineColor={95,95,95}, fillColor={95,95,95}, fillPattern=FillPattern.Solid),Line(points={{-80,80},{-74.4,78.1},{-68.7,72.3},{-63.1,63},{-56.7,48.7},{-48.6,26.6},{-29.3,-32.5},{-22.1,-51.7},{-15.7,-65.3},{-10.1,-73.8},{-4.42,-78.8},{1.21,-79.9},{6.83,-77.1},{12.5,-70.6},{18.1,-60.6},{24.5,-45.7},{32.6,-23},{50.3,31.3},{57.5,50.7},{63.9,64.6},{69.5,73.4},{75.2,78.6},{80,80}}, color={0,0,255}, thickness=0.5),Text(extent={{78,-6},{98,-26}}, lineColor={95,95,95}, textString="u"),Line(points={{-80,-80},{18,-80}}, color={175,175,175}, smooth=Smooth.None)}), Documentation(info="<html>
469<p>
470This function returns y = cos(u), with -&infin; &lt; u &lt; &infin;:
471</p>
472
473<p>
474<img src=\"../Images/Math/cos.png\">
475</p>
476</html>"), Library="ModelicaExternalC");
477 end cos;
478
479 partial function baseIcon1 "Basic icon for mathematical function with y-axis on left side"
480 annotation(Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), graphics={Rectangle(extent={{-100,100},{100,-100}}, lineColor={0,0,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid),Line(points={{-80,-80},{-80,68}}, color={192,192,192}),Polygon(points={{-80,90},{-88,68},{-72,68},{-80,90}}, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid),Text(extent={{-150,150},{150,110}}, textString="%name", lineColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), graphics={Line(points={{-80,80},{-88,80}}, color={95,95,95}),Line(points={{-80,-80},{-88,-80}}, color={95,95,95}),Line(points={{-80,-90},{-80,84}}, color={95,95,95}),Text(extent={{-75,104},{-55,84}}, lineColor={95,95,95}, textString="y"),Polygon(points={{-80,98},{-86,82},{-74,82},{-80,98}}, lineColor={95,95,95}, fillColor={95,95,95}, fillPattern=FillPattern.Solid)}), Documentation(info="<html>
481<p>
482Icon for a mathematical function, consisting of an y-axis on the left side.
483It is expected, that an x-axis is added and a plot of the function.
484</p>
485</html>"));
486 end baseIcon1;
487
488 annotation(Invisible=true, Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), graphics={Text(extent={{-59,-9},{42,-56}}, lineColor={0,0,0}, textString="f(x)")}), Documentation(info="<HTML>
489<p>
490This package contains <b>basic mathematical functions</b> (such as sin(..)),
491as well as functions operating on <b>vectors</b> and <b>matrices</b>.
492</p>
493
494<dl>
495<dt><b>Main Author:</b>
496<dd><a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a><br>
497 Deutsches Zentrum f&uuml;r Luft und Raumfahrt e.V. (DLR)<br>
498 Institut f&uuml;r Robotik und Mechatronik<br>
499 Postfach 1116<br>
500 D-82230 Wessling<br>
501 Germany<br>
502 email: <A HREF=\"mailto:Martin.Otter@dlr.de\">Martin.Otter@dlr.de</A><br>
503</dl>
504
505<p>
506Copyright &copy; 1998-2009, Modelica Association and DLR.
507</p>
508<p>
509<i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified
510under the terms of the <b>Modelica license</b>, see the license conditions
511and the accompanying <b>disclaimer</b>
512<a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense2\">here</a>.</i>
513</p><br>
514</HTML>
515", revisions="<html>
516<ul>
517<li><i>October 21, 2002</i>
518 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
519 and <a href=\"http://www.robotic.dlr.de/Christian.Schweiger/\">Christian Schweiger</a>:<br>
520 Function tempInterpol2 added.</li>
521<li><i>Oct. 24, 1999</i>
522 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
523 Icons for icon and diagram level introduced.</li>
524<li><i>June 30, 1999</i>
525 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
526 Realized.</li>
527</ul>
528
529</html>"));
530 end Math;
531
532 package SIunits "Library of type and unit definitions based on SI units according to ISO 31-1992"
533 extends Modelica.Icons.Library2;
534 type Angle= Real(final quantity="Angle", final unit="rad", displayUnit="deg");
535 annotation(Invisible=true, Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), graphics={Text(extent={{-63,-13},{45,-67}}, lineColor={0,0,0}, textString="[kg.m2]")}), Documentation(info="<html>
536<p>This package provides predefined types, such as <i>Mass</i>,
537<i>Angle</i>, <i>Time</i>, based on the international standard
538on units, e.g.,
539</p>
540
541<pre> <b>type</b> Angle = Real(<b>final</b> quantity = \"Angle\",
542 <b>final</b> unit = \"rad\",
543 displayUnit = \"deg\");
544</pre>
545
546<p>
547as well as conversion functions from non SI-units to SI-units
548and vice versa in subpackage
549<a href=\"Modelica://Modelica.SIunits.Conversions\">Conversions</a>.
550</p>
551
552<p>
553For an introduction how units are used in the Modelica standard library
554with package SIunits, have a look at:
555<a href=\"Modelica://Modelica.SIunits.UsersGuide.HowToUseSIunits\">How to use SIunits</a>.
556</p>
557
558<p>
559Copyright &copy; 1998-2009, Modelica Association and DLR.
560</p>
561<p>
562<i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified
563under the terms of the <b>Modelica license</b>, see the license conditions
564and the accompanying <b>disclaimer</b>
565<a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense2\">here</a>.</i>
566</p>
567
568</html>", revisions="<html>
569<ul>
570<li><i>Dec. 14, 2005</i>
571 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
572 Add User's Guide and removed \"min\" values for Resistance and Conductance.</li>
573<li><i>October 21, 2002</i>
574 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
575 and <a href=\"http://www.robotic.dlr.de/Christian.Schweiger/\">Christian Schweiger</a>:<br>
576 Added new package <b>Conversions</b>. Corrected typo <i>Wavelenght</i>.</li>
577<li><i>June 6, 2000</i>
578 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
579 Introduced the following new types<br>
580 type Temperature = ThermodynamicTemperature;<br>
581 types DerDensityByEnthalpy, DerDensityByPressure,
582 DerDensityByTemperature, DerEnthalpyByPressure,
583 DerEnergyByDensity, DerEnergyByPressure<br>
584 Attribute \"final\" removed from min and max values
585 in order that these values can still be changed to narrow
586 the allowed range of values.<br>
587 Quantity=\"Stress\" removed from type \"Stress\", in order
588 that a type \"Stress\" can be connected to a type \"Pressure\".</li>
589<li><i>Oct. 27, 1999</i>
590 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
591 New types due to electrical library: Transconductance, InversePotential,
592 Damping.</li>
593<li><i>Sept. 18, 1999</i>
594 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
595 Renamed from SIunit to SIunits. Subpackages expanded, i.e., the
596 SIunits package, does no longer contain subpackages.</li>
597<li><i>Aug 12, 1999</i>
598 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
599 Type \"Pressure\" renamed to \"AbsolutePressure\" and introduced a new
600 type \"Pressure\" which does not contain a minimum of zero in order
601 to allow convenient handling of relative pressure. Redefined
602 BulkModulus as an alias to AbsolutePressure instead of Stress, since
603 needed in hydraulics.</li>
604<li><i>June 29, 1999</i>
605 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
606 Bug-fix: Double definition of \"Compressibility\" removed
607 and appropriate \"extends Heat\" clause introduced in
608 package SolidStatePhysics to incorporate ThermodynamicTemperature.</li>
609<li><i>April 8, 1998</i>
610 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
611 and Astrid Jaschinski:<br>
612 Complete ISO 31 chapters realized.</li>
613<li><i>Nov. 15, 1997</i>
614 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
615 and <a href=\"http://www.control.lth.se/~hubertus/\">Hubertus Tummescheit</a>:<br>
616 Some chapters realized.</li>
617</ul>
618</html>"), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), graphics={Rectangle(extent={{169,86},{349,236}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Polygon(points={{169,236},{189,256},{369,256},{349,236},{169,236}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Polygon(points={{369,256},{369,106},{349,86},{349,236},{369,256}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Text(extent={{179,226},{339,196}}, lineColor={160,160,164}, textString="Library"),Text(extent={{206,173},{314,119}}, lineColor={0,0,0}, textString="[kg.m2]"),Text(extent={{163,320},{406,264}}, lineColor={255,0,0}, textString="Modelica.SIunits")}));
619 end SIunits;
620
621 package Icons "Library of icons"
622 partial package Library "Icon for library"
623 annotation(Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}, grid={1,1}), graphics={Rectangle(extent={{-100,-100},{80,50}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Polygon(points={{-100,50},{-80,70},{100,70},{80,50},{-100,50}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Polygon(points={{100,70},{100,-80},{80,-100},{80,50},{100,70}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Text(extent={{-85,35},{65,-85}}, lineColor={0,0,255}, textString="Library"),Text(extent={{-120,122},{120,73}}, lineColor={255,0,0}, textString="%name")}), Documentation(info="<html>
624<p>
625This icon is designed for a <b>library</b>.
626</p>
627</html>"));
628 end Library;
629
630 partial package Library2 "Icon for library where additional icon elements shall be added"
631 annotation(Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}, grid={1,1}), graphics={Rectangle(extent={{-100,-100},{80,50}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Polygon(points={{-100,50},{-80,70},{100,70},{80,50},{-100,50}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Polygon(points={{100,70},{100,-80},{80,-100},{80,50},{100,70}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Text(extent={{-120,125},{120,70}}, lineColor={255,0,0}, textString="%name"),Text(extent={{-90,40},{70,10}}, lineColor={160,160,164}, textString="Library")}), Documentation(info="<html>
632<p>
633This icon is designed for a <b>package</b> where a package
634specific graphic is additionally included in the icon.
635</p>
636</html>"));
637 end Library2;
638
639 partial function Function "Icon for a function"
640 annotation(Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), graphics={Text(extent={{-140,162},{136,102}}, textString="%name", lineColor={0,0,255}),Ellipse(extent={{-100,100},{100,-100}}, lineColor={255,127,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid),Text(extent={{-100,100},{100,-100}}, lineColor={255,127,0}, textString="f")}), Documentation(info="<html>
641<p>
642This icon is designed for a <b>function</b>
643</p>
644</html>"));
645 end Function;
646
647 annotation(Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), graphics={Rectangle(extent={{-100,-100},{80,50}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Polygon(points={{-100,50},{-80,70},{100,70},{80,50},{-100,50}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Polygon(points={{100,70},{100,-80},{80,-100},{80,50},{100,70}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Text(extent={{-120,135},{120,70}}, lineColor={255,0,0}, textString="%name"),Text(extent={{-90,40},{70,10}}, lineColor={160,160,164}, textString="Library"),Rectangle(extent={{-100,-100},{80,50}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Polygon(points={{-100,50},{-80,70},{100,70},{80,50},{-100,50}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Polygon(points={{100,70},{100,-80},{80,-100},{80,50},{100,70}}, fillColor={235,235,235}, fillPattern=FillPattern.Solid, lineColor={0,0,255}),Text(extent={{-90,40},{70,10}}, lineColor={160,160,164}, textString="Library"),Polygon(points={{-64,-20},{-50,-4},{50,-4},{36,-20},{-64,-20},{-64,-20}}, lineColor={0,0,0}, fillColor={192,192,192}, fillPattern=FillPattern.Solid),Rectangle(extent={{-64,-20},{36,-84}}, lineColor={0,0,0}, fillColor={192,192,192}, fillPattern=FillPattern.Solid),Text(extent={{-60,-24},{32,-38}}, lineColor={128,128,128}, textString="Library"),Polygon(points={{50,-4},{50,-70},{36,-84},{36,-20},{50,-4}}, lineColor={0,0,0}, fillColor={192,192,192}, fillPattern=FillPattern.Solid)}), Documentation(info="<html>
648<p>
649This package contains definitions for the graphical layout of
650components which may be used in different libraries.
651The icons can be utilized by inheriting them in the desired class
652using \"extends\" or by directly copying the \"icon\" layer.
653</p>
654
655<dl>
656<dt><b>Main Author:</b>
657<dd><a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a><br>
658 Deutsches Zentrum fuer Luft und Raumfahrt e.V. (DLR)<br>
659 Oberpfaffenhofen<br>
660 Postfach 1116<br>
661 D-82230 Wessling<br>
662 email: <A HREF=\"mailto:Martin.Otter@dlr.de\">Martin.Otter@dlr.de</A><br>
663</dl>
664
665<p>
666Copyright &copy; 1998-2009, Modelica Association and DLR.
667</p>
668<p>
669<i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified
670under the terms of the <b>Modelica license</b>, see the license conditions
671and the accompanying <b>disclaimer</b>
672<a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense2\">here</a>.</i>
673</p><br>
674</HTML>
675", revisions="<html>
676<ul>
677<li><i>October 21, 2002</i>
678 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
679 and <a href=\"http://www.robotic.dlr.de/Christian.Schweiger/\">Christian Schweiger</a>:<br>
680 Added new icons <b>Function</b>, <b>Enumerations</b> and <b>Record</b>.</li>
681<li><i>June 6, 2000</i>
682 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
683 Replaced <b>model</b> keyword by <b>package</b> if the main
684 usage is for inheriting from a package.<br>
685 New icons <b>GearIcon</b> and <b>MotorIcon</b>.</li>
686<li><i>Sept. 18, 1999</i>
687 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
688 Renaming package Icon to Icons.
689 Model Advanced removed (icon not accepted on the Modelica meeting).
690 New model Library2, which is the Library icon with enough place
691 to add library specific elements in the icon. Icon also used in diagram
692 level for models Info, TranslationalSensor, RotationalSensor.</li>
693<li><i>July 15, 1999</i>
694 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
695 Model Caution renamed to Advanced, model Sensor renamed to
696 TranslationalSensor, new model RotationalSensor.</li>
697<li><i>June 30, 1999</i>
698 by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
699 Realized a first version.</li>
700</ul>
701<br>
702</html>"));
703 end Icons;
704
705end Modelica;
706model Modelica_Mechanics_MultiBody_Frames_Quaternions_planarRotation
707 extends Modelica.Mechanics.MultiBody.Frames.Quaternions.planarRotation;
708end Modelica_Mechanics_MultiBody_Frames_Quaternions_planarRotation;