Skip to content

Commit bf438ac

Browse files
committed
change nepsMPR to nepsType
1 parent 1aa39d0 commit bf438ac

File tree

5 files changed

+25
-25
lines changed

5 files changed

+25
-25
lines changed

src/Basics/_module.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import Modia3D
1717

1818
export trailingPartOfName
1919

20-
export nepsMPR, neps, sign_eps, radToDeg
20+
export nepsType, neps, sign_eps, radToDeg
2121
export getAndCheckFullLibraryPath, getEnvironmentVariable
2222

2323
export normalizeVector, BoundingBox

src/Basics/constantsAndFunctions.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@
99
# Epsilon and sign
1010
const neps = sqrt( eps() )
1111

12-
nepsMPR(::Type{T}) where {T} = sqrt( eps(T) )
12+
nepsType(::Type{T}) where {T} = sqrt( eps(T) ) # mpr and bounding box calculation use this
1313

1414
function sign_eps(value::T) where {T}
15-
seps::T = 100.0*nepsMPR(T)
15+
seps::T = 100.0*nepsType(T)
1616
return value > seps ? T(1.0) : (value < -seps ? T(-1.0) : T(0.0))
1717
end
1818

1919
function normalizeVector(n::SVector{3,T}) where {T}
2020
nabs = norm(n)
21-
if nabs <= nepsMPR(T)
22-
println("neps ", nepsMPR(T))
21+
if nabs <= nepsType(T)
22+
println("neps ", nepsType(T))
2323
println("nabs ", nabs)
24-
@assert(nabs > nepsMPR(T)) # && norm(vec) > eps()
24+
@assert(nabs > nepsType(T)) # && norm(vec) > eps()
2525
# return nothing
2626
end
2727
return n/nabs

