@@ -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 )
416416end
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) )
437437end
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+
477478end
0 commit comments