Skip to content

Commit 0ea0e04

Browse files
committed
return type of mpr is Float64 only
1 parent 4f728d5 commit 0ea0e04

File tree

1 file changed

+10
-9
lines changed
  • src/contactDetection/ContactDetectionMPR

1 file changed

+10
-9
lines changed

src/contactDetection/ContactDetectionMPR/mpr.jl

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ function mprGeneral(ch::Composition.ContactDetectionMPR_handler{T}, shapeA::Comp
391391
# e.g. any collision/or distance between two spheres
392392
#println("TC 1")
393393
distance = dot(r1.p,normalize(r0.p))
394-
return (Float64(distance), SVector{3,Float64}(r1.a), SVector{3,Float64}(r1.b), SVector{3,Float64}(r1.n), false, Modia3D.ZeroVector3D, Modia3D.ZeroVector3D, Modia3D.ZeroVector3D, Modia3D.ZeroVector3D, Modia3D.ZeroVector3D, Modia3D.ZeroVector3D)
394+
return (distance, r1.a, r1.b, r1.n, false, SVector{3,T}(Modia3D.ZeroVector3D), SVector{3,T}(Modia3D.ZeroVector3D), SVector{3,T}(Modia3D.ZeroVector3D), SVector{3,T}(Modia3D.ZeroVector3D), SVector{3,T}(Modia3D.ZeroVector3D), SVector{3,T}(Modia3D.ZeroVector3D) )
395395
else
396396
# normalize n2
397397
n2 = n2/n2abs
@@ -412,7 +412,7 @@ function mprGeneral(ch::Composition.ContactDetectionMPR_handler{T}, shapeA::Comp
412412

413413
########### Phase 3, Minkowski Portal Refinement ###################
414414
(distance, r1, r2, r3, r4) = phase3(r0, r1, r2, r3, niter_max, tol_rel, shapeA, shapeB, scale)
415-
return (Float64(distance), SVector{3,Float64}(r4.a), SVector{3,Float64}(r4.b), SVector{3,Float64}(r4.n), true, SVector{3,Float64}(r1.a), SVector{3,Float64}(r1.b), SVector{3,Float64}(r2.a), SVector{3,Float64}(r2.b), SVector{3,Float64}(r3.a), SVector{3,Float64}(r3.b) )
415+
return ( distance, r4.a, r4.b, r4.n, true, r1.a, r1.b, r2.a, r2.b, r3.a, r3.b )
416416
end
417417

418418

@@ -433,7 +433,7 @@ function mprTwoSpheres(ch::Composition.ContactDetectionMPR_handler{T}, shapeA::C
433433
distance = distanceCentroids - radiusA - radiusB
434434
contactPointShapeA = centroidSphereA + normal*radiusA
435435
contactPointShapeB = centroidSphereB - normal*radiusB
436-
return (Float64(distance), SVector{3,Float64}(contactPointShapeA), SVector{3,Float64}(contactPointShapeB), SVector{3,Float64}(normal), false, Modia3D.ZeroVector3D, Modia3D.ZeroVector3D, Modia3D.ZeroVector3D, Modia3D.ZeroVector3D, Modia3D.ZeroVector3D, Modia3D.ZeroVector3D)
436+
return (distance, contactPointShapeA, contactPointShapeB, normal, false, SVector{3,T}(Modia3D.ZeroVector3D), SVector{3,T}(Modia3D.ZeroVector3D), SVector{3,T}(Modia3D.ZeroVector3D), SVector{3,T}(Modia3D.ZeroVector3D), SVector{3,T}(Modia3D.ZeroVector3D), SVector{3,T}(Modia3D.ZeroVector3D) )
437437
end
438438

439439

@@ -454,24 +454,25 @@ function mpr(ch::Composition.ContactDetectionMPR_handler{T}, shapeA::Composition
454454
support1A, support1B, support2A, support2B, support3A, support3B) = mprGeneral(ch, shapeA, shapeB)
455455

456456
if shapeKindA == Modia3D.SphereKind
457-
centroidSphere = SVector{3,Float64}(getCentroid(shapeA))
457+
centroidSphere = getCentroid(shapeA)
458458
sphereA1::Shapes.Sphere = shapeA.shape
459-
radius = sphereA1.diameter*0.5
459+
radius = T(sphereA1.diameter*0.5)
460460
contactPointSphere = centroidSphere + radius*normal
461461
contactPointOtherShape = contactPointSphere + distance*normal
462462
contactPoint1 = contactPointSphere
463463
contactPoint2 = contactPointOtherShape
464464
elseif shapeKindB == Modia3D.SphereKind
465465
normalLocal = -normal
466-
centroidSphere = SVector{3,Float64}(getCentroid(shapeB))
466+
centroidSphere = getCentroid(shapeB)
467467
sphereB1::Shapes.Sphere = shapeB.shape
468-
radius = sphereB1.diameter*0.5
468+
radius = T(sphereB1.diameter*0.5)
469469
contactPointSphere = centroidSphere + radius*normalLocal
470470
contactPointOtherShape = contactPointSphere + distance*normalLocal # distance is negative (otherwise direction of normal must be changed)
471471
contactPoint1 = contactPointOtherShape
472472
contactPoint2 = contactPointSphere
473473
end
474474
end
475-
return (distance, contactPoint1, contactPoint2, normal, supportPointsDefined,
476-
support1A, support1B, support2A, support2B, support3A, support3B)
475+
return (Float64(distance), SVector{3,Float64}(contactPoint1), SVector{3,Float64}(contactPoint2), SVector{3,Float64}(normal), supportPointsDefined,
476+
SVector{3,Float64}(support1A), SVector{3,Float64}(support1B), SVector{3,Float64}(support2A), SVector{3,Float64}(support2B), SVector{3,Float64}(support3A), SVector{3,Float64}(support3B) )
477+
477478
end

0 commit comments

Comments
 (0)