CGAL 5.6.1 - 2D and 3D Linear Geometry Kernel
CGAL::rational_rotation_approximation()

## 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...

## ◆ rational_rotation_approximation()

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 )

#include <CGAL/rational_rotation.h>

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.

Precondition
eps_num != 0.

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>