src/Shapes/boundingBoxes.jl

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,21 +78,21 @@ end
7878
halfDiameter = T(0.5*shape.diameter)
7979
if shape.axis == 1
8080
enorm = norm(SVector(e_abs[2], e_abs[3]))
81-
if enorm <= Modia3D.nepsMPR(T)
81+
if enorm <= Modia3D.nepsType(T)
8282
return Basics.sign_eps(e_abs[1])*SVector(halfLength, 0.0, 0.0)
8383
else
8484
return Basics.sign_eps(e_abs[1])*SVector(halfLength, 0.0, 0.0) + SVector(0.0, (halfDiameter)*e_abs[2], (halfDiameter)*e_abs[3])/enorm
8585
end
8686
elseif shape.axis == 2
8787
enorm = norm(SVector(e_abs[3], e_abs[1]))
88-
if enorm <= Modia3D.nepsMPR(T)
88+
if enorm <= Modia3D.nepsType(T)
8989
return Basics.sign_eps(e_abs[2])*SVector(0.0, halfLength, 0.0)
9090
else
9191
return Basics.sign_eps(e_abs[2])*SVector(0.0, halfLength, 0.0) + SVector((halfDiameter)*e_abs[1], 0.0, (halfDiameter)*e_abs[3])/enorm
9292
end
9393
else
9494
enorm = norm(SVector(e_abs[1], e_abs[2]))
95-
if enorm <= Modia3D.nepsMPR(T)
95+
if enorm <= Modia3D.nepsType(T)
9696
return Basics.sign_eps(e_abs[3])*SVector(0.0, 0.0, halfLength)
9797
else
9898
return Basics.sign_eps(e_abs[3])*SVector(0.0, 0.0, halfLength) + SVector((halfDiameter)*e_abs[1], (halfDiameter)*e_abs[2], 0.0)/enorm
@@ -137,15 +137,15 @@ end
137137
return SVector(shapeLength, 0.0, 0.0) # apex is support point
138138
else # frustum of a cone
139139
enorm = norm(SVector(e_abs[2], e_abs[3]))
140-
if enorm > Modia3D.nepsMPR(T)
140+
if enorm > Modia3D.nepsType(T)
141141
return SVector(shapeLength, 0.0, 0.0) + SVector(0.0, topRadius*e_abs[2], topRadius*e_abs[3]) / enorm # point on top circle is support point
142142
else
143143
return SVector(shapeLength, 0.0, 0.0) # top circle center is support point
144144
end
145145
end
146146
else
147147
enorm = norm(SVector(e_abs[2], e_abs[3]))
148-
if enorm > Modia3D.nepsMPR(T)
148+
if enorm > Modia3D.nepsType(T)
149149
return SVector(0.0, baseRadius*e_abs[2], baseRadius*e_abs[3]) / enorm # point on base circle is support point
150150
else
151151
return SVector{3,T}(0.0, 0.0, 0.0) # base circle center is support point
@@ -158,15 +158,15 @@ end
158158
return SVector(0.0, shapeLength, 0.0) # apex is support point
159159
else # frustum of a cone
160160
enorm = norm(SVector(e_abs[3], e_abs[1]))
161-
if enorm > Modia3D.nepsMPR(T)
161+
if enorm > Modia3D.nepsType(T)
162162
return SVector(0.0, shapeLength, 0.0) + SVector(topRadius*e_abs[1], 0.0, topRadius*e_abs[3]) / enorm # point on top circle is support point
163163
else
164164
return SVector(0.0, shapeLength, 0.0) # top circle center is support point
165165
end
166166
end
167167
else
168168
enorm = norm(SVector(e_abs[3], e_abs[1]))
169-
if enorm > Modia3D.nepsMPR(T)
169+
if enorm > Modia3D.nepsType(T)
170170
return SVector(baseRadius*e_abs[1], 0.0, baseRadius*e_abs[3]) / enorm # point on base circle is support point
171171
else
172172
return SVector{3,T}(0.0, 0.0, 0.0) # base circle center is support point
@@ -179,15 +179,15 @@ end
179179
return SVector(0.0, 0.0, shapeLength) # apex is support point
180180
else # frustum of a cone
181181
enorm = norm(SVector(e_abs[1], e_abs[2]))
182-
if enorm > Modia3D.nepsMPR(T)
182+
if enorm > Modia3D.nepsType(T)
183183
return SVector(0.0, 0.0, shapeLength) + SVector(topRadius*e_abs[1], topRadius*e_abs[2], 0.0) / enorm # point on top circle is support point
184184
else
185185
return SVector(0.0, 0.0, shapeLength) # top circle center is support point
186186
end
187187
end
188188
else
189189
enorm = norm(SVector(e_abs[1], e_abs[2]))
190-
if enorm > Modia3D.nepsMPR(T)
190+
if enorm > Modia3D.nepsType(T)
191191
return SVector(baseRadius*e_abs[1], baseRadius*e_abs[2], 0.0) / enorm # point on base circle is support point
192192
else
193193
return SVector{3,T}(0.0, 0.0, 0.0) # base circle center is support point
@@ -205,21 +205,21 @@ end
205205
halfThickness = T(0.5*shape.thickness)
206206
if shape.axis == 1
207207
enorm = norm(SVector(e_abs[1], e_abs[2]))
208-
if enorm <= Modia3D.nepsMPR(T)
208+
if enorm <= Modia3D.nepsType(T)
209209
return SVector(Basics.sign_eps(e_abs[1])*halfLength, 0.0, Basics.sign_eps(e_abs[3])*halfThickness)
210210
else
211211
return SVector(Basics.sign_eps(e_abs[1])*halfLength, 0.0, Basics.sign_eps(e_abs[3])*halfThickness) + SVector(halfWidth*e_abs[1], halfWidth*e_abs[2], 0.0)/enorm
212212
end
213213
elseif shape.axis == 2
214214
enorm = norm(SVector(e_abs[2], e_abs[3]))
215-
if enorm <= Modia3D.nepsMPR(T)
215+
if enorm <= Modia3D.nepsType(T)
216216
return SVector(Basics.sign_eps(e_abs[1])*halfThickness, Basics.sign_eps(e_abs[2])*halfLength, 0.0)
217217
else
218218
return SVector(Basics.sign_eps(e_abs[1])*halfThickness, Basics.sign_eps(e_abs[2])*halfLength, 0.0) + SVector(0.0, halfWidth*e_abs[2], halfWidth*e_abs[3])/enorm
219219
end
220220
else
221221
enorm = norm(SVector(e_abs[3], e_abs[1]))
222-
if enorm <= Modia3D.nepsMPR(T)
222+
if enorm <= Modia3D.nepsType(T)
223223
return SVector(0.0, Basics.sign_eps(e_abs[2])*halfThickness, Basics.sign_eps(e_abs[3])*halfLength)
224224
else
225225
return SVector(0.0, Basics.sign_eps(e_abs[2])*halfThickness, Basics.sign_eps(e_abs[3])*halfLength) + SVector(halfWidth*e_abs[1], 0.0, halfWidth*e_abs[3])/enorm

