Binary angular measurement
The terms binary angular measurement (BAM)[1] and binary angular measurement system (BAMS)[2] refer to certain methodologies for representing and manipulating angles using binary (base 2) fixed-point arithmetic. The unit of angular measure used in those methods may be called binary radian (brad) or binary degree.
These representation of angles are often used in numerical control and digital signal processing applications, such as robotics, navigation,[3] computer games,[4] and digital sensors.[5] On the other hand, this system is not adequate for situations where the number of full turns must be measured, e.g. to monitor the rotation of vehicle wheels or of leadscrews.
Representation
Unsigned fraction of turn
In this system, an angle is represented by an n-bit unsigned binary number in the sequence 0, ..., 2n−1 that is interpreted as an multiple of 1/2n of a full turn; that is, 360/2n degrees or 2π/2n radians. The number can also be interpreted as a fraction of a full turn between 0 (inclusive) and 1 (exclusive) represented in binary fixed-point format with a scaling factor of 1/2n. Multiplying that fraction by 360° or 2π gives the angle in degrees in the range 0 to 360, or in radians, in the range 0 to 2π, respectively.
For example, with n = 8, the binary integers (00000000)2 (fraction 0.00), (01000000)2 (0.25), (10000000)2 (0.50), and (11000000)2 (0.75) represent the angular measures 0°, 90°, 180°, and 270°, respectively.
The main advantage of this system is that the addition or subtraction of the integer numeric values with the n-bit arithmetic used in most computers produces results that are consistent with the geometry of angles. Namely, the integer result of the operation is automatically reduced modulo 2n, matching the fact that angles that differ by an integer number of full turns are equivalent. Thus one does not need to explicitly test or handle the wrap-around, as one must do when using other representations (such as number of degrees or radians in floating-point).[6]
Signed fraction of turn
Alternatively, the same n bits can also be interpreted as a signed integer in the range −2n−1, ..., 2n−1−1 in the two's complement convention. They can also be interpreted as a fraction of a full turn between −0.5 (inclusive) and +0.5 (exclusive) in signed fixed-point format, with the same scaling factor; or a fraction of half-turn between −1.0 (inclusive) and +1.0 (exclusive) with scaling factor 1/2n−1.
Either way, these numbers can then be interpreted as angles between −180° (inclusive) and +180° (exclusive), with −0.25 meaning −90° and +0.25 meaning +90°. The result of adding or subtracting the numerical values will have the same sign as the result of adding or subtracting angles, once reduced to this range. This interpretation eliminates the need to reduce angles to the range [−π, +π] when computing trigonometric functions.
See also
- Grade, 1/400 of a full turn.
- Binary scaling
- CORDIC, algorithms for trigonometric functions.
- Constructible polygon, including all polygons with 2n sides
References
- "Binary angular measurement". Archived from the original on 2009-12-21.
- "Binary Angular Measurement System". acronyms.thefreedictionary.
- LaPlante, Phillip A. (2004). "Chapter 7.5.3, Binary Angular Measure". Real-Time Systems Design and Analysis.
{{cite book}}
:|website=
ignored (help) - Sanglard, Fabien (2010-01-13). "Doom 1993 code review - Section "Walls"". fabiensanglard.net.
- "Hitachi HM55B Compass Module (#29123)" (PDF). www.hobbyengineering.com. Parallax Digital Compass Sensor (#29123). Parallax, Inc. May 2005. Archived from the original (PDF) on 2011-07-11 – via www.parallax.com.
- Hargreaves, Shawn [in Polish]. "Angles, integers, and modulo arithmetic". blogs.msdn.com. Archived from the original on 2019-06-30. Retrieved 2019-08-05.