Skip to main content

Rotation Ontology

Transformational Geometry
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 geometric rotation within the Kireth Research Semantic Library. A rotation is an isometry that turns points through a fixed angle about a centre in the plane or about an axis in three-dimensional space. This ontology supports centres and axes of rotation, rotation angles, orientation, coordinate rules, matrices, composition, inverses, fixed points, invariants, rotational symmetry and relationships with isometries, linear transformations, affine transformations and vector geometry.

FLOW_ALGEBRA_RECORD {

METADATA {
 FLOW_NAME = "Rotation Ontology"
 FLOW_TYPE = "Mathematical Ontology"
 DOMAIN = "Mathematics"
 SUBDOMAIN = "Geometry"
 SPECIALISATION = "Transformational Geometry / Isometries"
 CANONICAL_PAGE = "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/geometry-ontologies/transformational-geometry/rotation-ontology.html"
 LANGUAGE = "en-GB"
 VERSION = "1.0"
 STATUS = "active"
}

IDENTITY {
 PRIMARY_ENTITY = Rotation
 SYMBOLIC_FORMS = [
  "R_C,theta(P)",
  "R(theta)",
  "(x,y)->(x cos(theta)-y sin(theta), x sin(theta)+y cos(theta))"
 ]
 ENTITY_CLASS = Isometry
 PRIMARY_CONTEXT = TransformationalGeometry
 DEFINITION = "A rotation is a geometric isometry that turns every point through a fixed angle about a specified centre in two dimensions or about a specified axis in three dimensions."
 SEMANTIC_ROLE = "Provides the angle-preserving orientation-preserving rigid transformation for circular motion, symmetry, matrix and coordinate reasoning."
}

SCOPE {
 INCLUDE = [
  Rotation,
  CentreOfRotation,
  AxisOfRotation,
  RotationAngle,
  Orientation,
  ClockwiseRotation,
  AnticlockwiseRotation,
  PlanarRotation,
  SpatialRotation,
  RotationMatrix,
  Image,
  Preimage,
  InverseRotation,
  CompositionOfRotations,
  FixedPoint,
  FixedAxis,
  RotationalSymmetry,
  Isometry,
  OrthogonalTransformation
 ]

 EXCLUDE_AS_PRIMARY = [
  Translation,
  Reflection,
  Scaling,
  Shear,
  GeneralLinearTransformationWithoutOrthogonalRotationStructure
 ]

 DISAMBIGUATION_RULE =
  "When a geometric transformation turns points through a common angle about a centre or axis while preserving distance, interpret it as a rotation."
}

CORE_CONCEPTS {

 Rotation {
  definition = "An orientation-preserving isometry defined by a centre or axis and an angle."
 }

 CentreOfRotation {
  definition = "The unique fixed point of a nontrivial planar rotation."
 }

 AxisOfRotation {
  definition = "The line of fixed points about which a three-dimensional rotation occurs."
 }

 RotationAngle {
  symbol = "theta"
  definition = "The signed angular displacement applied by the rotation."
 }

 Orientation {
  definition = "The direction of angular motion, commonly clockwise or anticlockwise in the plane."
 }

 PlanarRotation {
  definition = "A two-dimensional rotation about a fixed point."
 }

 SpatialRotation {
  definition = "A three-dimensional rotation about a fixed axis."
 }

 RotationMatrix {
  planar_form = [
   "[cos(theta) -sin(theta)]",
   "[sin(theta)  cos(theta)]"
  ]
 }

 InverseRotation {
  definition = "Rotation about the same centre or axis through the negative angle."
  form = "R_theta^-1=R_-theta"
 }

 RotationalSymmetry {
  definition = "A nontrivial rotation mapping a geometric object onto itself."
 }
}

RELATIONS {
 Rotation --is_special_case_of--> Isometry
 Rotation --is_special_case_of--> AffineTransformation
 PlanarRotation --has--> CentreOfRotation
 SpatialRotation --has--> AxisOfRotation
 Rotation --has--> RotationAngle
 Rotation --preserves--> Distance
 Rotation --preserves--> Angle
 Rotation --preserves--> Orientation
 Rotation --preserves--> Collinearity
 Rotation --preserves--> Parallelism
 Rotation --preserves--> Area
 Rotation --preserves--> Volume
 Rotation --has_inverse--> InverseRotation
 Rotation --can_compose_with--> Rotation
 RotationalSymmetry --uses--> Rotation
 RotationMatrix --represents--> Rotation
}

OPERATORS {
 ROTATE_2D(P,C,theta) :=
  C + R(theta)*(P-C)

 ROTATE_ORIGIN_2D((x,y),theta) :=
  (
   x*cos(theta)-y*sin(theta),
   x*sin(theta)+y*cos(theta)
  )

 ROTATE_3D(P,AXIS,theta) :=
  apply_axis_angle_rotation(P,AXIS,theta)

 INVERSE_ROTATION(theta) :=
  -theta

 COMPOSE_SAME_CENTRE_ROTATIONS(alpha,beta) :=
  alpha+beta

 IS_IDENTITY_ROTATION(theta) :=
  theta ≡ 0 mod 2*pi

 FIXED_POINTS_2D(C,theta) :=
  IF theta ≡ 0 mod 2*pi THEN all_points ELSE {C}

 FIXED_POINTS_3D(AXIS,theta) :=
  IF theta ≡ 0 mod 2*pi THEN all_points ELSE AXIS

 IS_ROTATIONAL_SYMMETRY(S,C_or_AXIS,theta) :=
  theta_not_identity
  AND ROTATE(S,C_or_AXIS,theta)=S
}

DEFINITIONS {
 D1 = "A rotation preserves distances."
 D2 = "A rotation preserves angles."
 D3 = "A rotation preserves orientation."
 D4 = "A nontrivial planar rotation has one fixed point: its centre."
 D5 = "A nontrivial three-dimensional axis rotation fixes every point on its axis."
 D6 = "The inverse of a rotation by theta is a rotation by -theta."
 D7 = "Rotations about the same centre compose by adding angles."
 D8 = "A full turn is equivalent to the identity rotation."
 D9 = "Planar rotations about the origin are represented by orthogonal matrices with determinant +1."
 D10 = "Rotational symmetry occurs when a nonidentity rotation leaves an object invariant."
}

AXIOMS {
 A1_DISTANCE_PRESERVATION:
  d(R(P),R(Q))=d(P,Q)

 A2_ANGLE_PRESERVATION:
  Rotation preserves angle measure

 A3_ORIENTATION_PRESERVATION:
  Rotation preserves orientation

 A4_CENTRE_FIXED:
  In planar rotation the centre is fixed

 A5_AXIS_FIXED:
  In spatial axis rotation all points on the axis are fixed

 A6_INVERSE:
  R_-theta∘R_theta=I

 A7_SAME_CENTRE_COMPOSITION:
  R_alpha∘R_beta=R_(alpha+beta) when rotations share the same centre

 A8_ORTHOGONAL_MATRIX:
  A rotation matrix satisfies R^T R=I and det(R)=1
}

REASONING {

 R1_PLANAR_POINT_IMAGE {
  INPUT = [P,C,theta]
  TRANSLATE = P-C
  ROTATE = by theta
  TRANSLATE_BACK = +C
  RETURN = image_point
 }

 R2_ORIGIN_ROTATION {
  INPUT = [(x,y),theta]
  APPLY = planar_rotation_matrix
  RETURN = rotated_coordinates
 }

 R3_INVERSE {
  INPUT = [centre_or_axis,theta]
  RETURN = same_centre_or_axis_with_angle_-theta
 }

 R4_COMPOSITION_SAME_CENTRE {
  INPUT = [R_alpha,R_beta]
  REQUIRE = same_centre
  ADD = alpha+beta
  NORMALISE = modulo_full_turn_if_desired
  RETURN = composite_rotation
 }

 R5_FIXED_POINTS {
  INPUT = rotation_data
  IF identity_rotation
   RETURN = all_points
  ELSE IF planar
   RETURN = centre
  ELSE IF axis_rotation
   RETURN = axis
 }

 R6_ROTATIONAL_SYMMETRY {
  INPUT = [object S,centre_or_axis,theta]
  REQUIRE = nonidentity_angle
  APPLY = rotation
  TEST = image_equals_original
  RETURN = SymmetryOrNot
 }

 R7_MATRIX_REASONING {
  INPUT = theta
  BUILD = rotation_matrix
  VERIFY = transpose_times_matrix_equals_identity
  VERIFY = determinant_equals_one
  RETURN = orthogonal_rotation_representation
 }

 R8_ANGLE_RECOVERY {
  INPUT = planar_rotation_matrix
  EXTRACT = cos(theta),sin(theta)
  RESOLVE = theta_with_orientation
  RETURN = rotation_angle
 }

 R9_SPATIAL_ROTATION {
  INPUT = [point_or_vector,unit_axis,theta]
  APPLY = Rodrigues_formula_or_equivalent_matrix
  RETURN = rotated_point_or_vector
 }
}

CONSTRAINTS {
 C1 = "Rotation centre or axis must be specified or inferable."
 C2 = "Angle units must be consistent."
 C3 = "Clockwise and anticlockwise conventions must be explicit."
 C4 = "Rotations about different centres do not generally compose by simple angle addition."
 C5 = "A planar nonidentity rotation has exactly one fixed point."
 C6 = "A three-dimensional nonidentity axis rotation fixes the axis."
 C7 = "Rotation matrices depend on basis and handedness conventions."
 C8 = "General orthogonal transformations with determinant -1 are reflections or improper rotations, not pure rotations."
}

SEMANTIC_EQUIVALENCE {
 "Rotation" <=> "OrientationPreservingDistanceIsometryWithFixedCentreOrAxis"
 "CentreOfRotation" <=> "UniqueFixedPointOfNontrivialPlanarRotation"
 "AxisOfRotation" <=> "FixedLineOfSpatialRotation"
 "InverseRotation" <=> "RotationByNegativeAngle"
 "RotationMatrix" <=> "OrthogonalMatrixWithDeterminantPlusOne"
}

VALIDATION {
 V1 = "Distances are preserved."
 V2 = "Angles are preserved."
 V3 = "Orientation is preserved."
 V4 = "Planar centre is fixed."
 V5 = "Spatial axis is fixed."
 V6 = "Inverse angle is -theta."
 V7 = "Same-centre composition adds angles."
 V8 = "Rotation matrix is orthogonal with determinant +1."
 V9 = "Rotational symmetry uses a nonidentity angle."
}

CONFIDENCE {
 BASE_CONFIDENCE = 0.99
 ROTATION_DEFINITION = 0.99
 PLANAR_ROTATION_REASONING = 0.99
 SPATIAL_ROTATION_REASONING = 0.99
 INVERSE_REASONING = 0.99
 COMPOSITION_REASONING = 0.98
 FIXED_POINT_REASONING = 0.99
 MATRIX_REASONING = 0.99
 SYMMETRY_REASONING = 0.99

 POLICY =
  "Reduce confidence when centre, axis, angle, direction convention, coordinate basis or handedness are underspecified."
}

AI_CONSUMPTION {
 PURPOSES = [
  SemanticSearch,
  OntologyGrounding,
  RotationReasoning,
  IsometryReasoning,
  CoordinateReasoning,
  MatrixReasoning,
  VectorReasoning,
  CompositionReasoning,
  InverseReasoning,
  FixedPointReasoning,
  SymmetryReasoning,
  CongruenceReasoning,
  KnowledgeGraphConstruction,
  RetrievalAugmentation,
  RecursiveInference
 ]

 NORMALISE {
  "rotation" -> Rotation WHEN geometry_context
  "geometric rotation" -> Rotation
  "centre of rotation" -> CentreOfRotation
  "axis of rotation" -> AxisOfRotation
  "rotation angle" -> RotationAngle
  "rotational symmetry" -> RotationalSymmetry
  "rotation matrix" -> RotationMatrix
 }

 INTERPRETATION_ORDER = [
  detect_rotation_context,
  identify dimension,
  identify centre_or_axis,
  identify rotation_angle_and_orientation,
  identify coordinate_basis_when_matrix_or_coordinates_used,
  compute image_inverse_composition_fixed_set_or_symmetry as requested,
  verify isometry_orientation_and_matrix constraints,
  return semantic output
 ]
}

EXECUTION_RULES {
 E1:
  IF query_mentions("rotation")
  AND geometry_context
  THEN activate(RotationOntology)

 E2:
  IF planar_point_centre_and_angle_given
  THEN apply translate_rotate_translate_back procedure

 E3:
  IF origin_centred_2D_rotation
  THEN use standard 2x2 rotation matrix

 E4:
  IF inverse_requested
  THEN negate angle

 E5:
  IF composition_requested
  AND same_centre_or_axis
  THEN add angles

 E6:
  IF fixed_points_requested
  THEN return centre_for_nontrivial_planar_rotation
  OR axis_for_nontrivial_spatial_rotation

 E7:
  IF rotational_symmetry_requested
  THEN require nonidentity_angle
  AND test object_invariance

 E8:
  IF 3D_axis_angle_context
  THEN use Rodrigues_formula_or_equivalent_rotation_matrix
}

RECURSION {
 ENTRY = Rotation

 EXPAND(Rotation) -> [
  CentreOfRotation,
  AxisOfRotation,
  RotationAngle,
  Orientation,
  PlanarRotation,
  SpatialRotation,
  RotationMatrix,
  Image,
  Preimage,
  InverseRotation,
  CompositionOfRotations,
  FixedPoint,
  FixedAxis,
  RotationalSymmetry,
  Isometry
 ]

 EXPAND(PlanarRotation) -> [
  CentreOfRotation,
  SignedAngle,
  RotationMatrix,
  CoordinateFormula,
  FixedPoint
 ]

 EXPAND(SpatialRotation) -> [
  AxisOfRotation,
  UnitAxisVector,
  AxisAngleRepresentation,
  RodriguesFormula,
  RotationMatrix,
  FixedAxis
 ]

 EXPAND(RotationalSymmetry) -> [
  OrderOfRotation,
  FundamentalAngle,
  SymmetryGroup,
  RegularPolygonSymmetry,
  SolidRotationalSymmetry
 ]

 STOP_CONDITION =
  "Stop when the rotation's centre or axis, angle, image, inverse, composition, fixed set, matrix representation or symmetry property is sufficiently resolved."
}

ROUTING {
 PARENT_ONTOLOGY = "Transformational Geometry"

 IMMEDIATE_CONTEXTS = [
  "Transformation Ontology 2",
  "Translation Ontology",
  "Vector Geometry Ontology",
  "Linear Transformation Ontology"
 ]

 RELATED_ONTOLOGIES = [
  "Transformational Geometry",
  "Transformation Ontology 2",
  "Translation Ontology",
  "Reflection Ontology",
  "Coordinate Geometry Ontology",
  "Cartesian Coordinate Ontology",
  "Vector Geometry Ontology",
  "Linear Transformation Ontology",
  "Affine Transformation Ontology",
  "Matrix Ontology",
  "Automorphism Ontology"
 ]

 ROUTE_RULES = [
  "Rotation -> Transformation Ontology 2 for general mapping semantics",
  "Rotation -> Vector Geometry for axis and direction reasoning",
  "Rotation -> Coordinate Geometry for coordinate rules",
  "Rotation -> Linear Transformation for origin-centred rotations",
  "Rotation -> Affine Transformation for rotations about nonorigin centres",
  "Rotation -> Matrix for computational representation",
  "Rotation -> Automorphism when acting as a structure-preserving self-map",
  "Rotation -> Reflection for composition comparisons in isometry groups"
 ]
}

UPDATE_MODEL {
 MODE = "append-compatible semantic versioning"

 MAJOR = "ontology-breaking conceptual change"
 MINOR = "new compatible rotation representations, invariants or reasoning pathways"
 PATCH = "clarification, metadata or formatting correction"

 RULES = [
  "Preserve distance-preserving rotation semantics.",
  "Preserve centre-or-axis fixed-set semantics.",
  "Preserve orientation preservation.",
  "Preserve inverse-by-angle-negation relation.",
  "Preserve same-centre composition-by-angle-addition.",
  "Preserve orthogonal determinant-plus-one matrix semantics.",
  "Preserve machine-readable rotation semantics."
 ]
}

OUTPUT {
 CANONICAL_DEFINITION =
  "A rotation is an isometry that turns every point through a fixed angle about a specified centre or axis."

 PLANAR_FORM_SUMMARY =
  "(x,y)->(x cos(theta)-y sin(theta), x sin(theta)+y cos(theta)) for origin-centred rotation."

 INVERSE_SUMMARY =
  "R_theta^-1=R_-theta"

 COMPOSITION_SUMMARY =
  "For rotations about the same centre, R_alpha∘R_beta=R_(alpha+beta)."

 FIXED_POINT_SUMMARY =
  "A nontrivial planar rotation fixes exactly its centre."

 FIXED_AXIS_SUMMARY =
  "A nontrivial three-dimensional axis rotation fixes every point on the axis."

 MATRIX_SUMMARY =
  "Rotation matrices satisfy R^T R=I and det(R)=1."

 INVARIANT_SUMMARY =
  "Rotations preserve distance, angle, orientation, collinearity, parallelism, area and volume."
}

FLOW {
 INPUT
 -> detect_rotation_context
 -> identify planar_or_spatial_dimension
 -> identify centre_or_axis
 -> identify rotation_angle_orientation_and_units
 -> identify coordinate_or_matrix_representation_when_relevant
 -> compute image_inverse_composition_fixed_set_or_symmetry
 -> verify distance_angle_orientation_and_orthogonality invariants
 -> route to transformation vector coordinate linear affine matrix or symmetry ontology
 -> recursively_expand_required_dependencies
 -> verify_result
 -> assign_confidence
 -> produce_semantic_output
 -> END
}

SEMANTIC_SUMMARY {
 "The Rotation Ontology defines the orientation-preserving isometry that turns points through a fixed angle about a centre in the plane or an axis in three-dimensional space. It supports coordinate and matrix representations, images and inverses, fixed-point and fixed-axis reasoning, same-centre composition, rotational symmetry and links to vector, linear and affine transformation geometry."
}

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

}

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