summaryrefslogtreecommitdiff
path: root/_shared/math/collision.js
blob: 8e4be7d1fb61b459edc09052a8912c40cfae2daa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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)
    }
}