001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.commons.geometry.euclidean.threed.rotation;
018
019/** Enum defining the possible reference frames for locating axis
020 * positions during a rotation sequence.
021 */
022public enum AxisReferenceFrame {
023
024    /** Defines a relative reference frame for a rotation sequence. Sequences
025     * with this type of reference frame are called <em>intrinsic rotations</em>.
026     *
027     * <p>
028     * When using a relative reference frame, each successive axis
029     * is located relative to the "thing" being rotated and not to some
030     * external frame of reference. For example, say that a rotation sequence
031     * is defined around the {@code x}, {@code y}, and {@code z} axes in
032     * that order. The first rotation will occur around the standard {@code x}
033     * axis. The second rotation, however, will occur around the {@code y}
034     * axis after it has been rotated by the first rotation; we can call this
035     * new axis {@code y'}. Similarly, the third rotation will occur around
036     * {@code z''}, which may or may not match the original {@code z} axis.
037     * A good real-world example of this type of situation is an airplane,
038     * where a pilot makes a sequence of rotations in order, with each rotation
039     * using the airplane's own up/down, left/right, back/forward directions
040     * as the frame of reference.
041     * </p>
042     */
043    RELATIVE,
044
045    /** Defines an absolute reference frame for a rotation sequence. Sequences
046     * with this type of reference frame are called <em>extrinsic rotations</em>.
047     *
048     * <p>
049     * In contrast with the relative reference frame, the absolute reference frame
050     * remains fixed throughout a rotation sequence, with each rotation axis not
051     * affected by the rotations.
052     * </p>
053     */
054    ABSOLUTE
055}