diff options
Diffstat (limited to '_shared/math/collision.js')
-rw-r--r-- | _shared/math/collision.js | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/_shared/math/collision.js b/_shared/math/collision.js new file mode 100644 index 0000000..8e4be7d --- /dev/null +++ b/_shared/math/collision.js @@ -0,0 +1,26 @@ +/// <reference path="vec2.js" /> +/// <reference path="line2.js" /> +/// <reference path="circle.js" /> +/// <reference path="mat4.js" /> +/// <reference path="point2.js" /> + +/** + * + * @param {circle} pCircle + * @param {line2} pLine + */ +function lineCircleCollision2(pCircle, pLine) { + return distanceFromPoint2ToLine2(pCircle.position, pLine) <= pCircle.radius; +} + +function getLineCircleCollison2Data(pCircle, pLine) { + const lCollisionNormal = pLine.normal, + lCollisionPoint = addVec2(pCircle.position, scaleVec2(negate2(lCollisionNormal), pCircle.radius)); + + return { + relativeVelocity: subVec2(pCircle.velocity, pLine.velocity), + collisionNormal: lCollisionNormal, + firstPointOfApplication: subVec2(lCollisionPoint, pCircle.position), + secondPointOfApplication: subVec2(lCollisionPoint, pLine.start) + } +}
\ No newline at end of file |