Skip to content

Commit 07e2e15

Browse files
Make convertToFloat64 available
Move function 'convertToFloat64' from visualize.jl to constantsAndFunctions.jl.
1 parent 509fdfc commit 07e2e15

File tree

4 files changed

+61
-52
lines changed

4 files changed

+61
-52
lines changed

src/Basics/_module.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export trailingPartOfName
2020
export nepsType, neps, sign_eps, radToDeg
2121
export getAndCheckFullLibraryPath, getEnvironmentVariable
2222

23-
export normalizeVector, BoundingBox
23+
export normalizeVector, BoundingBox, convertToFloat64
2424

2525
export readDictOfStructsFromJSON
2626
export listKeys
@@ -32,6 +32,8 @@ using StaticArrays
3232
using LinearAlgebra
3333
using JSON
3434
using Unitful
35+
import Measurements
36+
import MonteCarloMeasurements
3537

3638
include("environment.jl")
3739
include("constantsAndFunctions.jl")

src/Basics/constantsAndFunctions.jl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,28 @@ function normalizeVector(n::SVector{3,T}) where {T}
2727
return n/nabs
2828
end
2929

30+
# convert VarFloatType to Float64
31+
function convertToFloat64(value)
32+
if typeof(value[1]) <: Measurements.Measurement
33+
# Plot mean value signal
34+
value_mean = Float64.(Measurements.value.(value))
35+
elseif typeof(value[1]) <: MonteCarloMeasurements.StaticParticles ||
36+
typeof(value[1]) <: MonteCarloMeasurements.Particles
37+
# Plot mean value signal
38+
if isdefined(MonteCarloMeasurements, :pmean)
39+
# MonteCarloMeasurements, version >= 1.0
40+
value_mean = Float64.(MonteCarloMeasurements.pmean.(value))
41+
else
42+
# MonteCarloMeasurements, version < 1.0
43+
value_mean = Float64.(MonteCarloMeasurements.mean.(value))
44+
end
45+
else
46+
value_mean = Float64.(value)
47+
end
48+
return value_mean
49+
end
50+
51+
3052
# Standard constants
3153
const radToDeg = 180.0/pi
3254

src/renderer/DLR_Visualization/_module.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ import Modia3D
1818
import Modia3D.Basics
1919
import Modia3D.Shapes
2020
import Modia3D.Composition
21-
import Measurements
22-
import MonteCarloMeasurements
2321

2422
using Libdl
2523
ISWINDOWS() = Sys.iswindows()

src/renderer/DLR_Visualization/visualize.jl

Lines changed: 36 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,13 @@
99

1010
const mvecSize = MVector{3,Cdouble}(0.0, 0.0, 0.0)
1111
const DefaultMaterial = Shapes.VisualMaterial()
12-
const emptyShaderName=" "
12+
const emptyShaderName = " "
13+
14+
15+
# convert VarFloatType to Float64
16+
FVal(val) = Modia3D.convertToFloat64(val)
17+
FVec(vec) = SVector{3,Float64}(Modia3D.convertToFloat64(vec))
18+
FMat(mat) = SMatrix{3,3,Float64,9}(Modia3D.convertToFloat64(mat))
1319

1420

1521
@inline function visualizeShape(simVis::SimVis_Renderer,
@@ -30,113 +36,94 @@ const emptyShaderName=" "
3036
end
3137

3238

33-
function convertToFloat64(value)
34-
if typeof(value[1]) <: Measurements.Measurement
35-
# Plot mean value signal
36-
value_mean = Float64.(Measurements.value.(value))
37-
elseif typeof(value[1]) <: MonteCarloMeasurements.StaticParticles ||
38-
typeof(value[1]) <: MonteCarloMeasurements.Particles
39-
# Plot mean value signal
40-
if isdefined(MonteCarloMeasurements, :pmean)
41-
# MonteCarlMeasurements, version >= 1.0
42-
value_mean = Float64.(MonteCarloMeasurements.pmean.(value))
43-
else
44-
# MonteCarloMeasurements, version < 1.0
45-
value_mean = Float64.(MonteCarloMeasurements.mean.(value))
46-
end
47-
else
48-
value_mean = Float64.(value)
49-
end
50-
return value_mean
51-
end
52-
53-
5439
function visualizeObject(obj::Composition.Object3D, id::Ptr{Nothing}, simVis::SimVis_Renderer)
5540
shapeKind = obj.shapeKind
41+
r_abs = FVec(obj.r_abs)
42+
R_abs = FMat(obj.R_abs)
5643

5744
if shapeKind == Modia3D.SphereKind
5845
sphere::Modia3D.Shapes.Sphere = obj.shape
59-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs)), SimVisSphere, id, obj.visualMaterial,
60-
convertToFloat64(sphere.diameter), convertToFloat64(sphere.diameter), convertToFloat64(sphere.diameter) )
46+
visualizeShape(simVis, r_abs, R_abs, SimVisSphere, id, obj.visualMaterial,
47+
FVal(sphere.diameter), FVal(sphere.diameter), FVal(sphere.diameter))
6148

