File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ // Based on code by Matt DesLauriers
2+ // https://github.com/mattdesl/line-circle-collision/blob/master/LICENSE.md
3+
4+ var Contains = require ( '../circle/Contains' ) ;
5+
6+ var tmp = { x : 0 , y : 0 } ;
7+
8+ var LineToCircle = function ( line , circle , nearest )
9+ {
10+ if ( nearest === undefined ) { nearest = tmp ; }
11+
12+ if ( Contains ( circle , line . x1 , line . y1 ) )
13+ {
14+ nearest . x = line . x1 ;
15+ nearest . y = line . y1 ;
16+
17+ return true ;
18+ }
19+
20+ if ( Contains ( circle , line . x2 , line . y2 ) )
21+ {
22+ nearest . x = line . x2 ;
23+ nearest . y = line . y2 ;
24+
25+ return true ;
26+ }
27+
28+ var dx = line . x2 - line . x1 ;
29+ var dy = line . y2 - line . y1 ;
30+
31+ var lcx = circle . x - line . x1 ;
32+ var lcy = circle . y - line . y1 ;
33+
34+ // project lc onto d, resulting in vector p
35+ var dLen2 = ( dx * dx ) + ( dy * dy ) ;
36+ var px = dx ;
37+ var py = dy ;
38+
39+ if ( dLen2 > 0 )
40+ {
41+ var dp = ( ( lcx * dx ) + ( lcy * dy ) ) / dLen2 ;
42+
43+ px *= dp ;
44+ py *= dp ;
45+ }
46+
47+ nearest . x = line . x1 + px ;
48+ nearest . y = line . y1 + py ;
49+
50+ // len2 of p
51+ var pLen2 = ( px * px ) + ( py * py ) ;
52+
53+ return (
54+ pLen2 <= dLen2 &&
55+ ( ( px * dx ) + ( py * dy ) ) >= 0 &&
56+ Contains ( circle , nearest . x , nearest . y )
57+ ) ;
58+ } ;
59+
60+ module . exports = LineToCircle ;
Original file line number Diff line number Diff line change 1+ // Phaser.Geom.Intersects
12
23module . exports = {
34
45 CircleToCircle : require ( './CircleToCircle' ) ,
56 CircleToRectangle : require ( './CircleToRectangle' ) ,
67 GetRectangleIntersection : require ( './GetRectangleIntersection' ) ,
8+ LineToCircle : require ( './LineToCircle' ) ,
79 LineToLine : require ( './LineToLine' ) ,
810 LineToRectangle : require ( './LineToRectangle' ) ,
911 PointToLine : require ( './PointToLine' ) ,
You can’t perform that action at this time.
0 commit comments