Skip to main content

Angle Measurement Ontology

Geometric Measurement
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 12 September 2026
Audio Overview
AI INTERPRETATION NOTE
This Flow Algebra defines the mathematical ontology of angle measurement within the Kireth Research Semantic Library. Angle measurement quantifies rotation or directional separation between rays, lines, vectors, curves and geometric features. This ontology supports radians, degrees, gradians, directed and undirected angles, acute/right/obtuse/reflex classifications, central and inscribed angles, vector angles, coordinate methods, angular conversion, trigonometric relationships, orientation, scaling invariance, precision and relationships with geometry, trigonometry and measurement units.

FLOW_ALGEBRA_RECORD {

METADATA {
 FLOW_NAME = "Angle Measurement Ontology"
 FLOW_TYPE = "Mathematical Ontology"
 DOMAIN = "Mathematics"
 SUBDOMAIN = "Geometry"
 SPECIALISATION = "Geometric Measurement / Angle Measurement"
 CANONICAL_PAGE = "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/geometry-ontologies/geometric-measurement/angle-measurement-ontology.html"
 LANGUAGE = "en-GB"
 VERSION = "1.0"
 STATUS = "active"
}

IDENTITY {
 PRIMARY_ENTITY = AngleMeasurement
 SYMBOLIC_FORMS = [
  "theta",
  "angle ABC",
  "rad",
  "deg"
 ]
 ENTITY_CLASS = AngularGeometricMeasure
 PRIMARY_CONTEXT = GeometricMeasurement
 DEFINITION = "Angle measurement assigns a quantitative magnitude to the rotation or directional separation between rays, lines, vectors or geometric directions."
 SEMANTIC_ROLE = "Provides the quantitative framework for angular size, orientation, trigonometric reasoning, coordinate geometry, rotation and unit conversion."
}

SCOPE {
 INCLUDE = [
  AngleMeasurement,
  Angle,
  DirectedAngle,
  UndirectedAngle,
  Radian,
  Degree,
  Gradian,
  Revolution,
  AcuteAngle,
  RightAngle,
  ObtuseAngle,
  StraightAngle,
  ReflexAngle,
  FullAngle,
  ComplementaryAngles,
  SupplementaryAngles,
  CentralAngle,
  InscribedAngle,
  VectorAngle,
  AngleBetweenLines,
  AngleBetweenVectors,
  AngleBetweenPlanes,
  PolarAngle,
  BearingAngle,
  AngularConversion,
  TrigonometricAngle,
  PrincipalAngle,
  CoterminalAngle,
  MeasurementPrecision,
  ErrorBound
 ]

 EXCLUDE_AS_PRIMARY = [
  SolidAngleUnlessExplicit,
  PhaseAngleWithoutGeometricContext,
  ComplexArgumentUnlessExplicitlyGeometric,
  PhysicalAngularVelocity
 ]

 DISAMBIGUATION_RULE =
  "When angle refers to geometric rotation, separation of rays or directions, vector orientation, line inclination, central or inscribed angle, interpret it as geometric angle measurement."
}

CORE_CONCEPTS {

 AngleMeasurement {
  definition = "A numerical measure of rotational separation."
 }

 Radian {
  symbol = "rad"
  definition = "The angle subtended at the centre of a circle by an arc equal in length to the radius."
 }

 Degree {
  symbol = "deg"
  definition = "One three-hundred-and-sixtieth of a full revolution."
 }

 Gradian {
  symbol = "gon"
  definition = "One four-hundredth of a full revolution."
 }

 DirectedAngle {
  definition = "An angle carrying orientation, often interpreted modulo a full turn."
 }

 UndirectedAngle {
  definition = "A non-oriented angular separation, commonly restricted to a principal range."
 }

 AcuteAngle {
  condition = "0 < theta < pi/2"
 }

 RightAngle {
  relation = "theta=pi/2=90 degrees"
 }

 ObtuseAngle {
  condition = "pi/2 < theta < pi"
 }

 StraightAngle {
  relation = "theta=pi=180 degrees"
 }

 ReflexAngle {
  condition = "pi < theta < 2*pi"
 }

 FullAngle {
  relation = "theta=2*pi=360 degrees"
 }

 VectorAngle {
  definition = "The angle determined from the inner product of two nonzero vectors."
 }
}

RELATIONS {
 AngleMeasurement --is_measure_of--> RotationOrDirectionalSeparation
 Radian --is_unit_of--> AngleMeasurement
 Degree --is_unit_of--> AngleMeasurement
 Gradian --is_unit_of--> AngleMeasurement
 Revolution --equals--> FullAngle
 AcuteAngle --is_special_case_of--> Angle
 RightAngle --is_special_case_of--> Angle
 ObtuseAngle --is_special_case_of--> Angle
 ReflexAngle --is_special_case_of--> Angle
 ComplementaryAngles --sum_to--> RightAngle
 SupplementaryAngles --sum_to--> StraightAngle
 CentralAngle --subtends--> Arc
 InscribedAngle --subtends--> Arc
 VectorAngle --is_derived_from--> InnerProduct
 AngleBetweenLines --can_be_derived_from--> DirectionVectors
 PolarAngle --is_measured_from--> ReferenceAxis
 AngularConversion --maps_between--> AngleUnits
}

OPERATORS {
 DEGREES_TO_RADIANS(theta_deg) :=
  theta_deg*pi/180

 RADIANS_TO_DEGREES(theta_rad) :=
  theta_rad*180/pi

 GRADIANS_TO_RADIANS(theta_gon) :=
  theta_gon*pi/200

 RADIANS_TO_GRADIANS(theta_rad) :=
  theta_rad*200/pi

 NORMALISE_DIRECTED_ANGLE(theta) :=
  theta modulo 2*pi

 PRINCIPAL_UNDIRECTED_ANGLE(theta) :=
  value_in_[0,pi]

 VECTOR_ANGLE(u,v) :=
  arccos((u dot v)/(norm(u)*norm(v)))
  WHEN u!=0 AND v!=0

 DIRECTED_VECTOR_ANGLE_2D(u,v) :=
  atan2(det(u,v),u dot v)

 LINE_ANGLE(m1,m2) :=
  arctan(abs((m2-m1)/(1+m1*m2)))
  WHEN denominator_nonzero
  WITH vertical_case_handled_separately

 CENTRAL_ANGLE_FROM_ARC(s,r) :=
  s/r
  WHEN theta_in_radians AND r>0

 ARC_LENGTH_FROM_ANGLE(r,theta_rad) :=
  r*theta_rad

 SECTOR_AREA_FROM_ANGLE(r,theta_rad) :=
  0.5*r^2*theta_rad

 COMPLEMENT(theta) :=
  pi/2-theta

 SUPPLEMENT(theta) :=
  pi-theta
}

DEFINITIONS {
 D1 = "A full revolution equals 2*pi radians."
 D2 = "A full revolution equals 360 degrees."
 D3 = "A full revolution equals 400 gradians."
 D4 = "Radians are dimensionless in SI dimensional analysis but semantically represent angle."
 D5 = "Vector-angle formulas require nonzero vectors."
 D6 = "Directed angles depend on orientation convention."
 D7 = "Undirected line angles usually select the smaller angular separation."
 D8 = "Central angle in radians equals arc length divided by radius."
 D9 = "Complementary angles sum to 90 degrees."
 D10 = "Supplementary angles sum to 180 degrees."
}

AXIOMS {
 A1_FULL_ROTATION:
  2*pi radians = 360 degrees = 400 gradians

 A2_RADIAN_ARC:
  theta=s/r for central angle theta in radians

 A3_VECTOR_INNER_PRODUCT:
  u dot v = ||u|| ||v|| cos(theta)

 A4_RIGHT_ANGLE:
  Perpendicular Euclidean directions have angle pi/2

 A5_DIRECTED_PERIODICITY:
  Directed angles differing by integer multiples of 2*pi are coterminal

 A6_COMPLEMENT:
  Complementary angles sum to pi/2

 A7_SUPPLEMENT:
  Supplementary angles sum to pi

 A8_SCALE_INVARIANCE:
  Uniform similarity scaling does not change angle measure
}

REASONING {

 R1_ANGLE_CLASSIFICATION {
  INPUT = angle_value_and_unit
  CONVERT = to_radians_if_needed
  NORMALISE = according_to_directed_or_undirected_context
  CLASSIFY = zero_acute_right_obtuse_straight_reflex_or_full
  RETURN = angle_class
 }

 R2_UNIT_CONVERSION {
  INPUT = value_source_unit_target_unit
  CONVERT = through_radians_or_exact_ratio
  RETURN = converted_angle
 }

 R3_VECTOR_ANGLE {
  INPUT = nonzero_vectors_u_v
  COMPUTE = dot_product
  COMPUTE = norms
  CLAMP = numerical_cosine_to_[-1,1] when approximate
  COMPUTE = arccos
  RETURN = angle
 }

 R4_DIRECTED_2D_ANGLE {
  INPUT = vectors_u_v
  COMPUTE = determinant_and_dot
  APPLY = atan2
  NORMALISE = desired_interval
  RETURN = directed_angle
 }

 R5_LINE_ANGLE {
  INPUT = line_directions_or_slopes
  PREFER = direction_vector_method_for_vertical_robustness
  COMPUTE = principal_angle
  RETURN = line_angle
 }

 R6_CENTRAL_ARC {
  INPUT = two_of_[radius_arc_length_angle]
  APPLY = s=r*theta
  REQUIRE = radians_for_direct_formula
  SOLVE = missing_quantity
  RETURN = result
 }

 R7_COMPLEMENT_SUPPLEMENT {
  INPUT = angle
  IF complement_requested
   COMPUTE = pi/2-theta
  ELSE IF supplement_requested
   COMPUTE = pi-theta
  RETURN = requested_angle
 }

 R8_TRIGONOMETRIC_RECOVERY {
  INPUT = sine_cosine_tangent_or_triangle_data
  IDENTIFY = quadrant_or_principal_range
  APPLY = inverse_trigonometric_function
  RESOLVE = ambiguity
  RETURN = angle
 }

 R9_PRECISION {
  INPUT = approximate_angle
  TRACK = decimal_places_significant_figures_or_error_bound
  RETURN = precision_aware_angle
 }
}

CONSTRAINTS {
 C1 = "Angle units must be explicit when formulas depend on radians."
 C2 = "Degrees and radians must not be mixed without conversion."
 C3 = "Vector-angle formulas are undefined for zero vectors."
 C4 = "arccos returns a principal angle and does not encode orientation."
 C5 = "atan2 requires an orientation convention."
 C6 = "Line-angle calculations must handle vertical lines robustly."
 C7 = "Inverse trigonometric functions may produce multiple geometric solutions."
 C8 = "Directed and undirected angles must not be conflated."
 C9 = "Uniform scale does not alter angle."
 C10 = "Approximate trigonometric inputs can create numerical domain errors near +/-1."
}

SEMANTIC_EQUIVALENCE {
 "AngleMeasurement" <=> "AngularMeasure"
 "Radian" <=> "SICompatibleAngularUnit"
 "Degree" <=> "OneOver360Revolution"
 "RightAngle" <=> "QuarterTurn"
 "StraightAngle" <=> "HalfTurn"
 "FullAngle" <=> "FullRevolution"
 "CoterminalAngle" <=> "AngleDifferingByIntegerFullTurns"
}

VALIDATION {
 V1 = "Angle unit is identified."
 V2 = "Radian-dependent formulas convert units first."
 V3 = "Vector norms are nonzero."
 V4 = "Cosine argument is within [-1,1] numerically."
 V5 = "Directed-angle orientation convention is consistent."
 V6 = "Classification interval matches selected normalisation."
 V7 = "Complement and supplement remain within intended geometric context."
 V8 = "Inverse-trigonometric ambiguity is resolved."
 V9 = "Precision status is preserved."
}

CONFIDENCE {
 BASE_CONFIDENCE = 0.99
 ANGLE_MEASUREMENT_DEFINITION = 0.99
 UNIT_CONVERSION_REASONING = 0.99
 VECTOR_ANGLE_REASONING = 0.99
 DIRECTED_ANGLE_REASONING = 0.98
 LINE_ANGLE_REASONING = 0.99
 CENTRAL_ANGLE_REASONING = 0.99
 TRIGONOMETRIC_RECOVERY_REASONING = 0.98
 PRECISION_REASONING = 0.98

 POLICY =
  "Reduce confidence when angle unit, directed-versus-undirected interpretation, orientation convention, quadrant, vector nonzeroness or approximation precision are underspecified."
}

AI_CONSUMPTION {
 PURPOSES = [
  SemanticSearch,
  OntologyGrounding,
  AngleMeasurementReasoning,
  GeometricMeasurementReasoning,
  DegreeRadianConversion,
  AngleClassification,
  VectorAngleReasoning,
  LineAngleReasoning,
  CentralAngleReasoning,
  TrigonometricReasoning,
  RotationReasoning,
  CoordinateGeometryReasoning,
  UnitConversionReasoning,
  KnowledgeGraphConstruction,
  RetrievalAugmentation,
  RecursiveInference
 ]

 NORMALISE {
  "angle measurement" -> AngleMeasurement
  "angle" -> Angle WHEN geometry_context
  "radian" -> Radian
  "degree" -> Degree
  "gradian" -> Gradian
  "right angle" -> RightAngle
  "straight angle" -> StraightAngle
  "reflex angle" -> ReflexAngle
  "vector angle" -> VectorAngle
  "directed angle" -> DirectedAngle
  "coterminal angle" -> CoterminalAngle
 }

 INTERPRETATION_ORDER = [
  detect_angle_measurement_context,
  identify rays_lines_vectors_circle_or_rotation context,
  identify units_direction_orientation_and_principal_range,
  classify conversion_measurement_vector_line_central_or_trigonometric goal,
  apply valid angular formula,
  normalise result according_to_context,
  verify unit_orientation_domain_and_precision constraints,
  return semantic output
 ]
}

EXECUTION_RULES {
 E1:
  IF query_mentions("angle measurement")
  OR geometry_context_with_degrees_radians_or_angular_separation
  THEN activate(AngleMeasurementOntology)

 E2:
  IF degree_radian_conversion_requested
  THEN use exact_pi ratios

 E3:
  IF vector_angle_requested
  THEN require nonzero_vectors
  AND use dot_product_formula

 E4:
  IF directed_2D_angle_requested
  THEN use atan2(det,dot)

 E5:
  IF angle_between_lines_requested
  THEN prefer direction_vectors_over_slope_only method

 E6:
  IF central_angle_arc_length_problem
  THEN use s=r*theta with theta_in_radians

 E7:
  IF inverse_trigonometric_reasoning
  THEN resolve principal_value_and_quadrant ambiguity

 E8:
  IF uniform_similarity_scaling
  THEN preserve angle_measure

 E9:
  IF approximate_numeric_input
  THEN apply safe_clamping_and_precision tracking
}

RECURSION {
 ENTRY = AngleMeasurement

 EXPAND(AngleMeasurement) -> [
  Angle,
  DirectedAngle,
  UndirectedAngle,
  Radian,
  Degree,
  Gradian,
  Revolution,
  AcuteAngle,
  RightAngle,
  ObtuseAngle,
  StraightAngle,
  ReflexAngle,
  FullAngle,
  ComplementaryAngles,
  SupplementaryAngles,
  CentralAngle,
  InscribedAngle,
  VectorAngle,
  AngleBetweenLines,
  AngleBetweenPlanes,
  PolarAngle,
  CoterminalAngle,
  TrigonometricAngle,
  MeasurementPrecision
 ]

 EXPAND(AngularUnits) -> [
  Radian,
  Degree,
  Gradian,
  Revolution,
  AngularConversion
 ]

 EXPAND(VectorAngle) -> [
  DotProduct,
  Determinant,
  Orientation,
  Arccos,
  Atan2
 ]

 EXPAND(CircleAngle) -> [
  CentralAngle,
  InscribedAngle,
  ArcLength,
  SectorArea
 ]

 STOP_CONDITION =
  "Stop when the requested angle, unit, classification, orientation, trigonometric relation, exactness and precision status are sufficiently resolved."
}

ROUTING {
 PARENT_ONTOLOGY = "Geometric Measurement"

 IMMEDIATE_CONTEXTS = [
  "Geometric Measurement",
  "Angle Ontology",
  "Trigonometry Ontology",
  "Vector Geometry Ontology"
 ]

 RELATED_ONTOLOGIES = [
  "Geometric Measurement",
  "Angle Ontology",
  "Trigonometry Ontology",
  "Sine Ontology",
  "Cosine Ontology",
  "Tangent Ontology",
  "Inverse Trigonometric Function Ontology",
  "Unit Circle Ontology",
  "Triangle Trigonometry Ontology",
  "Vector Geometry Ontology",
  "Coordinate Geometry Ontology",
  "Circle Ontology",
  "Rotation Ontology",
  "Measurement & Units Ontologies"
 ]

 ROUTE_RULES = [
  "Angle Measurement -> Geometric Measurement for parent quantitative semantics",
  "Angle Measurement -> Angle Ontology for geometric angle structure",
  "Angle Measurement -> Trigonometry for sine, cosine and tangent relationships",
  "Angle Measurement -> Vector Geometry for dot-product and determinant methods",
  "Angle Measurement -> Coordinate Geometry for slopes and polar angles",
  "Angle Measurement -> Circle for central, inscribed and arc relationships",
  "Angle Measurement -> Rotation for directed angular transformation",
  "Angle Measurement -> Measurement & Units for degree-radian-gradian conversion"
 ]
}

UPDATE_MODEL {
 MODE = "append-compatible semantic versioning"

 MAJOR = "ontology-breaking conceptual change"
 MINOR = "new compatible angular units, classifications, formulas or reasoning pathways"
 PATCH = "clarification, metadata or formatting correction"

 RULES = [
  "Preserve angular-measure semantics.",
  "Preserve exact degree-radian conversion.",
  "Preserve directed-versus-undirected distinction.",
  "Preserve radian requirement for arc and sector formulas.",
  "Preserve vector nonzero requirement.",
  "Preserve periodic coterminal-angle semantics.",
  "Preserve similarity-scale invariance.",
  "Preserve machine-readable angle-measurement semantics."
 ]
}

OUTPUT {
 CANONICAL_DEFINITION =
  "Angle measurement quantifies rotational or directional separation between rays, lines, vectors or geometric directions."

 FULL_TURN_SUMMARY =
  "2*pi radians = 360 degrees = 400 gradians."

 CONVERSION_SUMMARY =
  "theta_rad=theta_deg*pi/180 and theta_deg=theta_rad*180/pi."

 RIGHT_ANGLE_SUMMARY =
  "A right angle is pi/2 radians or 90 degrees."

 STRAIGHT_ANGLE_SUMMARY =
  "A straight angle is pi radians or 180 degrees."

 VECTOR_SUMMARY =
  "For nonzero vectors, theta=arccos((u dot v)/(||u||||v||))."

 DIRECTED_SUMMARY =
  "In two dimensions, directed angle can be computed with atan2(det(u,v),u dot v)."

 ARC_SUMMARY =
  "For a central angle in radians, theta=s/r."

 SCALE_SUMMARY =
  "Uniform similarity scaling preserves angle measure."
}

FLOW {
 INPUT
 -> detect_angle_measurement_context
 -> identify geometric_objects_units_direction_orientation_scale_and_precision
 -> classify conversion_angle_type_vector_line_circle_rotation_or_trigonometric goal
 -> select valid_angular_formula
 -> convert_to_required_units
 -> compute_and_normalise angle
 -> verify domain_orientation_unit_principal_range_and_precision constraints
 -> route to geometric_measurement angle trigonometry vector coordinate circle rotation_or_units ontology
 -> recursively_expand_required_dependencies
 -> verify_result
 -> assign_confidence
 -> produce_semantic_output
 -> END
}

SEMANTIC_SUMMARY {
 "The Angle Measurement Ontology defines quantitative angular geometry and supports radians, degrees, gradians, directed and undirected angles, geometric angle classes, vector and line angles, central-angle and arc relationships, trigonometric recovery, coterminal angles, unit conversion, scale invariance and precision-aware reasoning."
}

FLOW_HASH {
 METHOD = "semantic-content-identity"
 ID = "KIRETH-MATH-GEOMETRY-ANGLE-MEASUREMENT-ONTOLOGY-V1"
}

}

END_FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