Skip to content

Commit dc11512

Browse files
committed
Added Triangle.Centroid and Triangle.InCenter methods for determining the centers of a Triangle shape.
1 parent 47e6cff commit dc11512

4 files changed

Lines changed: 56 additions & 1 deletion

File tree

v3/src/checksum.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
var CHECKSUM = {
2-
build: '237de9e0-14b5-11e7-9970-cb460f4880e6'
2+
build: 'a69a1650-14e2-11e7-b8c3-bdb77b9e9c3e'
33
};
44
module.exports = CHECKSUM;

v3/src/geom/triangle/Centroid.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// The three medians (the lines drawn from the vertices to the bisectors of the opposite sides)
2+
// meet in the centroid or center of mass (center of gravity).
3+
// The centroid divides each median in a ratio of 2:1
4+
5+
var Centroid = function (triangle, out)
6+
{
7+
if (out === undefined) { out = { x: 0, y: 0 }; }
8+
9+
out.x = (triangle.x1 + triangle.x2 + triangle.x3) / 3;
10+
out.y = (triangle.y1 + triangle.y2 + triangle.y3) / 3;
11+
12+
return out;
13+
};
14+
15+
module.exports = Centroid;

v3/src/geom/triangle/InCenter.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// The three angle bisectors of a triangle meet in one point called the incenter.
2+
// It is the center of the incircle, the circle inscribed in the triangle.
3+
4+
function getLength (x1, y1, x2, y2)
5+
{
6+
var x = x1 - x2;
7+
var y = y1 - y2;
8+
var magnitude = (x * x) + (y * y);
9+
10+
return Math.sqrt(magnitude);
11+
}
12+
13+
var InCenter = function (triangle, out)
14+
{
15+
if (out === undefined) { out = { x: 0, y: 0 }; }
16+
17+
var x1 = triangle.x1;
18+
var y1 = triangle.y1;
19+
20+
var x2 = triangle.x2;
21+
var y2 = triangle.y2;
22+
23+
var x3 = triangle.x3;
24+
var y3 = triangle.y3;
25+
26+
var d1 = getLength(x3, y3, x2, y2);
27+
var d2 = getLength(x1, y1, x3, y3);
28+
var d3 = getLength(x2, y2, x1, y1);
29+
30+
var p = d1 + d2 + d3;
31+
32+
out.x = (x1 * d1 + x2 * d2 + x3 * d3) / p;
33+
out.y = (y1 * d1 + y2 * d2 + y3 * d3) / p;
34+
35+
return out;
36+
};
37+
38+
module.exports = InCenter;

v3/src/geom/triangle/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
var Triangle = require('./Triangle');
44

5+
Triangle.Centroid = require('./Centroid');
56
Triangle.Contains = require('./Contains');
67
Triangle.ContainsPoint = require('./ContainsPoint');
8+
Triangle.InCenter = require('./InCenter');
79

810
module.exports = Triangle;

0 commit comments

Comments
 (0)