@@ -29,15 +29,17 @@ mutable struct Mesh{T} <: Shape{T}
29
29
color:: RGBA
30
30
31
31
function Mesh (path:: String ;
32
- scale:: AbstractVector = ones (3 ), color = RGBA (0.75 , 0.75 , 0.75 ), xoffset:: AbstractVector = zeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion)
32
+ xoffset:: AbstractVector = szeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion),
33
+ scale:: AbstractVector = sones (3 ), color = RGBA (0.75 , 0.75 , 0.75 )
33
34
)
34
35
T = promote_type (eltype .((xoffset, qoffset))... )
35
36
36
37
new {T} (xoffset, qoffset, path, scale, color)
37
38
end
38
39
39
40
function Mesh (path:: String , m:: Real , J:: AbstractMatrix ;
40
- scale:: AbstractVector = ones (3 ), name:: String = " " , color = RGBA (0.75 , 0.75 , 0.75 ), xoffset:: AbstractVector = zeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion)
41
+ xoffset:: AbstractVector = szeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion),
42
+ scale:: AbstractVector = sones (3 ), name:: String = " " , color = RGBA (0.75 , 0.75 , 0.75 )
41
43
)
42
44
T = promote_type (eltype .((m, J, xoffset, qoffset))... )
43
45
@@ -57,24 +59,27 @@ mutable struct Box{T} <: Shape{T}
57
59
qoffset:: UnitQuaternion{T}
58
60
59
61
xyz:: SVector{3,T}
62
+ scale:: SVector{3,T}
60
63
color:: RGBA
61
64
62
65
63
66
function Box (x:: Real , y:: Real , z:: Real ;
64
- color = RGBA (0.75 , 0.75 , 0.75 ), xoffset:: AbstractVector = zeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion)
67
+ xoffset:: AbstractVector = szeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion),
68
+ scale:: AbstractVector = sones (3 ), color = RGBA (0.75 , 0.75 , 0.75 )
65
69
)
66
70
T = promote_type (eltype .((x, y, z, xoffset, qoffset))... )
67
71
68
- new {T} (xoffset, qoffset, [x;y;z], color)
72
+ new {T} (xoffset, qoffset, [x;y;z], scale, color)
69
73
end
70
74
71
75
function Box (x:: Real , y:: Real , z:: Real , m:: Real ;
72
- name:: String = " " , color = RGBA (0.75 , 0.75 , 0.75 ), xoffset:: AbstractVector = zeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion)
76
+ xoffset:: AbstractVector = szeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion),
77
+ scale:: AbstractVector = sones (3 ), name:: String = " " , color = RGBA (0.75 , 0.75 , 0.75 )
73
78
)
74
79
T = promote_type (eltype .((x, y, z, m, xoffset, qoffset))... )
75
80
J = 1 / 12 * m * diagm ([y^ 2 + z^ 2 ;x^ 2 + z^ 2 ;x^ 2 + y^ 2 ])
76
81
77
- return Body (m, J; name= name, shape= new {T} (xoffset, qoffset, [x;y;z], color))
82
+ return Body (m, J; name= name, shape= new {T} (xoffset, qoffset, [x;y;z], scale, color))
78
83
end
79
84
end
80
85
@@ -90,24 +95,27 @@ mutable struct Cylinder{T} <: Shape{T}
90
95
qoffset:: UnitQuaternion{T}
91
96
92
97
rh:: SVector{2,T}
98
+ scale:: SVector{3,T}
93
99
color:: RGBA
94
100
95
101
# Cylinder points in the z direction
96
102
function Cylinder (r:: Real , h:: Real ;
97
- color = RGBA (0.75 , 0.75 , 0.75 ), xoffset:: AbstractVector = zeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion)
103
+ xoffset:: AbstractVector = szeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion),
104
+ scale:: AbstractVector = sones (3 ), color = RGBA (0.75 , 0.75 , 0.75 )
98
105
)
99
106
T = promote_type (eltype .((r, h, xoffset, qoffset))... )
100
107
101
- new {T} (xoffset, qoffset, [r;h], color)
108
+ new {T} (xoffset, qoffset, [r;h], scale, color)
102
109
end
103
110
104
111
function Cylinder (r:: Real , h:: Real , m:: Real ;
105
- name:: String = " " , color = RGBA (0.75 , 0.75 , 0.75 ), xoffset:: AbstractVector = zeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion)
112
+ xoffset:: AbstractVector = szeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion),
113
+ scale:: AbstractVector = sones (3 ), name:: String = " " , color = RGBA (0.75 , 0.75 , 0.75 )
106
114
)
107
115
T = promote_type (eltype .((r, h, m, xoffset, qoffset))... )
108
116
J = 1 / 2 * m * diagm ([r^ 2 + 1 / 6 * h^ 2 ;r^ 2 + 1 / 6 * h^ 2 ;r^ 2 ])
109
117
110
- return Body (m, J; name= name, shape= new {T} (xoffset, qoffset, [r;h], color))
118
+ return Body (m, J; name= name, shape= new {T} (xoffset, qoffset, [r;h], scale, color))
111
119
end
112
120
end
113
121
@@ -123,23 +131,26 @@ mutable struct Sphere{T} <: Shape{T}
123
131
qoffset:: UnitQuaternion{T}
124
132
125
133
r:: T
134
+ scale:: SVector{3,T}
126
135
color:: RGBA
127
136
128
137
function Sphere (r:: Real ;
129
- color = RGBA (0.75 , 0.75 , 0.75 ), xoffset:: AbstractVector = zeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion)
138
+ xoffset:: AbstractVector = szeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion),
139
+ scale:: AbstractVector = sones (3 ), color = RGBA (0.75 , 0.75 , 0.75 )
130
140
)
131
141
T = promote_type (eltype .((r, xoffset, qoffset))... )
132
142
133
- new {T} (xoffset, qoffset, r, color)
143
+ new {T} (xoffset, qoffset, r, scale, color)
134
144
end
135
145
136
146
function Sphere (r:: Real , m:: Real ;
137
- name:: String = " " , color = RGBA (0.75 , 0.75 , 0.75 ), xoffset:: AbstractVector = zeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion)
147
+ xoffset:: AbstractVector = szeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion),
148
+ scale:: AbstractVector = sones (3 ), name:: String = " " , color = RGBA (0.75 , 0.75 , 0.75 )
138
149
)
139
150
T = promote_type (eltype .((r, m, xoffset, qoffset))... )
140
151
J = 2 / 5 * m * diagm ([r^ 2 for i = 1 : 3 ])
141
152
142
- return Body (m, J; name= name, shape= new {T} (xoffset, qoffset, r, color))
153
+ return Body (m, J; name= name, shape= new {T} (xoffset, qoffset, r, scale, color))
143
154
end
144
155
end
145
156
@@ -154,24 +165,27 @@ mutable struct Pyramid{T} <: Shape{T}
154
165
qoffset:: UnitQuaternion{T}
155
166
156
167
wh:: SVector{2,T}
168
+ scale:: SVector{3,T}
157
169
color:: RGBA
158
170
159
171
# Pyramid points in the z direction, Center of mass at 1/4 h
160
172
function Pyramid (w:: Real , h:: Real ;
161
- color = RGBA (0.75 , 0.75 , 0.75 ), xoffset:: AbstractVector = zeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion)
173
+ xoffset:: AbstractVector = szeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion),
174
+ scale:: AbstractVector = sones (3 ), color = RGBA (0.75 , 0.75 , 0.75 )
162
175
)
163
176
T = promote_type (eltype .((w, h, xoffset, qoffset))... )
164
177
165
- new {T} (xoffset, qoffset, [w;h], color)
178
+ new {T} (xoffset, qoffset, [w;h], scale, color)
166
179
end
167
180
168
181
function Pyramid (w:: Real , h:: Real , m:: Real ;
169
- name:: String = " " , color = RGBA (0.75 , 0.75 , 0.75 ), xoffset:: AbstractVector = zeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion)
182
+ xoffset:: AbstractVector = szeros (3 ), qoffset:: UnitQuaternion = one (UnitQuaternion),
183
+ scale:: AbstractVector = sones (3 ), name:: String = " " , color = RGBA (0.75 , 0.75 , 0.75 )
170
184
)
171
185
T = promote_type (eltype .((w, h, m, xoffset, qoffset))... )
172
186
J = 1 / 80 * m * diagm ([4 * w^ 2 + 3 * h^ 2 ;4 * w^ 2 + 3 * h^ 2 ;8 * w^ 2 ])
173
187
174
- return Body (m, J; name= name, shape= new {T} (xoffset, qoffset, [w;h], color))
188
+ return Body (m, J; name= name, shape= new {T} (xoffset, qoffset, [w;h], scale, color))
175
189
end
176
190
end
177
191
@@ -181,6 +195,7 @@ function Base.show(io::IO, mime::MIME{Symbol("text/plain")}, shape::Shape{T}) wh
181
195
println (io," xoffset: " * string (shape. xoffset))
182
196
println (io," qoffset: " * string (shape. qoffset))
183
197
println (io," color: " * string (shape. color))
198
+ println (io," scale: " * string (shape. scale))
184
199
end
185
200
186
201
function Base. show (io:: IO , mime:: MIME{Symbol("text/plain")} , shape:: EmptyShape{T} ) where {T}
0 commit comments