public class Triangle extends Object
| Modifier and Type | Field and Description |
|---|---|
Coordinate |
p0
The coordinates of the vertices of the triangle
|
Coordinate |
p1
The coordinates of the vertices of the triangle
|
Coordinate |
p2
The coordinates of the vertices of the triangle
|
| Constructor and Description |
|---|
Triangle(Coordinate
Creates a new triangle with the given vertices.
|
| Modifier and Type | Method and Description |
|---|---|
static Coordinate |
angleBisector(Coordinate
Computes the point at which the bisector of the angle ABC cuts the segment AC.
|
double |
area()
Computes the 2D area of this triangle.
|
static double |
area(Coordinate
Computes the 2D area of a triangle.
|
double |
area3D()
Computes the 3D area of this triangle.
|
static double |
area3D(Coordinate
Computes the 3D area of a triangle.
|
Coordinate |
centroid()
Computes the centroid (centre of mass) of this triangle.
|
static Coordinate |
centroid(Coordinate
Computes the centroid (centre of mass) of a triangle.
|
Coordinate |
circumcentre()
Computes the circumcentre of this triangle.
|
static Coordinate |
circumcentre(Coordinate
Computes the circumcentre of a triangle.
|
Coordinate |
inCentre()
Computes the incentre of this triangle.
|
static Coordinate |
inCentre(Coordinate
Computes the incentre of a triangle.
|
double |
interpolateZ(Coordinate
Computes the Z-value (elevation) of an XY point on a three-dimensional plane defined by this triangle (whose vertices must have Z-values).
|
static double |
interpolateZ(Coordinate
Computes the Z-value (elevation) of an XY point on a three-dimensional plane defined by a triangle whose vertices have Z-values.
|
boolean |
isAcute()
Tests whether this triangle is acute.
|
static boolean |
isAcute(Coordinate
Tests whether a triangle is acute.
|
double |
longestSideLength()
Computes the length of the longest side of this triangle
|
static double |
longestSideLength(Coordinate
Computes the length of the longest side of a triangle
|
static HCoordinate |
perpendicularBisector(Coordinate
Computes the line which is the perpendicular bisector of the line segment a-b.
|
double |
signedArea()
Computes the signed 2D area of this triangle.
|
static double |
signedArea(Coordinate
Computes the signed 2D area of a triangle.
|
public Coordinatep0
public Coordinatep1
public Coordinatep2
public Triangle(Coordinatep0, Coordinate p1, Coordinate p2)
p0 - a vertex
p1 - a vertex
p2 - a vertex
public static boolean isAcute(Coordinatea, Coordinate b, Coordinate c)
Note: this implementation is not robust for angles very close to 90 degrees.
a - a vertex of the triangle
b - a vertex of the triangle
c - a vertex of the triangle
public static HCoordinateperpendicularBisector(Coordinate a, Coordinate b)
a - a point
b - another point
public static Coordinatecircumcentre(Coordinate a, Coordinate b, Coordinate c)
The circumcentre does not necessarily lie within the triangle. For example, the circumcentre of an obtuse isoceles triangle lies outside the triangle.
This method uses an algorithm due to J.R.Shewchuk which uses normalization to the origin to improve the accuracy of computation. (See Lecture Notes on Geometric Robustness, Jonathan Richard Shewchuk, 1999).
a - a vertx of the triangle
b - a vertx of the triangle
c - a vertx of the triangle
public static CoordinateinCentre(Coordinate a, Coordinate b, Coordinate c)
The incentre always lies within the triangle.
a - a vertx of the triangle
b - a vertx of the triangle
c - a vertx of the triangle
public static Coordinatecentroid(Coordinate a, Coordinate b, Coordinate c)
The centroid always lies within the triangle.
a - a vertex of the triangle
b - a vertex of the triangle
c - a vertex of the triangle
public static double longestSideLength(Coordinatea, Coordinate b, Coordinate c)
a - a vertex of the triangle
b - a vertex of the triangle
c - a vertex of the triangle
public static CoordinateangleBisector(Coordinate a, Coordinate b, Coordinate c)
a - a vertex of the triangle
b - a vertex of the triangle
c - a vertex of the triangle
public static double area(Coordinatea, Coordinate b, Coordinate c)
a - a vertex of the triangle
b - a vertex of the triangle
c - a vertex of the triangle
signedArea(Coordinate, Coordinate, Coordinate)
public static double signedArea(Coordinatea, Coordinate b, Coordinate c)
The signed area value can be used to determine point orientation, but the implementation in this method is susceptible to round-off errors. Use CGAlgorithms for robust orientation calculation.
a - a vertex of the triangle
b - a vertex of the triangle
c - a vertex of the triangle
CGAlgorithms.orientationIndex(Coordinate, Coordinate, Coordinate)
public static double area3D(Coordinatea, Coordinate b, Coordinate c)
a - a vertex of the triangle
b - a vertex of the triangle
c - a vertex of the triangle
public static double interpolateZ(Coordinatep, Coordinate v0, Coordinate v1, Coordinate v2)
This method can be used to interpolate the Z-value of a point inside a triangle (for example, of a TIN facet with elevations on the vertices).
p - the point to compute the Z-value of
v0 - a vertex of a triangle, with a Z ordinate
v1 - a vertex of a triangle, with a Z ordinate
v2 - a vertex of a triangle, with a Z ordinate
public CoordinateinCentre()
public boolean isAcute()
Note: this implementation is not robust for angles very close to 90 degrees.
public Coordinatecircumcentre()
The circumcentre does not necessarily lie within the triangle.
This method uses an algorithm due to J.R.Shewchuk which uses normalization to the origin to improve the accuracy of computation. (See Lecture Notes on Geometric Robustness, Jonathan Richard Shewchuk, 1999).
public Coordinatecentroid()
The centroid always lies within the triangle.
public double longestSideLength()
public double area()
signedArea()
public double signedArea()
The signed area value can be used to determine point orientation, but the implementation in this method is susceptible to round-off errors. Use CGAlgorithms for robust orientation calculation.
CGAlgorithms.orientationIndex(Coordinate, Coordinate, Coordinate)
public double area3D()
public double interpolateZ(Coordinatep)
This method can be used to interpolate the Z-value of a point inside this triangle (for example, of a TIN facet with elevations on the vertices).
p - the point to compute the Z-value of