Modelica.Mechanics.MultiBody.Visualizers.Internal

Visualizers that will be replaced by improved versions in the future (don't use them)

Information


This package contains components to construct 3-dim. fonts with "cylinder" elements for the animation window. This is just a temporary hack until 3-dim. fonts are supported in Modelica tools. The components are used to construct the "x", "y", "z" labels of coordinates systems in the animation.

Extends from Modelica.Icons.Library (Icon for library).

Package Content

NameDescription
Modelica.Mechanics.MultiBody.Visualizers.Internal.FixedLines FixedLines Visualizing a set of lines as cylinders (e.g., used to display characters)
Modelica.Mechanics.MultiBody.Visualizers.Internal.Lines Lines Visualizing a set of lines as cylinders with variable size, e.g., used to display characters (no Frame connector)


Modelica.Mechanics.MultiBody.Visualizers.Internal.FixedLines Modelica.Mechanics.MultiBody.Visualizers.Internal.FixedLines

Visualizing a set of lines as cylinders (e.g., used to display characters)

Modelica.Mechanics.MultiBody.Visualizers.Internal.FixedLines

Information


With model FixedLines a set of lines is defined that are located relatively to frame_a. Every line is represented by a cylinder. This allows to define simple shaped 3-dimensional characters. An example is shown in the following figure:
 

model Visualizers.FixedLines

 
The two letters "x" and "y" are constructed with 4 lines by providing the following data for parameter lines

   lines = {[0, 0; 1, 1],[0, 1; 1, 0],[1.5, -0.5; 2.5, 1],[1.5, 1; 2, 0.25]}

Via parameter vectors n_x and n_y a two-dimensional coordinate system is defined. The points defined with parameter lines are with respect to this coordinate system. For example "[0, 0; 1, 1]" defines a line that starts at {0,0} and ends at {1,1}. The diameter and color of all line cylinders are identical.

Extends from Modelica.Mechanics.MultiBody.Interfaces.PartialVisualizer (Base model for visualizers (has a frame_a on the left side + outer world + assert to guarantee that the component is connected)).

Parameters

TypeNameDefaultDescription
Booleananimationtrue= true, if animation shall be enabled
if animation = true
Realscale1The 'lines' are visualized 'scale' times bigger
Positionlines[:, 2, 2]{[0, 0; 1, 1],[0, 1; 1, 0]}List of start and end points of cylinders resolved along n_x and n_y [m]
Distancediameter0.05Diameter of the cylinders defined by lines [m]
Positionr_lines[3]{0,0,0}Position vector from origin of frame_a to the origin of the 'lines' frame, resolved in frame_a [m]
Realn_x[3]{1,0,0}Vector in direction of x-axis of 'lines' frame, resolved in frame_a. [1]
Realn_y[3]{0,1,0}Vector in direction of y-axis of 'lines' frame, resolved in frame_a. [1]
Colorcolor{0,128,255} Color of cylinders
SpecularCoefficientspecularCoefficientworld.defaultSpecularCoeffic...Reflection of ambient light (= 0: light is completely absorbed)

Connectors

TypeNameDescription
Frame_aframe_aCoordinate system in which visualization data is resolved

Modelica definition

model FixedLines 
  "Visualizing a set of lines as cylinders (e.g., used to display characters)"

  import SI = Modelica.SIunits;
  import Modelica.Mechanics.MultiBody;
  import Modelica.Mechanics.MultiBody.Types;
  extends Modelica.Mechanics.MultiBody.Interfaces.PartialVisualizer;

  parameter Boolean animation=true "= true, if animation shall be enabled";
  input Real scale(min=0) = 1 "The 'lines' are visualized 'scale' times bigger";
  input SI.Position lines[:,2,2]={[0,0; 1,1],[0,1; 1,0]} 
    "List of start and end points of cylinders resolved along n_x and n_y";
  input SI.Distance diameter(min=0) = 0.05 
    "Diameter of the cylinders defined by lines";
  input SI.Position r_lines[3]={0,0,0} 
    "Position vector from origin of frame_a to the origin of the 'lines' frame, resolved in frame_a";
  input Real n_x[3](each final unit="1")={1,0,0} 
    "Vector in direction of x-axis of 'lines' frame, resolved in frame_a.";
  input Real n_y[3](each final unit="1")={0,1,0} 
    "Vector in direction of y-axis of 'lines' frame, resolved in frame_a.";
  input MultiBody.Types.Color color={0,128,255} " Color of cylinders";
  input Types.SpecularCoefficient specularCoefficient = world.defaultSpecularCoefficient 
    "Reflection of ambient light (= 0: light is completely absorbed)";

protected 
  Lines x_label(
    lines=scale*lines,
    diameter=scale*diameter,
    color=color,
    specularCoefficient = specularCoefficient,
    r_lines=r_lines,
    n_x=n_x,
    n_y=n_y,
    r=frame_a.r_0,
    R=frame_a.R) if world.enableAnimation and animation;
equation 
  frame_a.f = zeros(3);
  frame_a.t = zeros(3);
end FixedLines;

Modelica.Mechanics.MultiBody.Visualizers.Internal.Lines Modelica.Mechanics.MultiBody.Visualizers.Internal.Lines

Visualizing a set of lines as cylinders with variable size, e.g., used to display characters (no Frame connector)

Information


With model Lines a set of dynamic lines is defined that are located relatively to frame_a. Every line is represented by a cylinder. This allows, e.g., to define simple shaped 3-dimensional characters. Note, if the lines are fixed relatively to frame_a, it is more convenient to use model Visualizers.FixedLines. An example for dynamic lines is shown in the following figure:
 

model Visualizers.FixedLines

 
The two letters "x" and "y" are constructed with 4 lines by providing the following data for input variable lines

   lines = {[0, 0; 1, 1],[0, 1; 1, 0],[1.5, -0.5; 2.5, 1],[1.5, 1; 2, 0.25]}

Via vectors n_x and n_y a two-dimensional coordinate system is defined. The points defined with variable lines are with respect to this coordinate system. For example "[0, 0; 1, 1]" defines a line that starts at {0,0} and ends at {1,1}. The diameter and color of all line cylinders are identical and are defined by parameters.

Parameters

TypeNameDefaultDescription
OrientationRFrames.nullRotation()Orientation object to rotate the world frame into the object frame
Positionr[3]{0,0,0}Position vector from origin of world frame to origin of object frame, resolved in world frame [m]
Positionr_lines[3]{0,0,0}Position vector from origin of object frame to the origin of 'lines' frame, resolved in object frame [m]
Realn_x[3]{1,0,0}Vector in direction of x-axis of 'lines' frame, resolved in object frame [1]
Realn_y[3]{0,1,0}Vector in direction of y-axis of 'lines' frame, resolved in object frame [1]
Positionlines[:, 2, 2]zeros(0, 2, 2)List of start and end points of cylinders resolved in an x-y frame defined by n_x, n_y, e.g., {[0,0;1,1], [0,1;1,0], [2,0; 3,1]} [m]
Lengthdiameter0.05Diameter of the cylinders defined by lines [m]
Colorcolor{0,128,255}Color of cylinders
SpecularCoefficientspecularCoefficient0.7Reflection of ambient light (= 0: light is completely absorbed)

Modelica definition

model Lines 
  "Visualizing a set of lines as cylinders with variable size, e.g., used to display characters (no Frame connector)"

  import SI = Modelica.SIunits;
  import Modelica.Mechanics.MultiBody;
  import Modelica.Mechanics.MultiBody.Types;
  import Modelica.Mechanics.MultiBody.Frames;
  import T = Modelica.Mechanics.MultiBody.Frames.TransformationMatrices;
  input Modelica.Mechanics.MultiBody.Frames.Orientation R=Frames.nullRotation() 
    "Orientation object to rotate the world frame into the object frame";
  input SI.Position r[3]={0,0,0} 
    "Position vector from origin of world frame to origin of object frame, resolved in world frame";
  input SI.Position r_lines[3]={0,0,0} 
    "Position vector from origin of object frame to the origin of 'lines' frame, resolved in object frame";
  input Real n_x[3](each final unit="1")={1,0,0} 
    "Vector in direction of x-axis of 'lines' frame, resolved in object frame";
  input Real n_y[3](each final unit="1")={0,1,0} 
    "Vector in direction of y-axis of 'lines' frame, resolved in object frame";
  input SI.Position lines[:, 2, 2]=zeros(0, 2, 2) 
    "List of start and end points of cylinders resolved in an x-y frame defined by n_x, n_y, e.g., {[0,0;1,1], [0,1;1,0], [2,0; 3,1]}";
  input SI.Length diameter(min=0) = 0.05 
    "Diameter of the cylinders defined by lines";
  input Modelica.Mechanics.MultiBody.Types.Color color={0,128,255} 
    "Color of cylinders";
  input Types.SpecularCoefficient specularCoefficient = 0.7 
    "Reflection of ambient light (= 0: light is completely absorbed)";
protected 
  parameter Integer n=size(lines, 1) "Number of cylinders";
  T.Orientation R_rel=T.from_nxy(n_x, n_y);
  T.Orientation R_lines=T.absoluteRotation(R.T, R_rel);
  Modelica.SIunits.Position r_abs[3]=r + T.resolve1(R.T, r_lines);
  Modelica.Mechanics.MultiBody.Visualizers.Advanced.Shape cylinders[n](
    each shapeType="cylinder",
    lengthDirection={T.resolve1(R_rel, vector([lines[i, 2, :] - lines[i, 1,
         :]; 0])) for i in 1:n},
    length={Modelica.Math.Vectors.length(
                                    lines[i, 2, :] - lines[i, 1, :]) for i in 
            1:n},
    r={r_abs + T.resolve1(R_lines, vector([lines[i, 1, :]; 0])) for i in 1:
        n},
    each width=diameter,
    each height=diameter,
    each widthDirection={0,1,0},
    each color=color,
    each R=R,
    each specularCoefficient=specularCoefficient);

end Lines;

HTML-documentation generated by Dymola Sun Jan 17 21:11:41 2010.