Marine systems simulation
Billboard Arrow

SimObject draws an arrow, and adds optional text.

+ Collaboration diagram for Billboard Arrow:

CBillboardArrow implements this. The arrow can have one or two heads in each direction.

Todo:
Add details
Author
Isak Swahn
Warning
This simObject does not work as expected.

Example configuration excerpt

<Lib
LibName = "fhsim_base"
SimObject = "Visual/BillboardArrow"
Name = "A"
TextSize = "1.0"
TextLocation = "1.0"
Prefix = "a"
Suffix = "b"
Precision = "1"
Scaling = "1.0"
Radius = "1.0"
RadiusFudge = "1.0"
NumFaces = "10"
MaterialName = "indianred2"
Type = "Vector"
TextVisible = "true"
/>

Input Ports

Name Width Description
Pos 3 Position of the billboard.
Vector 3 The arrow in terms of vector components.
Visible 1 Sets visibility. Visible if larger than 0.5, otherwise hidden.

Output Ports

This SimObject does not contain any outputs.

Configuration parameters

Name Width Description
TextSize 1 Size of the billboard text (default: 1.0).
TextLocation 1 Sets the posision of the text on the billboard (default: 1.0).
Prefix 1 Text prefix (default: [empty string]).
Suffix 1 Suffix of the string (default: [empty string]).
Precision 1 Precision of the displayed numbers (default: 1).
Scaling 1 Scaling of the text (default: 1.0).
Radius 1 Radius of the arrow (default: 1.0).
NumFaces 1 Number of visual faces of the arrow. The larger value, the smoother arrow surface (default: 10).
MaterialName 1 Name of the billboard material (default: indianred2).
Type 1 Type of arrow (default: Vector). Vector draws an arrow with one arrow. Moment draws an arrow with double arrow head. Bidirectional draws an arrow with arrowhead in both ends.
TextVisible 1 Whether or not the text should be visible (default: true).

Initial conditions

This SimObject does not contain any initial conditions.

Full example file

<Contents>
<OBJECTS>
<Lib
LibName = "fhsim_base"
SimObject = "Camera/Controller2"
Name = "CAM"
NumInput = "4"
Time = "0,1,2,3"
UseDegrees = "1"
Interpolate ="1"
/>
<Lib
LibName = "base"
SimObject = "Body/Mass"
Name = "M1"
Scale = "1"
Mass = "1"
Material = "Simple/Red"
/>
<Lib
LibName = "base"
SimObject = "Body/Mass"
Name = "M2"
Scale = "1"
Mass = "1"
Material = "Simple/Green"
/>
<Lib
LibName = "base"
SimObject = "Body/Mass"
Name = "M3"
Scale = "1"
Mass = "1"
/>
<Lib
LibName = "base"
SimObject = "Body/Mass"
Name = "M4"
Scale = "1"
Mass = "1"
Material = "Simple/Black"
/>
<Lib
LibName = "fhsim_base"
SimObject = "Camera/Shot"
Name = "camshot"
Filename = "shot.png"
Start = "0"
Video = "1"
Stop = "5"
FrameRateControl = "FPS"
FrameRateValue = "30"
Refinement = "1"
Path = ""
/>
<Lib
LibName = "base"
SimObject = "DefaultEnvironment"
Name = "Env"
Seadepth = "500"
Density = "1000"
CurrentVelocity = "0,0,0"
/>
</OBJECTS>
<INTERCONNECTIONS>
<Connection
CAM.Position1 = "-10,0,0"
CAM.Position2 = "0,-10,0"
CAM.Position3 = "10,0,0"
CAM.Position4 = "0,10,0"
CAM.Pitch1 = "0"
CAM.Pitch2 = "0"
CAM.Pitch3 = "0"
CAM.Pitch4 = "0"
CAM.Yaw1 = "0"
CAM.Yaw2 = "90"
CAM.Yaw3 = "180"
CAM.Yaw4 = "270"
M1.Force = "0,0,0"
M2.Force = "0,0,0"
M3.Force = "0,0,0"
M4.Force = "0,0,0"
/>
</INTERCONNECTIONS>
<INITIALIZATION>
<InitialCondition
M1.Pos = "0,0,0"
M2.Pos = "10,-20,0"
M3.Pos = "20,-10,0"
M4.Pos = "-10,20,0"
M1.Vel = "0,0,0"
M2.Vel = "0,0,0"
M3.Vel = "0,0,0"
M4.Vel = "0,0,0"
/>
</INITIALIZATION>
<INTEGRATION>
<Engine
IntegratorMethod = "2"
NumCores = "1"
TOutput = "0,5"
LogStates = "1"
stepsize = "0"
HMax = "0.002"
HMin = "0.00000001"
AbsTol = "1e-3"
RelTol = "1e-3"
UseRSSNormInsteadOfInfNorm = "0"
FileOutput = "objects:all"
/>
</INTEGRATION>
</Contents>

This SimObject is referred to as Visual/BillboardArrow