rdf4j-postgis  Version 0.1.0.0
IsRightTriangle Class Reference

Checks if the given polygon is a right triangle. More...

Inheritance diagram for IsRightTriangle:
Collaboration diagram for IsRightTriangle:

Public Member Functions

String getURI ()
 
boolean attribute (Geometry geom)
 
boolean isRightAngledTriangle (Coordinate[] coords)
 Checks if a polygon with three coordinates is a right triangle. More...
 
double getLength (Coordinate point1, Coordinate point2)
 Calculates the length of an edge of a triangle. More...
 
Value evaluate (ValueFactory valueFactory, Value... args) throws ValueExprEvaluationException
 

Detailed Description

Checks if the given polygon is a right triangle.

Member Function Documentation

◆ attribute()

boolean attribute ( Geometry  geom)

Reimplemented from GeometricBinaryAttributeFunction.

20  {
21  if (geom instanceof Polygon) {
22  if(geom.getCoordinates().length==4) {
23  return isRightAngledTriangle(geom.getCoordinates());
24  }
25  }
26  return false;
27  }
boolean isRightAngledTriangle(Coordinate[] coords)
Checks if a polygon with three coordinates is a right triangle.
Definition: IsRightTriangle.java:34

References IsRightTriangle.isRightAngledTriangle().

◆ evaluate()

Value evaluate ( ValueFactory  valueFactory,
Value...  args 
) throws ValueExprEvaluationException
inherited
17  {
18  if (args.length != 1) {
19  throw new ValueExprEvaluationException(getURI() + " requires exactly 1 arguments, got " + args.length);
20  }
21 
22  LiteralType l=LiteralRegistry.getLiteral(((Literal)args[0]).getDatatype().toString());
23  System.out.println(l);
24  if(l instanceof VectorLiteral) {
25  Geometry geom=((VectorLiteral)l).read(args[0].stringValue());
26  boolean result = attribute(geom);
27  return valueFactory.createLiteral(result);
28  }
29  throw new ValueExprEvaluationException("Argument given is not a geometry literal");
30 
31  }

References GeometricBinaryAttributeFunction.attribute(), and LiteralRegistry.getLiteral().

