CGAL 4.6.1 - 2D and 3D Linear Geometry Kernel
|
Functions | |
template<RingNumberType > | |
void | CGAL::rational_rotation_approximation (const RingNumberType &dirx, const RingNumberType &diry, RingNumberType &sin_num, RingNumberType &cos_num, RingNumberType &denom, const RingNumberType &eps_num, const RingNumberType &eps_den) |
computes integers sin_num , cos_num and denom , such that sin_num /denom approximates the sine of direction \( (\)dirx ,diry \( )\). More... | |
void CGAL::rational_rotation_approximation | ( | const RingNumberType & | dirx, |
const RingNumberType & | diry, | ||
RingNumberType & | sin_num, | ||
RingNumberType & | cos_num, | ||
RingNumberType & | denom, | ||
const RingNumberType & | eps_num, | ||
const RingNumberType & | eps_den | ||
) |
computes integers sin_num
, cos_num
and denom
, such that sin_num
/denom
approximates the sine of direction \( (\)dirx
,diry
\( )\).
The difference between the sine and the approximating rational is bounded by eps_num
/eps_den
.
eps_num
\( \neq0\).Implementation
The approximation is based on Farey sequences as described in the rational rotation method presented by Canny and Ressler at the 8th SoCG 1992. We use a slower version which needs no division operation in the approximation.
CGAL::Aff_transformation_2<Kernel>
#include <CGAL/rational_rotation.h>