src/contactDetection/ContactDetectionMPR/analyzeMPR.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ function intersect3DSegmentPlane(seg::Segment, plane::Plane)
2626

2727
dividend = -dot(plane.n, w)
2828
divisor = dot(plane.n, u)
29-
neps = Modia3D.nepsMPR(T)
29+
neps = Modia3D.nepsType(T)
3030

3131
# checks if segment and plane are parallel
3232
if abs(divisor) < neps # segment is parallel to plane

src/contactDetection/ContactDetectionMPR/mpr.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ end
6666
# checks if centers of shapeA and shapeB are overlapping
6767
# belongs to construction of r0
6868
function checkCentersOfShapesOverlapp(r0::SupportPoint{T}, shapeA::Composition.Object3D, shapeB::Composition.Object3D) where {T}
69-
if norm(r0.p) <= Modia3D.nepsMPR(T)
69+
if norm(r0.p) <= Modia3D.nepsType(T)
7070
error("MPR: Too large penetration (prerequisite of MPR violated). Centers are overlapping. Look at $(Modia3D.fullName(shapeA)) and $(Modia3D.fullName(shapeB)).")
7171
end
7272
end
@@ -76,7 +76,7 @@ function checkIfShapesArePlanar(r0::SupportPoint,r1::SupportPoint,r2::SupportPoi
7676
shapeA::Composition.Object3D,shapeB::Composition.Object3D) where {T}
7777
# r3 is in the direction of plane normal that contains triangle r0-r1-r2
7878
n3 = cross(r1.p-r0.p, r2.p-r0.p)
79-
neps = Modia3D.nepsMPR(T)
79+
neps = Modia3D.nepsType(T)
8080
# the triangle r0-r1-r2 has degenerated into a line segment
8181
if norm(n3) <= neps
8282
# change search direction for r2
@@ -127,7 +127,7 @@ function tetrahedronEncloseOrigin(r0::SupportPoint, r1::SupportPoint,
127127
r2org = r2
128128
r3org = r3
129129
aux = SVector{3, T}(Modia3D.ZeroVector3D)
130-
neps = Modia3D.nepsMPR(T)
130+
neps = Modia3D.nepsType(T)
131131
success = false
132132
for i in 1:niter_max
133133
aux = cross(r1.p-r0.p,r3.p-r0.p)
@@ -162,7 +162,7 @@ end
162162
function constructR4(r0::SupportPoint,r1::SupportPoint,r2::SupportPoint,r3::SupportPoint,
163163
shapeA::Composition.Object3D,shapeB::Composition.Object3D, scale::T) where {T}
164164
n4 = cross(r2.p-r1.p, r3.p-r1.p)
165-
neps = Modia3D.nepsMPR(T)
165+
neps = Modia3D.nepsType(T)
166166
if norm(n4) <= neps
167167
r3 = getSupportPoint(shapeA, shapeB, -r3.n, scale=scale) # change search direction
168168
if abs(dot((r3.p-r1.p),r3.n)) <= neps
@@ -360,7 +360,7 @@ end
360360
function mprGeneral(ch::Composition.ContactDetectionMPR_handler{T}, shapeA::Composition.Object3D, shapeB::Modia3D.Composition.Object3D) where {T}
361361
tol_rel = ch.tol_rel
362362
niter_max = ch.niter_max
363-
neps = Modia3D.nepsMPR(T)
363+
neps = Modia3D.nepsType(T)
364364

365365
########### Phase 1, Minkowski Portal Refinement ###################
366366
# Construction of r0 and initial portal triangle points r1, r2, r3
@@ -418,7 +418,7 @@ end
418418

419419
function mprTwoSpheres(ch::Composition.ContactDetectionMPR_handler{T}, shapeA::Composition.Object3D, shapeB::Modia3D.Composition.Object3D,
420420
sphereA::Shapes.Sphere, sphereB::Shapes.Sphere) where {T}
421-
neps = Modia3D.nepsMPR(T)
421+
neps = Modia3D.nepsType(T)
422422
radiusA = T(sphereA.diameter*0.5)
423423
radiusB = T(sphereB.diameter*0.5)
424424
centroidSphereA = getCentroid(shapeA)

0 commit comments

Comments
 (0)