Referenced by IsCollectionTest.testGeometryCollectionIsCollection(), HasConnectedInteriorTest.testHasConnectedInteriorFalse(), HasConnectedInteriorTest.testHasConnectedInteriorTrue(), HasDuplicateRingsTest.testHasDuplicateRingsFalse(), HasDuplicateRingsTest.testHasDuplicateRingsTrue(), HasHorizontalCRSTest.testHasHorizontalCRSFalse(), HasHorizontalCRSTest.testHasHorizontalCRSTrue(), HasRepeatedPointsTest.testHasRepeatedPoints(), HasRepeatedPointsTest.testHasRepeatedPoints2(), HasSelfIntersectionsTest.testHasSelfIntersectionsFalse(), HasSelfIntersectionsTest.testHasSelfIntersectionsTrue(), Is3DTest.testIs3DFalse(), IsAcuteTest.testIsAcuteFalse(), IsAcuteTest.testIsAcuteTrue(), IsConvexTest.testIsConvexFalse(), IsConvexTest.testIsConvexTrue(), IsEmptyTest.testIsEmptyFalse(), IsEmptyTest.testIsEmptyTrue(), IsEquilateralTriangleTest.testIsEquilateralTriangleFalse(), IsEquilateralTriangleTest.testIsEquilateralTriangleTrue(), IsIsocelesTriangleTest.testIsIsocelesTriangleFalse(), IsIsocelesTriangleTest.testIsIsocelesTriangleTrue(), IsMeasuredTest.testIsMeasuredFalse(), IsMeasuredTest.testIsMeasuredTrue(), IsNodingValidTest.testIsNodingValuedTrue(), IsObliqueTriangleTest.testIsObliqueTriangleFalse(), IsObtuseTriangleTest.testIsObliqueTriangleFalse(), IsObliqueTriangleTest.testIsObliqueTriangleTrue(), IsObtuseTriangleTest.testIsObliqueTriangleTrue(), IsPlanarTest.testIsPlanarTrue(), IsPolygonCCWTest.testIsPolygonCCWFalse(), IsPolygonCCWTest.testIsPolygonCCWTrue(), IsPolygonCWTest.testIsPolygonCWFalse(), IsPolygonCWTest.testIsPolygonCWTrue(), IsRectangleTest.testIsRectangleFalse(), IsRectangleTest.testIsRectangleTrue(), IsRightTriangleTest.testIsRightTriangleFalse(), IsRightTriangleTest.testIsRightTriangleTrue(), IsSolidTest.testIsSolidFalse(), IsSquareTest.testIsSquareFalse(), IsSquareTest.testIsSquareTrue(), IsTriangleTest.testIsTriangleFalse(), IsTriangleTest.testIsTriangleTrue(), IsValidTest.testIsValidFalse(), IsValidTest.testIsValidTrue(), IsClosedTest.testLineStringClosed(), IsCollectionTest.testLineStringIsCollection(), IsRingTest.testLineStringIsNotRing(), IsRingTest.testLineStringIsRing(), IsClosedTest.testLineStringNotClosed(), IsCollectionTest.testMultiLineStringIsCollection(), IsClosedTest.testMultiLineStringNotClosed(), IsClosedTest.testmultiPointClosed(), IsCollectionTest.testMultiPointIsCollection(), IsCollectionTest.testMultiPolygonIsCollection(), IsClosedTest.testpointClosed(), IsCollectionTest.testPointIsCollection(), IsCollectionTest.testPolygonIsCollection(), SridHasFlippedAxisTest.testSridHasFlippedAxis(), SridIsGeographicTest.testSridIsGeographicFalse(), SridIsGeographicTest.testSridIsGeographicTrue(), SridIsProjectedTest.testSridIsProjectedTrue(), and SridIsVerticalTest.testSridIsVerticalTrue().

◆ getLength()

double getLength ( Coordinate  point1,
Coordinate  point2 
)

Calculates the length of an edge of a triangle.

Parameters
point1the beginning point of the edge
point2the end point of the edge
Returns
the length of the edge
52  {
53  return Math.sqrt((point2.getX()-point1.getX())*(point2.getX()-point1.getX()) + (point2.getY()-point1.getY())*(point2.getY()-point1.getY()));
54  }

Referenced by IsRightTriangle.isRightAngledTriangle().

◆ getURI()

String getURI ( )
15  {
16  return POSTGIS.st_isRightTriangle.stringValue();
17  }

References POSTGIS.st_isRightTriangle.

◆ isRightAngledTriangle()

boolean isRightAngledTriangle ( Coordinate[]  coords)

Checks if a polygon with three coordinates is a right triangle.

Parameters
coordsthe coordinates to be analyzed
Returns
true if the triangle is right angled
34  {
35  Coordinate a=coords[0];
36  Coordinate b=coords[1];
37  Coordinate c=coords[2];
38  Double lengthA = getLength(a,b);
39  Double lengthB = getLength(b,c);
40  Double lengthC = getLength(c,a);
41  return Math.pow(lengthA, 2) + Math.pow(lengthB, 2) == Math.pow(lengthC, 2) ||
42  Math.pow(lengthA, 2) + Math.pow(lengthC, 2) == Math.pow(lengthB, 2) ||
43  Math.pow(lengthC, 2) + Math.pow(lengthB, 2) == Math.pow(lengthA, 2);
44  }
double getLength(Coordinate point1, Coordinate point2)
Calculates the length of an edge of a triangle.
Definition: IsRightTriangle.java:52

References IsRightTriangle.getLength().

Referenced by IsRightTriangle.attribute().