6249
elseif shapeKind == Modia3D.EllipsoidKind
6350
ellipsoid::Modia3D.Shapes.Ellipsoid = obj.shape
64-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs)), SimVisSphere, id, obj.visualMaterial,
65-
convertToFloat64(ellipsoid.lengthX), convertToFloat64(ellipsoid.lengthY), convertToFloat64(ellipsoid.lengthZ) )
51+
visualizeShape(simVis, r_abs, R_abs, SimVisSphere, id, obj.visualMaterial,
52+
FVal(ellipsoid.lengthX), FVal(ellipsoid.lengthY), FVal(ellipsoid.lengthZ))
6653

6754
elseif shapeKind == Modia3D.BoxKind
6855
box::Modia3D.Shapes.Box = obj.shape
69-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs)), SimVisBox, id, obj.visualMaterial,
70-
convertToFloat64(box.lengthX), convertToFloat64(box.lengthY), convertToFloat64(box.lengthZ) )
56+
visualizeShape(simVis, r_abs, R_abs, SimVisBox, id, obj.visualMaterial,
57+
FVal(box.lengthX), FVal(box.lengthY), FVal(box.lengthZ))
7158

7259
elseif shapeKind == Modia3D.CylinderKind
7360
cylinder::Modia3D.Shapes.Cylinder = obj.shape
7461
if cylinder.innerDiameter == 0.0
75-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), Shapes.rotateAxis2z(cylinder.axis, SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs))), SimVisCylinder, id, obj.visualMaterial,
76-
convertToFloat64(cylinder.diameter), convertToFloat64(cylinder.diameter), convertToFloat64(cylinder.length) )
62+
visualizeShape(simVis, r_abs, Shapes.rotateAxis2z(cylinder.axis, R_abs), SimVisCylinder, id, obj.visualMaterial,
63+
FVal(cylinder.diameter), FVal(cylinder.diameter), FVal(cylinder.length))
7764
else
78-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), Shapes.rotateAxis2z(cylinder.axis, SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs))), SimVisPipe, id, obj.visualMaterial,
79-
convertToFloat64(cylinder.diameter), convertToFloat64(cylinder.diameter), convertToFloat64(cylinder.length); extras=@MVector[0.0, convertToFloat64(cylinder.innerDiameter/cylinder.diameter), 1.0])
65+
visualizeShape(simVis, r_abs, Shapes.rotateAxis2z(cylinder.axis, R_abs), SimVisPipe, id, obj.visualMaterial,
66+
FVal(cylinder.diameter), FVal(cylinder.diameter), FVal(cylinder.length); extras=@MVector[0.0, FVal(cylinder.innerDiameter/cylinder.diameter), 1.0])
8067
end
8168

8269
elseif shapeKind == Modia3D.ConeKind
8370
cone::Modia3D.Shapes.Cone = obj.shape
8471
if cone.axis == 1
85-
dr = SVector{3,Float64}([convertToFloat64(cone.length/4), 0.0, 0.0])
72+
dr = SVector{3,Float64}([0.25*FVal(cone.length), 0.0, 0.0])
8673
elseif cone.axis == 2
87-
dr = SVector{3,Float64}([0.0, convertToFloat64(cone.length/4), 0.0])
74+
dr = SVector{3,Float64}([0.0, 0.25*FVal(cone.length), 0.0])
8875
else
89-
dr = SVector{3,Float64}([0.0, 0.0, convertToFloat64(cone.length/4)])
76+
dr = SVector{3,Float64}([0.0, 0.0, 0.25*FVal(cone.length)])
9077
end
91-
r_abs = SVector{3,Float64}(convertToFloat64(obj.r_abs)) + SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs)') * dr
92-
visualizeShape(simVis, r_abs, Shapes.rotateAxis2z(cone.axis, SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs))), SimVisCone, id, obj.visualMaterial,
93-
convertToFloat64(cone.diameter), convertToFloat64(cone.diameter), convertToFloat64(cone.length); extras=@MVector[convertToFloat64(cone.topDiameter/cone.diameter), 0.0, 0.0])
78+
r_abs = r_abs + R_abs' * dr
79+
visualizeShape(simVis, r_abs, Shapes.rotateAxis2z(cone.axis, R_abs), SimVisCone, id, obj.visualMaterial,
80+
FVal(cone.diameter), FVal(cone.diameter), FVal(cone.length); extras=@MVector[FVal(cone.topDiameter/cone.diameter), 0.0, 0.0])
9481

9582
elseif shapeKind == Modia3D.CapsuleKind
9683
capsule::Modia3D.Shapes.Capsule = obj.shape
97-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), Shapes.rotateAxis2z(capsule.axis, SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs))), SimVisCapsule, id, obj.visualMaterial,
98-
convertToFloat64(capsule.diameter), convertToFloat64(capsule.diameter), convertToFloat64(capsule.length) )
84+
visualizeShape(simVis, r_abs, Shapes.rotateAxis2z(capsule.axis, R_abs), SimVisCapsule, id, obj.visualMaterial,
85+
FVal(capsule.diameter), FVal(capsule.diameter), FVal(capsule.length))
9986

