Algorithmic Solutions > LEDA > LEDA Guide > Geometry Algorithms > Minkowski Sums > Example

Example Minkowski Sums

The following program generates two simple polygons P1 and P2 and computes the Minkowski sum GPSUM and the Minkowski difference GPDIFF.

Then it draws P1 in red and P2 in green GPSUM in black and GPDIFF in blue.

On the right there is a screenshot of the program. Clicking on the picture shows the window in original size.

Example of Convex Components
#include <LEDA/core/list.h>
#include <LEDA/geo/rat_point.h>
#include <LEDA/geo/rat_segment.h>
#include <LEDA/geo/rat_gen_polygon.h>
#include <LEDA/graphics/window.h>
#include <LEDA/geo/geo_alg.h>

using namespace leda;

int main()
{
  list<rat_point> L1;
  L1.push(rat_point(0,10)) ;L1.push(rat_point(0,25));
  L1.push(rat_point(5,40)); L1.push(rat_point(25,30));
  L1.push(rat_point(20,10));
  rat_polygon P1(L1);

  list<rat_point> L2;
  L2.push(rat_point(5,0));   L2.push(rat_point(15,35));
  L2.push(rat_point(35,35)); L2.push(rat_point(30,0));
  rat_polygon P2(L2);
 
  rat_gen_polygon GPSUM=MINKOWSKI_SUM(P1,P2);
  rat_gen_polygon GPDIFF=MINKOWSKI_DIFF(P1,P2);

  window W;
  W.init(-45,85,-45);
  W.open(); W.display();
  W.set_line_width(2);

  W.draw_polygon(P1.to_polygon(),red);
  W.draw_polygon(P2.to_polygon(),green);
  W.read_mouse();
  W.draw_polygon(GPSUM.to_gen_polygon());
  W.read_mouse();
  W.draw_polygon(GPDIFF.to_gen_polygon(),blue);
  W.read_mouse();

  W.screenshot("minkowski_sum");

  return 0;
}	          

See also:

Minkowski Sums

Data Types for 2-D Geometry

Windows and Panels

Linear Lists


Geometry Algorithms

Geometry

Graphs and Related Data Types

GeoWin

Number Types


Manual Entries

Manual Page of Geometry Algorithms




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