Algorithmic Solutions > LEDA > LEDA Guide > Geometry > Converting between Rational and Floating Point Kernel


Converting between Rational and Floating Point Kernel

Floating point objects can be converted to rational objects, and vice versa. We illustrate conversion for points.

If p is a point or rat_point then point p.to_point(); returns a point.

If p is a point the call is equivalent to the call of the copy constructor, and if p is a rat_point, the Cartesian coordinates of the point returned are the floating point approximations of the Cartesian coordinates of p.

Remark 1: The conversion from rational objects to floating point objects needs to be used whenever an object is to be displayed in a window. If W is a window and p is a point or a rat_point, then W << p.to_point(); draws p in W.

Example:

#include <LEDA/graphics/window.h>
#include <LEDA/geo/rat_point.h>

using namespace leda;

int main()
{ 
  rat_point rp(50,50);

  window W(100,100);
  W.open();
  W << rp.to_point();
  //W << rp; does not work
  W.display();
  W.read_mouse();

  return 0;
}	  

Remark 2: We could write W << p; if the class rat_point provided a conversion operator to point. We opted for the less elegant code, since the use of conversion operators can lead to unexpected side effects.

See also:

Data Types for 2D Geometry

Window


Geometry

Advanced Data types for 2-D geometry

Data Types for 3-D Geometry

Geometry Algorithms

GeoWin




Please send any suggestions, comments or questions to leda@algorithmic-solutions.com
© Copyright 2001-2003, Algorithmic Solutions Software GmbH