public class Triangle extends Object
| Modifier and Type | Field and Description |
|---|---|
Point |
p0
The coordinates of the vertices of the triangle
|
Point |
p1
The coordinates of the vertices of the triangle
|
Point |
p2
The coordinates of the vertices of the triangle
|
| Constructor and Description |
|---|
Triangle(Point p0,
Point p1,
Point p2)
Creates a new triangle with the given vertices.
|
| Modifier and Type | Method and Description |
|---|---|
static Point |
angleBisector(Point a,
Point b,
Point c)
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(Point a,
Point b,
Point c)
Computes the 2D area of a triangle.
|
double |
area3D()
Computes the 3D area of this triangle.
|
static double |
area3D(Point a,
Point b,
Point c)
Computes the 3D area of a triangle.
|
Point |
centroid()
Computes the centroid (centre of mass) of this triangle.
|
static Point |
centroid(Point a,
Point b,
Point c)
Computes the centroid (centre of mass) of a triangle.
|
Point |
circumcentre()
Computes the circumcentre of this triangle.
|
static Point |
circumcentre(Point a,
Point b,
Point c)
Computes the circumcentre of a triangle.
|
Point |
inCentre()
Computes the incentre of this triangle.
|
static Point |
inCentre(Point a,
Point b,
Point c)
Computes the incentre of a triangle.
|
double |
interpolateZ(Point p)
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(Point p,
Point v0,
Point v1,
Point v2)
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(Point a,
Point b,
Point c)
Tests whether a triangle is acute.
|
double |
longestSideLength()
Computes the length of the longest side of this triangle
|
static double |
longestSideLength(Point a,
Point b,
Point c)
Computes the length of the longest side of a triangle
|
static HCoordinate |
perpendicularBisector(Point a,
Point b)
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(Point a,
Point b,
Point c)
Computes the signed 2D area of a triangle.
|
public Point p0
public Point p1
public Point p2
public static Point angleBisector(Point a, Point b, Point c)
a - a vertex of the triangleb - a vertex of the trianglec - a vertex of the trianglepublic static double area(Point a, Point b, Point c)
a - a vertex of the triangleb - a vertex of the trianglec - a vertex of the triangle#signedArea(Coordinate, Coordinate, Coordinate)public static double area3D(Point a, Point b, Point c)
a - a vertex of the triangleb - a vertex of the trianglec - a vertex of the trianglepublic static Point centroid(Point a, Point b, Point c)
The centroid always lies within the triangle.
a - a vertex of the triangleb - a vertex of the trianglec - a vertex of the trianglepublic static Point circumcentre(Point a, Point b, Point 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 triangleb - a vertx of the trianglec - a vertx of the trianglepublic static Point inCentre(Point a, Point b, Point c)
The incentre always lies within the triangle.
a - a vertx of the triangleb - a vertx of the trianglec - a vertx of the trianglepublic static double interpolateZ(Point p, Point v0, Point v1, Point 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 ofv0 - a vertex of a triangle, with a Z ordinatev1 - a vertex of a triangle, with a Z ordinatev2 - a vertex of a triangle, with a Z ordinatepublic static boolean isAcute(Point a, Point b, Point c)
Note: this implementation is not robust for angles very close to 90 degrees.
a - a vertex of the triangleb - a vertex of the trianglec - a vertex of the trianglepublic static double longestSideLength(Point a, Point b, Point c)
a - a vertex of the triangleb - a vertex of the trianglec - a vertex of the trianglepublic static HCoordinate perpendicularBisector(Point a, Point b)
a - a pointb - another pointpublic static double signedArea(Point a, Point b, Point 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#orientationIndex(Coordinate, Coordinate, Coordinate)
for robust orientation calculation.
a - a vertex of the triangleb - a vertex of the trianglec - a vertex of the triangleCGAlgorithms#orientationIndex(Coordinate, Coordinate, Coordinate)public double area()
signedArea()public double area3D()
public Point centroid()
The centroid always lies within the triangle.
public Point circumcentre()
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 Point inCentre()
public double interpolateZ(Point p)
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 ofpublic boolean isAcute()
Note: this implementation is not robust for angles very close to 90 degrees.
public double longestSideLength()
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#orientationIndex(Coordinate, Coordinate, Coordinate)
for robust orientation calculation.
CGAlgorithms#orientationIndex(Coordinate, Coordinate, Coordinate)Copyright © 2015 Revolution Systems Inc.. All rights reserved.