10087
elseif shapeKind == Modia3D.BeamKind
10188
beam::Modia3D.Shapes.Beam = obj.shape
102-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), Shapes.rotateAxis2x(beam.axis, SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs))), SimVisBeam, id, obj.visualMaterial,
103-
convertToFloat64(beam.length), convertToFloat64(beam.width), convertToFloat64(beam.thickness) )
89+
visualizeShape(simVis, r_abs, Shapes.rotateAxis2x(beam.axis, R_abs), SimVisBeam, id, obj.visualMaterial,
90+
FVal(beam.length), FVal(beam.width), FVal(beam.thickness) )
10491

10592
elseif shapeKind == Modia3D.CoordinateSystemKind
10693
coordinateSystem::Modia3D.Shapes.CoordinateSystem = obj.shape
107-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs)), SimVisCoordSys, id, DefaultMaterial,
94+
visualizeShape(simVis, r_abs, R_abs, SimVisCoordSys, id, DefaultMaterial,
10895
coordinateSystem.length, coordinateSystem.length, coordinateSystem.length)
10996

11097
elseif shapeKind == Modia3D.GridKind
11198
grid::Modia3D.Shapes.Grid = obj.shape
112-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), Shapes.rotateAxis2z(grid.axis, SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs))), SimVisGrid, id, DefaultMaterial,
99+
visualizeShape(simVis, r_abs, Shapes.rotateAxis2z(grid.axis, R_abs), SimVisGrid, id, DefaultMaterial,
113100
grid.length, grid.width, grid.length; extras=@MVector[grid.distance, grid.lineWidth, 0.0])
114101

115102
elseif shapeKind == Modia3D.SpringKind
116103
spring::Modia3D.Shapes.Spring = obj.shape
117-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), Shapes.rotateAxis2z(spring.axis, SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs))), SimVisSpring, id, obj.visualMaterial,
104+
visualizeShape(simVis, r_abs, Shapes.rotateAxis2z(spring.axis, R_abs), SimVisSpring, id, obj.visualMaterial,
118105
spring.length, spring.diameter, spring.diameter; extras=@MVector[spring.windings, spring.wireDiameter/2, 0.0])
119106

120107
elseif shapeKind == Modia3D.GearWheelKind
121108
gearWheel::Modia3D.Shapes.GearWheel = obj.shape
122-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), Shapes.rotateAxis2z(gearWheel.axis, SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs))), SimVisGearWheel, id, obj.visualMaterial,
109+
visualizeShape(simVis, r_abs, Shapes.rotateAxis2z(gearWheel.axis, R_abs), SimVisGearWheel, id, obj.visualMaterial,
123110
gearWheel.diameter, gearWheel.diameter, gearWheel.length; extras=@MVector[gearWheel.innerDiameter/gearWheel.diameter, gearWheel.teeth, gearWheel.angle*180/pi])
124111

125112
elseif shapeKind == Modia3D.ModelicaKind
126113
modelica::Modia3D.Shapes.ModelicaShape = obj.shape
127-
visualizeShape(simVis, SVector{3,Float64}(convertToFloat64(obj.r_abs)), SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs)), ShapeType(modelica.type), id, obj.visualMaterial,
114+
visualizeShape(simVis, r_abs, R_abs, ShapeType(modelica.type), id, obj.visualMaterial,
128115
modelica.lengthX, modelica.lengthY, modelica.lengthZ; extras=modelica.extra)
129116

130117
elseif shapeKind == Modia3D.FileMeshKind
131118
fileMesh::Modia3D.Shapes.FileMesh = obj.shape
132-
SimVis_setFileObject(simVis, id, Cint(0), SVector{3,Float64}(convertToFloat64(obj.r_abs)), SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs)),
119+
SimVis_setFileObject(simVis, id, Cint(0), r_abs, R_abs,
133120
MVector{3,Float64}(fileMesh.scaleFactor), Cint(obj.visualMaterial.reflectslight), obj.visualMaterial.shininess, obj.visualMaterial.transparency, Cint(obj.visualMaterial.wireframe), Cint(0),
134121
fileMesh.filename, Cint(fileMesh.smoothNormals), fileMesh.useMaterialColor, MVector{3,Cint}(obj.visualMaterial.color),
135122
Cint(obj.visualMaterial.shadowMask), emptyShaderName)
136123

137124
elseif shapeKind == Modia3D.TextKind
138125
textShape::Modia3D.Shapes.TextShape = obj.shape
139-
SimVis_setTextObject(simVis, id, Cint(textShape.axisAlignment), textShape.text, 0.0, Cint(0), SVector{3,Float64}(convertToFloat64(obj.r_abs)), SMatrix{3,3,Float64,9}(convertToFloat64(obj.R_abs)),
126+
SimVis_setTextObject(simVis, id, Cint(textShape.axisAlignment), textShape.text, 0.0, Cint(0), r_abs, R_abs,
140127
textShape.font.charSize, textShape.font.fontFileName, MVector{3,Cint}(textShape.font.color), textShape.font.transparency,
141128
textShape.offset, Cint(textShape.alignment), Cint(0))
142129

0 commit comments

Comments
 (0)