Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r62301 - in trunk/libs/polygon: . doc doc/GTL_boostcon_draft03_files doc/images doc/tutorial test
From: lucanus.j.simonson_at_[hidden]
Date: 2010-05-28 13:17:40


Author: ljsimons
Date: 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
New Revision: 62301
URL: http://svn.boost.org/trac/boost/changeset/62301

Log:
initial merge to trunk
Added:
   trunk/libs/polygon/
   trunk/libs/polygon/Jamroot (contents, props changed)
   trunk/libs/polygon/doc/
   trunk/libs/polygon/doc/GTL_boostcon2009.pdf (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/buttons.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/filelist.xml (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/frame.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/fullscreen.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master01.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master03.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master03.xml (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master03_stylesheet.css (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/outline.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/pres.xml (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/preview.wmf (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/script.js (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0001.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0001_image001.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0001_image002.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0002.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0002_image003.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0002_image004.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image005.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image006.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image007.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image008.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image009.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image010.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image011.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image012.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image014.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image015.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image016.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image017.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image018.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image019.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image020.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image021.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image022.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image023.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image024.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image025.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image026.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image027.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image028.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image029.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0005.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0005_image030.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0005_image031.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006.xml (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image032.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image033.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image034.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image035.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image036.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image037.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image038.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image039.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image040.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image041.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image042.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image043.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image044.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image045.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image046.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image047.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image048.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image049.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image050.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image051.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image052.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image053.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image054.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image055.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image056.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image057.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image058.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image059.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image060.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image061.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image062.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image063.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image064.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image065.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image066.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image067.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image068.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image069.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image070.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image071.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image072.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image073.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image074.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image075.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image076.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image077.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image078.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image079.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image080.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image081.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0007.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0007_image082.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0010.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0010_image083.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image084.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image085.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image086.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image087.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image088.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image089.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image090.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image091.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image092.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image093.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image094.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image095.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image096.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image097.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image098.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image099.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image100.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image101.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image102.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image103.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image104.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image105.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image106.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image107.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image108.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image109.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image110.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image111.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image112.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image113.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image114.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image115.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image116.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image117.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image118.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0014.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0015.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0016.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0018.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019_image119.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019_image120.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019_image121.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019_image122.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image123.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image124.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image125.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image126.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image127.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image128.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image129.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image130.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image131.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image132.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image133.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image134.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image135.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image136.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image137.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image138.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image139.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image140.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image141.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image142.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image143.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image144.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image145.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image146.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image147.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image148.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image149.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image150.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image151.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image152.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image153.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image154.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image155.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image156.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image157.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image158.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image159.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image160.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image161.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image162.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image163.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image164.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image165.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image166.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image167.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image168.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image169.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image170.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image171.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image172.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image173.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image174.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image175.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image176.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image177.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image178.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image179.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image180.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image181.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image182.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image183.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image184.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image185.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image186.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image187.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image188.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image189.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image190.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image191.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image192.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image193.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image194.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image195.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image196.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image197.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image198.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image199.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image200.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image201.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image202.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image203.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image204.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image205.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image206.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image207.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image208.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image209.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image210.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image211.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image212.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image213.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image214.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image215.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image216.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image217.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image218.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image219.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image220.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image221.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image222.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image223.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image224.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image225.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image226.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image227.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image228.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image229.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image230.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image231.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image232.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image233.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image234.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image235.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image236.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image237.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image238.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image239.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image240.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image241.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image242.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image243.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image244.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image245.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image246.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image247.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image248.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image249.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image250.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image251.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image252.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image253.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image254.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image255.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image256.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image257.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image258.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image259.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image260.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image261.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image262.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image263.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image264.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image265.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image266.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image267.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image268.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image269.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image270.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image271.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image272.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image273.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image274.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image275.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image276.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image277.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image278.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image279.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image280.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image281.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image282.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image283.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image284.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image285.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image286.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image287.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image288.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image289.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image290.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image291.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image292.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image293.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image294.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image295.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image296.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image297.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image298.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image299.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image300.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image301.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image302.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image303.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image304.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image305.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image306.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image307.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image308.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image309.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image310.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image311.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image312.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image313.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image314.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image315.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image316.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image317.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image318.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image319.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image320.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image321.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image322.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image323.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image324.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image325.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image326.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image327.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image328.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image329.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image330.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image331.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image332.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image333.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image334.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image335.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image336.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image337.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image338.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image339.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image340.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image341.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image342.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image343.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image344.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image345.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image346.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image347.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image348.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image349.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image350.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image351.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image352.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image353.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image354.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image355.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image356.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image357.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image358.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image359.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image360.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image361.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image362.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image363.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image364.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image365.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image366.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image367.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image368.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image369.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image370.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image371.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image372.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image373.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image374.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image375.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image376.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image377.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image378.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image379.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image380.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image381.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image382.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image383.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image384.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image385.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image386.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image387.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image388.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image389.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image390.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image391.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image392.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image393.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image394.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image395.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image396.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image397.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image398.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image399.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image400.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image401.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image402.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image403.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image404.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image405.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image406.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image407.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image408.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image409.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image410.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image411.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image412.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image413.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image414.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image415.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image416.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image417.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image418.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image419.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image420.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image421.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image422.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image423.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image424.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image425.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image426.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image427.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0038.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0038_image428.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0038_image429.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0039.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0040.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0040_image439.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0040_image440.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0041.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042_image441.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042_image442.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042_image443.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042_image444.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044_image450.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044_image451.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044_image452.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044_image453.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044_image454.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0045.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0045_image445.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0046.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0046_image455.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0046_image456.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0047.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0047.xml (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0047_image457.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0047_image458.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048.xml (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048_image460.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048_image461.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048_image462.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0049.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0049.xml (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0049_image459.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0050.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0052.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0053.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0054.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0055.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0055_image464.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0058.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059.xml (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059_image465.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059_image466.png (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059_image467.jpg (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0060.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0061.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0062.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0062_image468.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0062_image469.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0062_image470.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image430.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image431.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image432.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image433.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image434.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image435.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image436.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image437.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image438.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065_image446.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065_image447.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065_image448.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065_image449.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0066.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0066_image463.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0067.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0067_image013.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0068.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0069.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0070.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0071.htm (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0071_image471.gif (contents, props changed)
   trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0073.htm (contents, props changed)
   trunk/libs/polygon/doc/analysis.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_connectivity_extraction.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_connectivity_extraction_45.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_connectivity_extraction_90.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_connectivity_extraction_usage.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_coordinate_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_custom_point.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_custom_polygon.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_custom_polygon_set.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_design_overview.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_interval_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_isotropy.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_minkowski_tutorial.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_point_3d_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_point_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_point_usage.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_45_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_45_set_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_45_with_holes_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_90_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_90_set_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_90_with_holes_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_set_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_set_usage.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_usage.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_polygon_with_holes_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_property_merge.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_property_merge_45.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_property_merge_90.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_property_merge_usage.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_rectangle_concept.htm (contents, props changed)
   trunk/libs/polygon/doc/gtl_tutorial.htm (contents, props changed)
   trunk/libs/polygon/doc/images/
   trunk/libs/polygon/doc/images/NAND.PNG (contents, props changed)
   trunk/libs/polygon/doc/images/boost.png (contents, props changed)
   trunk/libs/polygon/doc/images/concept_table.png (contents, props changed)
   trunk/libs/polygon/doc/images/convolution1.PNG (contents, props changed)
   trunk/libs/polygon/doc/images/convolution2.PNG (contents, props changed)
   trunk/libs/polygon/doc/images/convolve_edges.PNG (contents, props changed)
   trunk/libs/polygon/doc/images/foo.PNG (contents, props changed)
   trunk/libs/polygon/doc/images/hand.png (contents, props changed)
   trunk/libs/polygon/doc/images/intlogo.gif (contents, props changed)
   trunk/libs/polygon/doc/images/nands.PNG (contents, props changed)
   trunk/libs/polygon/doc/images/perf_graph.PNG (contents, props changed)
   trunk/libs/polygon/doc/images/perimeter_convolve.PNG (contents, props changed)
   trunk/libs/polygon/doc/images/refinements.png (contents, props changed)
   trunk/libs/polygon/doc/index.htm (contents, props changed)
   trunk/libs/polygon/doc/tutorial/
   trunk/libs/polygon/doc/tutorial/compare_schematics.hpp (contents, props changed)
   trunk/libs/polygon/doc/tutorial/connectivity_database.hpp (contents, props changed)
   trunk/libs/polygon/doc/tutorial/device.hpp (contents, props changed)
   trunk/libs/polygon/doc/tutorial/extract.cpp (contents, props changed)
   trunk/libs/polygon/doc/tutorial/extract_devices.hpp (contents, props changed)
   trunk/libs/polygon/doc/tutorial/layout_database.hpp (contents, props changed)
   trunk/libs/polygon/doc/tutorial/layout_pin.hpp (contents, props changed)
   trunk/libs/polygon/doc/tutorial/layout_rectangle.hpp (contents, props changed)
   trunk/libs/polygon/doc/tutorial/minkowski.cpp (contents, props changed)
   trunk/libs/polygon/doc/tutorial/parse_layout.hpp (contents, props changed)
   trunk/libs/polygon/doc/tutorial/schematic_database.hpp (contents, props changed)
   trunk/libs/polygon/test/
   trunk/libs/polygon/test/Jamfile.v2 (contents, props changed)
   trunk/libs/polygon/test/gtl_boost_unit_test.cpp (contents, props changed)

Added: trunk/libs/polygon/Jamroot
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/Jamroot 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,19 @@
+# Boost Build v2 Jamroot for Polygon unit
+#
+# Copyright 2010 Intel Corporation
+#
+# Use, modification and distribution is subject to the Boost Software License,
+# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+project
+ : requirements
+ <warnings>all
+ <toolset>intel:<warnings>on
+ <toolset>gcc:<cxxflags>"-pedantic -Wall -Wstrict-aliasing -fstrict-aliasing -Wno-long-long"
+ <toolset>msvc:<cxxflags>/W4
+ <include>../..
+ <include>.
+ ;
+
+

Added: trunk/libs/polygon/doc/GTL_boostcon2009.pdf
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,79 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link rel=File-List href="GTL_boostcon_draft03_files/filelist.xml">
+<link rel=Preview href="GTL_boostcon_draft03_files/preview.wmf">
+<link rel=Edit-Time-Data href="GTL_boostcon_draft03_files/editdata.mso">
+<title>GTL Geometry Template Library</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>Lucanus Simonson</o:Author>
+ <o:LastAuthor>Lucanus Simonson</o:LastAuthor>
+ <o:Revision>11</o:Revision>
+ <o:TotalTime>19046</o:TotalTime>
+ <o:Created>2009-03-31T21:52:49Z</o:Created>
+ <o:LastSaved>2009-05-15T21:48:33Z</o:LastSaved>
+ <o:Words>3672</o:Words>
+ <o:PresentationFormat>On-screen Show</o:PresentationFormat>
+ <o:Company>Intel Corporation</o:Company>
+ <o:Bytes>1133276</o:Bytes>
+ <o:Paragraphs>768</o:Paragraphs>
+ <o:Slides>61</o:Slides>
+ <o:Version>11.9999</o:Version>
+ </o:DocumentProperties>
+ <o:OfficeDocumentSettings>
+ <o:PixelsPerInch>80</o:PixelsPerInch>
+ </o:OfficeDocumentSettings>
+</xml><![endif]-->
+<link rel=Presentation-XML href="GTL_boostcon_draft03_files/pres.xml">
+<meta name=Description content="5/15/2009: GTL Geometry Template Library">
+<meta http-equiv=expires content=0>
+<![if !ppt]><script>
+<!--
+ var ver = 0, appVer = navigator.appVersion, msie = appVer.indexOf( "MSIE " )
+ var msieWin31 = (appVer.indexOf( "Windows 3.1" ) >= 0), isMac = (appVer.indexOf("Macintosh") >= 0)
+ if( msie >= 0 )
+ ver = parseFloat( appVer.substring( msie+5, appVer.indexOf ( ";", msie ) ) )
+ else
+ ver = parseInt( appVer )
+
+ browserSupported=0
+ if( !isMac && ver >= 4 && msie >= 0 ) {
+ browserSupported=1
+ window.location.replace( 'GTL_boostcon_draft03_files/frame.htm'+document.location.hash )
+ }
+//-->
+</script><![endif]>
+</head>
+
+<body>
+<script><!--
+
+if( browserSupported )
+ document.writeln('<div style="visibility:hidden">');
+
+//--></script><font face=Arial size=2><b>
+
+<p>This presentation contains content that your browser may not be able to show
+properly. This presentation was optimized for more recent versions of Microsoft
+Internet Explorer.</p>
+
+<p>If you would like to proceed anyway, click <a
+href="GTL_boostcon_draft03_files/frame.htm">here</a>.</p>
+
+</b></font><script><!--
+
+if( browserSupported )
+ document.writeln('</div>');
+
+//--></script>
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/buttons.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/filelist.xml
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/filelist.xml 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,552 @@
+<xml xmlns:o="urn:schemas-microsoft-com:office:office">
+ <o:File HRef="master03.htm"/>
+ <o:File HRef="master03.xml"/>
+ <o:File HRef="preview.wmf"/>
+ <o:File HRef="pres.xml"/>
+ <o:File HRef="slide0001.htm"/>
+ <o:File HRef="slide0001_image001.png"/>
+ <o:File HRef="slide0001_image002.jpg"/>
+ <o:File HRef="slide0073.htm"/>
+ <o:File HRef="slide0068.htm"/>
+ <o:File HRef="slide0002.htm"/>
+ <o:File HRef="slide0002_image003.png"/>
+ <o:File HRef="slide0002_image004.jpg"/>
+ <o:File HRef="slide0003.htm"/>
+ <o:File HRef="slide0003_image005.png"/>
+ <o:File HRef="slide0003_image006.jpg"/>
+ <o:File HRef="slide0003_image007.png"/>
+ <o:File HRef="slide0003_image008.jpg"/>
+ <o:File HRef="slide0003_image009.gif"/>
+ <o:File HRef="slide0003_image010.jpg"/>
+ <o:File HRef="slide0003_image011.gif"/>
+ <o:File HRef="slide0003_image012.gif"/>
+ <o:File HRef="slide0067.htm"/>
+ <o:File HRef="slide0067_image013.gif"/>
+ <o:File HRef="slide0004.htm"/>
+ <o:File HRef="slide0004_image014.png"/>
+ <o:File HRef="slide0004_image015.gif"/>
+ <o:File HRef="slide0004_image016.png"/>
+ <o:File HRef="slide0004_image017.gif"/>
+ <o:File HRef="slide0004_image018.gif"/>
+ <o:File HRef="slide0004_image019.gif"/>
+ <o:File HRef="slide0004_image020.gif"/>
+ <o:File HRef="slide0004_image021.gif"/>
+ <o:File HRef="slide0004_image022.gif"/>
+ <o:File HRef="slide0004_image023.gif"/>
+ <o:File HRef="slide0004_image024.gif"/>
+ <o:File HRef="slide0004_image025.gif"/>
+ <o:File HRef="slide0004_image026.gif"/>
+ <o:File HRef="slide0004_image027.gif"/>
+ <o:File HRef="slide0004_image028.gif"/>
+ <o:File HRef="slide0004_image029.gif"/>
+ <o:File HRef="slide0005.htm"/>
+ <o:File HRef="slide0005_image030.png"/>
+ <o:File HRef="slide0005_image031.jpg"/>
+ <o:File HRef="slide0006.htm"/>
+ <o:File HRef="slide0006.xml"/>
+ <o:File HRef="slide0006_image032.gif"/>
+ <o:File HRef="slide0006_image033.gif"/>
+ <o:File HRef="slide0006_image034.gif"/>
+ <o:File HRef="slide0006_image035.gif"/>
+ <o:File HRef="slide0006_image036.gif"/>
+ <o:File HRef="slide0006_image037.gif"/>
+ <o:File HRef="slide0006_image038.gif"/>
+ <o:File HRef="slide0006_image039.gif"/>
+ <o:File HRef="slide0006_image040.gif"/>
+ <o:File HRef="slide0006_image041.gif"/>
+ <o:File HRef="slide0006_image042.gif"/>
+ <o:File HRef="slide0006_image043.gif"/>
+ <o:File HRef="slide0006_image044.gif"/>
+ <o:File HRef="slide0006_image045.gif"/>
+ <o:File HRef="slide0006_image046.gif"/>
+ <o:File HRef="slide0006_image047.gif"/>
+ <o:File HRef="slide0006_image048.gif"/>
+ <o:File HRef="slide0006_image049.gif"/>
+ <o:File HRef="slide0006_image050.gif"/>
+ <o:File HRef="slide0006_image051.gif"/>
+ <o:File HRef="slide0006_image052.gif"/>
+ <o:File HRef="slide0006_image053.gif"/>
+ <o:File HRef="slide0006_image054.gif"/>
+ <o:File HRef="slide0006_image055.gif"/>
+ <o:File HRef="slide0006_image056.gif"/>
+ <o:File HRef="slide0006_image057.gif"/>
+ <o:File HRef="slide0006_image058.gif"/>
+ <o:File HRef="slide0006_image059.gif"/>
+ <o:File HRef="slide0006_image060.gif"/>
+ <o:File HRef="slide0006_image061.gif"/>
+ <o:File HRef="slide0006_image062.gif"/>
+ <o:File HRef="slide0006_image063.gif"/>
+ <o:File HRef="slide0006_image064.gif"/>
+ <o:File HRef="slide0006_image065.gif"/>
+ <o:File HRef="slide0006_image066.gif"/>
+ <o:File HRef="slide0006_image067.gif"/>
+ <o:File HRef="slide0006_image068.gif"/>
+ <o:File HRef="slide0006_image069.gif"/>
+ <o:File HRef="slide0006_image070.gif"/>
+ <o:File HRef="slide0006_image071.gif"/>
+ <o:File HRef="slide0006_image072.gif"/>
+ <o:File HRef="slide0006_image073.gif"/>
+ <o:File HRef="slide0006_image074.gif"/>
+ <o:File HRef="slide0006_image075.gif"/>
+ <o:File HRef="slide0006_image076.gif"/>
+ <o:File HRef="slide0006_image077.gif"/>
+ <o:File HRef="slide0006_image078.gif"/>
+ <o:File HRef="slide0006_image079.gif"/>
+ <o:File HRef="slide0006_image080.gif"/>
+ <o:File HRef="slide0006_image081.gif"/>
+ <o:File HRef="slide0007.htm"/>
+ <o:File HRef="slide0007_image082.gif"/>
+ <o:File HRef="slide0010.htm"/>
+ <o:File HRef="slide0010_image083.gif"/>
+ <o:File HRef="slide0011.htm"/>
+ <o:File HRef="slide0011_image084.png"/>
+ <o:File HRef="slide0011_image085.jpg"/>
+ <o:File HRef="slide0011_image086.png"/>
+ <o:File HRef="slide0011_image087.jpg"/>
+ <o:File HRef="slide0011_image088.gif"/>
+ <o:File HRef="slide0011_image089.gif"/>
+ <o:File HRef="slide0011_image090.png"/>
+ <o:File HRef="slide0011_image091.jpg"/>
+ <o:File HRef="slide0011_image092.gif"/>
+ <o:File HRef="slide0012.htm"/>
+ <o:File HRef="slide0012_image093.png"/>
+ <o:File HRef="slide0012_image094.jpg"/>
+ <o:File HRef="slide0012_image095.gif"/>
+ <o:File HRef="slide0012_image096.gif"/>
+ <o:File HRef="slide0012_image097.gif"/>
+ <o:File HRef="slide0012_image098.gif"/>
+ <o:File HRef="slide0012_image099.gif"/>
+ <o:File HRef="slide0012_image100.gif"/>
+ <o:File HRef="slide0013.htm"/>
+ <o:File HRef="slide0013_image101.png"/>
+ <o:File HRef="slide0013_image102.jpg"/>
+ <o:File HRef="slide0013_image103.gif"/>
+ <o:File HRef="slide0013_image104.gif"/>
+ <o:File HRef="slide0013_image105.gif"/>
+ <o:File HRef="slide0013_image106.gif"/>
+ <o:File HRef="slide0013_image107.gif"/>
+ <o:File HRef="slide0013_image108.gif"/>
+ <o:File HRef="slide0013_image109.gif"/>
+ <o:File HRef="slide0013_image110.gif"/>
+ <o:File HRef="slide0013_image111.gif"/>
+ <o:File HRef="slide0013_image112.gif"/>
+ <o:File HRef="slide0013_image113.gif"/>
+ <o:File HRef="slide0013_image114.gif"/>
+ <o:File HRef="slide0013_image115.gif"/>
+ <o:File HRef="slide0013_image116.gif"/>
+ <o:File HRef="slide0013_image117.gif"/>
+ <o:File HRef="slide0013_image118.gif"/>
+ <o:File HRef="slide0014.htm"/>
+ <o:File HRef="slide0016.htm"/>
+ <o:File HRef="slide0018.htm"/>
+ <o:File HRef="slide0015.htm"/>
+ <o:File HRef="slide0019.htm"/>
+ <o:File HRef="slide0019_image119.png"/>
+ <o:File HRef="slide0019_image120.jpg"/>
+ <o:File HRef="slide0019_image121.png"/>
+ <o:File HRef="slide0019_image122.jpg"/>
+ <o:File HRef="slide0020.htm"/>
+ <o:File HRef="slide0020_image123.gif"/>
+ <o:File HRef="slide0020_image124.gif"/>
+ <o:File HRef="slide0020_image125.gif"/>
+ <o:File HRef="slide0020_image126.gif"/>
+ <o:File HRef="slide0020_image127.gif"/>
+ <o:File HRef="slide0020_image128.gif"/>
+ <o:File HRef="slide0021.htm"/>
+ <o:File HRef="slide0021_image129.gif"/>
+ <o:File HRef="slide0021_image130.gif"/>
+ <o:File HRef="slide0021_image131.gif"/>
+ <o:File HRef="slide0021_image132.gif"/>
+ <o:File HRef="slide0021_image133.gif"/>
+ <o:File HRef="slide0021_image134.gif"/>
+ <o:File HRef="slide0021_image135.gif"/>
+ <o:File HRef="slide0021_image136.gif"/>
+ <o:File HRef="slide0021_image137.gif"/>
+ <o:File HRef="slide0021_image138.gif"/>
+ <o:File HRef="slide0021_image139.gif"/>
+ <o:File HRef="slide0021_image140.gif"/>
+ <o:File HRef="slide0021_image141.gif"/>
+ <o:File HRef="slide0021_image142.gif"/>
+ <o:File HRef="slide0021_image143.gif"/>
+ <o:File HRef="slide0021_image144.gif"/>
+ <o:File HRef="slide0021_image145.gif"/>
+ <o:File HRef="slide0021_image146.gif"/>
+ <o:File HRef="slide0021_image147.gif"/>
+ <o:File HRef="slide0022.htm"/>
+ <o:File HRef="slide0022_image148.gif"/>
+ <o:File HRef="slide0022_image149.gif"/>
+ <o:File HRef="slide0022_image150.gif"/>
+ <o:File HRef="slide0022_image151.gif"/>
+ <o:File HRef="slide0022_image152.gif"/>
+ <o:File HRef="slide0022_image153.gif"/>
+ <o:File HRef="slide0022_image154.gif"/>
+ <o:File HRef="slide0022_image155.gif"/>
+ <o:File HRef="slide0022_image156.gif"/>
+ <o:File HRef="slide0022_image157.gif"/>
+ <o:File HRef="slide0022_image158.gif"/>
+ <o:File HRef="slide0022_image159.gif"/>
+ <o:File HRef="slide0022_image160.gif"/>
+ <o:File HRef="slide0022_image161.gif"/>
+ <o:File HRef="slide0022_image162.gif"/>
+ <o:File HRef="slide0022_image163.gif"/>
+ <o:File HRef="slide0022_image164.gif"/>
+ <o:File HRef="slide0022_image165.gif"/>
+ <o:File HRef="slide0022_image166.gif"/>
+ <o:File HRef="slide0022_image167.gif"/>
+ <o:File HRef="slide0022_image168.gif"/>
+ <o:File HRef="slide0022_image169.gif"/>
+ <o:File HRef="slide0023.htm"/>
+ <o:File HRef="slide0023_image170.gif"/>
+ <o:File HRef="slide0023_image171.gif"/>
+ <o:File HRef="slide0023_image172.gif"/>
+ <o:File HRef="slide0023_image173.gif"/>
+ <o:File HRef="slide0023_image174.gif"/>
+ <o:File HRef="slide0023_image175.gif"/>
+ <o:File HRef="slide0023_image176.gif"/>
+ <o:File HRef="slide0023_image177.gif"/>
+ <o:File HRef="slide0023_image178.gif"/>
+ <o:File HRef="slide0023_image179.gif"/>
+ <o:File HRef="slide0023_image180.gif"/>
+ <o:File HRef="slide0023_image181.gif"/>
+ <o:File HRef="slide0023_image182.gif"/>
+ <o:File HRef="slide0023_image183.gif"/>
+ <o:File HRef="slide0023_image184.gif"/>
+ <o:File HRef="slide0023_image185.gif"/>
+ <o:File HRef="slide0023_image186.gif"/>
+ <o:File HRef="slide0023_image187.gif"/>
+ <o:File HRef="slide0023_image188.gif"/>
+ <o:File HRef="slide0023_image189.gif"/>
+ <o:File HRef="slide0023_image190.gif"/>
+ <o:File HRef="slide0023_image191.gif"/>
+ <o:File HRef="slide0023_image192.gif"/>
+ <o:File HRef="slide0023_image193.gif"/>
+ <o:File HRef="slide0023_image194.gif"/>
+ <o:File HRef="slide0023_image195.gif"/>
+ <o:File HRef="slide0023_image196.gif"/>
+ <o:File HRef="slide0023_image197.gif"/>
+ <o:File HRef="slide0023_image198.gif"/>
+ <o:File HRef="slide0023_image199.gif"/>
+ <o:File HRef="slide0023_image200.gif"/>
+ <o:File HRef="slide0023_image201.gif"/>
+ <o:File HRef="slide0023_image202.gif"/>
+ <o:File HRef="slide0023_image203.gif"/>
+ <o:File HRef="slide0023_image204.gif"/>
+ <o:File HRef="slide0023_image205.gif"/>
+ <o:File HRef="slide0023_image206.gif"/>
+ <o:File HRef="slide0023_image207.gif"/>
+ <o:File HRef="slide0023_image208.gif"/>
+ <o:File HRef="slide0027.htm"/>
+ <o:File HRef="slide0027_image209.gif"/>
+ <o:File HRef="slide0027_image210.gif"/>
+ <o:File HRef="slide0027_image211.gif"/>
+ <o:File HRef="slide0027_image212.gif"/>
+ <o:File HRef="slide0027_image213.gif"/>
+ <o:File HRef="slide0027_image214.gif"/>
+ <o:File HRef="slide0027_image215.gif"/>
+ <o:File HRef="slide0027_image216.gif"/>
+ <o:File HRef="slide0027_image217.gif"/>
+ <o:File HRef="slide0027_image218.gif"/>
+ <o:File HRef="slide0027_image219.gif"/>
+ <o:File HRef="slide0027_image220.gif"/>
+ <o:File HRef="slide0027_image221.gif"/>
+ <o:File HRef="slide0027_image222.gif"/>
+ <o:File HRef="slide0027_image223.gif"/>
+ <o:File HRef="slide0027_image224.gif"/>
+ <o:File HRef="slide0027_image225.gif"/>
+ <o:File HRef="slide0027_image226.gif"/>
+ <o:File HRef="slide0027_image227.gif"/>
+ <o:File HRef="slide0027_image228.gif"/>
+ <o:File HRef="slide0027_image229.gif"/>
+ <o:File HRef="slide0027_image230.gif"/>
+ <o:File HRef="slide0027_image231.gif"/>
+ <o:File HRef="slide0028.htm"/>
+ <o:File HRef="slide0028_image232.gif"/>
+ <o:File HRef="slide0028_image233.gif"/>
+ <o:File HRef="slide0028_image234.gif"/>
+ <o:File HRef="slide0028_image235.gif"/>
+ <o:File HRef="slide0028_image236.gif"/>
+ <o:File HRef="slide0028_image237.gif"/>
+ <o:File HRef="slide0028_image238.gif"/>
+ <o:File HRef="slide0028_image239.gif"/>
+ <o:File HRef="slide0028_image240.gif"/>
+ <o:File HRef="slide0028_image241.gif"/>
+ <o:File HRef="slide0028_image242.gif"/>
+ <o:File HRef="slide0028_image243.gif"/>
+ <o:File HRef="slide0028_image244.gif"/>
+ <o:File HRef="slide0028_image245.gif"/>
+ <o:File HRef="slide0028_image246.gif"/>
+ <o:File HRef="slide0028_image247.gif"/>
+ <o:File HRef="slide0028_image248.gif"/>
+ <o:File HRef="slide0028_image249.gif"/>
+ <o:File HRef="slide0028_image250.gif"/>
+ <o:File HRef="slide0028_image251.gif"/>
+ <o:File HRef="slide0028_image252.gif"/>
+ <o:File HRef="slide0028_image253.gif"/>
+ <o:File HRef="slide0028_image254.gif"/>
+ <o:File HRef="slide0028_image255.gif"/>
+ <o:File HRef="slide0028_image256.gif"/>
+ <o:File HRef="slide0028_image257.gif"/>
+ <o:File HRef="slide0028_image258.gif"/>
+ <o:File HRef="slide0028_image259.gif"/>
+ <o:File HRef="slide0028_image260.gif"/>
+ <o:File HRef="slide0028_image261.gif"/>
+ <o:File HRef="slide0028_image262.gif"/>
+ <o:File HRef="slide0028_image263.gif"/>
+ <o:File HRef="slide0028_image264.gif"/>
+ <o:File HRef="slide0028_image265.gif"/>
+ <o:File HRef="slide0028_image266.gif"/>
+ <o:File HRef="slide0029.htm"/>
+ <o:File HRef="slide0029_image267.gif"/>
+ <o:File HRef="slide0029_image268.gif"/>
+ <o:File HRef="slide0029_image269.gif"/>
+ <o:File HRef="slide0029_image270.gif"/>
+ <o:File HRef="slide0029_image271.gif"/>
+ <o:File HRef="slide0029_image272.gif"/>
+ <o:File HRef="slide0029_image273.gif"/>
+ <o:File HRef="slide0029_image274.gif"/>
+ <o:File HRef="slide0029_image275.gif"/>
+ <o:File HRef="slide0029_image276.gif"/>
+ <o:File HRef="slide0029_image277.gif"/>
+ <o:File HRef="slide0030.htm"/>
+ <o:File HRef="slide0030_image278.gif"/>
+ <o:File HRef="slide0030_image279.gif"/>
+ <o:File HRef="slide0030_image280.gif"/>
+ <o:File HRef="slide0030_image281.gif"/>
+ <o:File HRef="slide0030_image282.gif"/>
+ <o:File HRef="slide0030_image283.gif"/>
+ <o:File HRef="slide0030_image284.gif"/>
+ <o:File HRef="slide0030_image285.gif"/>
+ <o:File HRef="slide0030_image286.gif"/>
+ <o:File HRef="slide0030_image287.gif"/>
+ <o:File HRef="slide0030_image288.gif"/>
+ <o:File HRef="slide0030_image289.gif"/>
+ <o:File HRef="slide0030_image290.gif"/>
+ <o:File HRef="slide0030_image291.gif"/>
+ <o:File HRef="slide0030_image292.gif"/>
+ <o:File HRef="slide0031.htm"/>
+ <o:File HRef="slide0031_image293.gif"/>
+ <o:File HRef="slide0031_image294.gif"/>
+ <o:File HRef="slide0031_image295.gif"/>
+ <o:File HRef="slide0031_image296.gif"/>
+ <o:File HRef="slide0031_image297.gif"/>
+ <o:File HRef="slide0031_image298.gif"/>
+ <o:File HRef="slide0031_image299.gif"/>
+ <o:File HRef="slide0031_image300.gif"/>
+ <o:File HRef="slide0031_image301.gif"/>
+ <o:File HRef="slide0031_image302.gif"/>
+ <o:File HRef="slide0031_image303.gif"/>
+ <o:File HRef="slide0031_image304.gif"/>
+ <o:File HRef="slide0031_image305.gif"/>
+ <o:File HRef="slide0031_image306.gif"/>
+ <o:File HRef="slide0031_image307.gif"/>
+ <o:File HRef="slide0031_image308.gif"/>
+ <o:File HRef="slide0031_image309.gif"/>
+ <o:File HRef="slide0032.htm"/>
+ <o:File HRef="slide0032_image310.gif"/>
+ <o:File HRef="slide0032_image311.gif"/>
+ <o:File HRef="slide0032_image312.gif"/>
+ <o:File HRef="slide0032_image313.gif"/>
+ <o:File HRef="slide0032_image314.gif"/>
+ <o:File HRef="slide0032_image315.gif"/>
+ <o:File HRef="slide0032_image316.gif"/>
+ <o:File HRef="slide0032_image317.gif"/>
+ <o:File HRef="slide0032_image318.gif"/>
+ <o:File HRef="slide0032_image319.gif"/>
+ <o:File HRef="slide0032_image320.gif"/>
+ <o:File HRef="slide0032_image321.gif"/>
+ <o:File HRef="slide0032_image322.gif"/>
+ <o:File HRef="slide0032_image323.gif"/>
+ <o:File HRef="slide0032_image324.gif"/>
+ <o:File HRef="slide0032_image325.gif"/>
+ <o:File HRef="slide0032_image326.gif"/>
+ <o:File HRef="slide0032_image327.gif"/>
+ <o:File HRef="slide0033.htm"/>
+ <o:File HRef="slide0033_image328.gif"/>
+ <o:File HRef="slide0033_image329.gif"/>
+ <o:File HRef="slide0033_image330.gif"/>
+ <o:File HRef="slide0033_image331.gif"/>
+ <o:File HRef="slide0033_image332.gif"/>
+ <o:File HRef="slide0033_image333.gif"/>
+ <o:File HRef="slide0033_image334.gif"/>
+ <o:File HRef="slide0033_image335.gif"/>
+ <o:File HRef="slide0033_image336.gif"/>
+ <o:File HRef="slide0033_image337.gif"/>
+ <o:File HRef="slide0033_image338.gif"/>
+ <o:File HRef="slide0033_image339.gif"/>
+ <o:File HRef="slide0033_image340.gif"/>
+ <o:File HRef="slide0033_image341.gif"/>
+ <o:File HRef="slide0033_image342.gif"/>
+ <o:File HRef="slide0033_image343.gif"/>
+ <o:File HRef="slide0033_image344.gif"/>
+ <o:File HRef="slide0033_image345.gif"/>
+ <o:File HRef="slide0033_image346.gif"/>
+ <o:File HRef="slide0034.htm"/>
+ <o:File HRef="slide0034_image347.gif"/>
+ <o:File HRef="slide0034_image348.gif"/>
+ <o:File HRef="slide0034_image349.gif"/>
+ <o:File HRef="slide0034_image350.gif"/>
+ <o:File HRef="slide0034_image351.gif"/>
+ <o:File HRef="slide0034_image352.gif"/>
+ <o:File HRef="slide0034_image353.gif"/>
+ <o:File HRef="slide0034_image354.gif"/>
+ <o:File HRef="slide0034_image355.gif"/>
+ <o:File HRef="slide0034_image356.gif"/>
+ <o:File HRef="slide0034_image357.gif"/>
+ <o:File HRef="slide0034_image358.gif"/>
+ <o:File HRef="slide0034_image359.gif"/>
+ <o:File HRef="slide0034_image360.gif"/>
+ <o:File HRef="slide0034_image361.gif"/>
+ <o:File HRef="slide0034_image362.gif"/>
+ <o:File HRef="slide0034_image363.gif"/>
+ <o:File HRef="slide0034_image364.gif"/>
+ <o:File HRef="slide0034_image365.gif"/>
+ <o:File HRef="slide0034_image366.gif"/>
+ <o:File HRef="slide0034_image367.gif"/>
+ <o:File HRef="slide0034_image368.gif"/>
+ <o:File HRef="slide0034_image369.gif"/>
+ <o:File HRef="slide0034_image370.gif"/>
+ <o:File HRef="slide0035.htm"/>
+ <o:File HRef="slide0035_image371.gif"/>
+ <o:File HRef="slide0035_image372.gif"/>
+ <o:File HRef="slide0035_image373.gif"/>
+ <o:File HRef="slide0035_image374.gif"/>
+ <o:File HRef="slide0035_image375.gif"/>
+ <o:File HRef="slide0035_image376.gif"/>
+ <o:File HRef="slide0035_image377.gif"/>
+ <o:File HRef="slide0035_image378.gif"/>
+ <o:File HRef="slide0035_image379.gif"/>
+ <o:File HRef="slide0035_image380.gif"/>
+ <o:File HRef="slide0035_image381.gif"/>
+ <o:File HRef="slide0035_image382.gif"/>
+ <o:File HRef="slide0035_image383.gif"/>
+ <o:File HRef="slide0035_image384.gif"/>
+ <o:File HRef="slide0035_image385.gif"/>
+ <o:File HRef="slide0035_image386.gif"/>
+ <o:File HRef="slide0035_image387.gif"/>
+ <o:File HRef="slide0035_image388.gif"/>
+ <o:File HRef="slide0035_image389.gif"/>
+ <o:File HRef="slide0035_image390.gif"/>
+ <o:File HRef="slide0035_image391.gif"/>
+ <o:File HRef="slide0035_image392.gif"/>
+ <o:File HRef="slide0035_image393.gif"/>
+ <o:File HRef="slide0035_image394.gif"/>
+ <o:File HRef="slide0035_image395.gif"/>
+ <o:File HRef="slide0035_image396.gif"/>
+ <o:File HRef="slide0035_image397.gif"/>
+ <o:File HRef="slide0036.htm"/>
+ <o:File HRef="slide0036_image398.gif"/>
+ <o:File HRef="slide0036_image399.gif"/>
+ <o:File HRef="slide0036_image400.gif"/>
+ <o:File HRef="slide0036_image401.gif"/>
+ <o:File HRef="slide0036_image402.gif"/>
+ <o:File HRef="slide0036_image403.gif"/>
+ <o:File HRef="slide0036_image404.gif"/>
+ <o:File HRef="slide0036_image405.gif"/>
+ <o:File HRef="slide0036_image406.gif"/>
+ <o:File HRef="slide0036_image407.gif"/>
+ <o:File HRef="slide0036_image408.gif"/>
+ <o:File HRef="slide0036_image409.gif"/>
+ <o:File HRef="slide0036_image410.gif"/>
+ <o:File HRef="slide0036_image411.gif"/>
+ <o:File HRef="slide0036_image412.gif"/>
+ <o:File HRef="slide0036_image413.gif"/>
+ <o:File HRef="slide0036_image414.gif"/>
+ <o:File HRef="slide0036_image415.gif"/>
+ <o:File HRef="slide0036_image416.gif"/>
+ <o:File HRef="slide0036_image417.gif"/>
+ <o:File HRef="slide0036_image418.gif"/>
+ <o:File HRef="slide0036_image419.gif"/>
+ <o:File HRef="slide0036_image420.gif"/>
+ <o:File HRef="slide0037.htm"/>
+ <o:File HRef="slide0037_image421.gif"/>
+ <o:File HRef="slide0037_image422.gif"/>
+ <o:File HRef="slide0037_image423.gif"/>
+ <o:File HRef="slide0037_image424.gif"/>
+ <o:File HRef="slide0037_image425.gif"/>
+ <o:File HRef="slide0037_image426.gif"/>
+ <o:File HRef="slide0037_image427.gif"/>
+ <o:File HRef="slide0038.htm"/>
+ <o:File HRef="slide0038_image428.gif"/>
+ <o:File HRef="slide0038_image429.gif"/>
+ <o:File HRef="slide0041.htm"/>
+ <o:File HRef="slide0039.htm"/>
+ <o:File HRef="slide0064.htm"/>
+ <o:File HRef="slide0064_image430.gif"/>
+ <o:File HRef="slide0064_image431.gif"/>
+ <o:File HRef="slide0064_image432.gif"/>
+ <o:File HRef="slide0064_image433.gif"/>
+ <o:File HRef="slide0064_image434.gif"/>
+ <o:File HRef="slide0064_image435.gif"/>
+ <o:File HRef="slide0064_image436.gif"/>
+ <o:File HRef="slide0064_image437.gif"/>
+ <o:File HRef="slide0064_image438.gif"/>
+ <o:File HRef="slide0040.htm"/>
+ <o:File HRef="slide0040_image439.gif"/>
+ <o:File HRef="slide0040_image440.gif"/>
+ <o:File HRef="slide0042.htm"/>
+ <o:File HRef="slide0042_image441.gif"/>
+ <o:File HRef="slide0042_image442.gif"/>
+ <o:File HRef="slide0042_image443.gif"/>
+ <o:File HRef="slide0042_image444.gif"/>
+ <o:File HRef="slide0045.htm"/>
+ <o:File HRef="slide0045_image445.gif"/>
+ <o:File HRef="slide0065.htm"/>
+ <o:File HRef="slide0065_image446.gif"/>
+ <o:File HRef="slide0065_image447.gif"/>
+ <o:File HRef="slide0065_image448.gif"/>
+ <o:File HRef="slide0065_image449.gif"/>
+ <o:File HRef="slide0044.htm"/>
+ <o:File HRef="slide0044_image450.gif"/>
+ <o:File HRef="slide0044_image451.gif"/>
+ <o:File HRef="slide0044_image452.gif"/>
+ <o:File HRef="slide0044_image453.gif"/>
+ <o:File HRef="slide0044_image454.gif"/>
+ <o:File HRef="slide0046.htm"/>
+ <o:File HRef="slide0046_image455.gif"/>
+ <o:File HRef="slide0046_image456.gif"/>
+ <o:File HRef="slide0047.htm"/>
+ <o:File HRef="slide0047.xml"/>
+ <o:File HRef="slide0047_image457.gif"/>
+ <o:File HRef="slide0047_image458.gif"/>
+ <o:File HRef="slide0049.htm"/>
+ <o:File HRef="slide0049.xml"/>
+ <o:File HRef="slide0049_image459.gif"/>
+ <o:File HRef="slide0048.htm"/>
+ <o:File HRef="slide0048.xml"/>
+ <o:File HRef="slide0048_image460.gif"/>
+ <o:File HRef="slide0048_image461.gif"/>
+ <o:File HRef="slide0048_image462.gif"/>
+ <o:File HRef="slide0050.htm"/>
+ <o:File HRef="slide0066.htm"/>
+ <o:File HRef="slide0066_image463.gif"/>
+ <o:File HRef="slide0052.htm"/>
+ <o:File HRef="slide0054.htm"/>
+ <o:File HRef="slide0055.htm"/>
+ <o:File HRef="slide0055_image464.gif"/>
+ <o:File HRef="slide0058.htm"/>
+ <o:File HRef="slide0059.htm"/>
+ <o:File HRef="slide0059.xml"/>
+ <o:File HRef="slide0059_image465.gif"/>
+ <o:File HRef="slide0059_image466.png"/>
+ <o:File HRef="slide0059_image467.jpg"/>
+ <o:File HRef="slide0060.htm"/>
+ <o:File HRef="slide0053.htm"/>
+ <o:File HRef="slide0061.htm"/>
+ <o:File HRef="slide0062.htm"/>
+ <o:File HRef="slide0062_image468.gif"/>
+ <o:File HRef="slide0062_image469.gif"/>
+ <o:File HRef="slide0062_image470.gif"/>
+ <o:File HRef="slide0070.htm"/>
+ <o:File HRef="slide0069.htm"/>
+ <o:File HRef="slide0071.htm"/>
+ <o:File HRef="slide0071_image471.gif"/>
+ <o:File HRef="master01.htm"/>
+ <o:File HRef="master03_stylesheet.css"/>
+ <o:File HRef="script.js"/>
+ <o:MainFile HRef="../GTL_boostcon_draft03.htm"/>
+ <o:File HRef="fullscreen.htm"/>
+ <o:File HRef="buttons.gif"/>
+ <o:File HRef="frame.htm"/>
+ <o:File HRef="outline.htm"/>
+ <o:File HRef="filelist.xml"/>
+</xml>
\ No newline at end of file

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/frame.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/frame.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,40 @@
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<title>GTL Geometry Template Library</title>
+<![if !ppt]><script src=script.js></script><script>
+<!--
+var gNavLoaded = gOtlNavLoaded = gOtlLoaded = false;
+function Load()
+{
+ str=unescape(document.location.hash),idx=str.indexOf('#')
+ if(idx>=0) str=str.substr(1);
+ if(str) PPTSld.location.replace(escape(str));
+}
+//-->
+</script><!--[if gte IE 5]>
+<object id=MSOANIM classid="CLSID:A4639D2F-774E-11D3-A490-00C04F6843FB"
+ codebase="http://download.microsoft.com/download/PowerPoint2002/Install/10.0.2609/WIN98MeXP/EN-US/msorun.cab#version=11,0,0,1"></object>
+<![endif]-->
+<![endif]>
+</head>
+
+
+<frameset rows="*,25" border=0>
+ <frameset cols="25%,*" onload="Load()" id=PPTHorizAdjust framespacing=1 frameborder=1>
+ <frame src=outline.htm title="Outline" name=PPTOtl>
+ <frame src=slide0001.htm title="Slide" name=PPTSld>
+ </frameset>
+ <frameset cols="25%,*" framespacing=1>
+ <frame src=outline.htm title="Outline
+Navigation Bar" name=PPTOtlNav scrolling=no noresize>
+ <frame src=outline.htm title="Slide
+Navigation Bar" name=PPTNav scrolling=no noresize>
+ </frameset>
+</frameset>
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/fullscreen.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/fullscreen.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,42 @@
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<script src=script.js></script>
+<script><!--
+var SCREEN_MODE = "FullScreen";
+
+function Load() {
+ str=unescape(document.location.hash),idx=str.indexOf('#')
+ if(idx>=0) str=str.substr(1);
+ if(!str) str = "slide0001.htm";
+
+ if (MHTMLPrefix != "")
+ {
+ str = RemoveFilePrefixFromHref(str);
+ PPTSld.location.replace(MHTMLPrefix+escape(str));
+ }
+ else
+ {
+ PPTSld.location.replace(str);
+ }
+}
+
+function Unload() {
+ if ( document.body.PPTSldFrameset != null )
+ document.body.PPTSldFrameset.frames[1].document.body.resume();
+}
+
+//-->
+</script>
+</head>
+
+<frameset rows="*" frameborder=0 onload="Load()" onunload="Unload()">
+ <frame name=PPTSld>
+</frameset>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master01.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master01.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,123 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<meta name=Robots content=NoIndex>
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]><script src=script.js></script>
+<script>
+<!--
+ parent.location.href=document.all.item("Main-File").href
+//-->
+</script>
+<![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="69"/>
+</o:shapelayout>
+</head>
+
+<body>
+<p:colorscheme
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"/><v:background
+ id="_x0000_s70657" o:bwmode="white" fillcolor="white [0]">
+ <v:fill color2="#339 [5]"/>
+</v:background><v:shapetype id="_x0000_s70658" style='position:absolute;left:0;
+ top:0;width:234pt;height:36pt' coordsize="21600,21600" o:master="" o:spt="1"
+ path="m,l,21600r21600,l21600,xe" filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter" o:forcedash="t"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" grouping="t"/>
+ <p:placeholder type="header" size="quarter"/></v:shapetype>
+
+<div v:shape="_x0000_s70658" class=O><span style='font-size:67%;mso-field-code:
+meta14'>‹header›</span><span style='font-size:67%;mso-special-format:lastCR'>&#13;</span></div>
+
+<v:shapetype id="_x0000_s70659" style='position:absolute;left:305.875pt;top:0;
+ width:234pt;height:36pt' coordsize="21600,21600" o:master="" o:spt="1" path="m,l,21600r21600,l21600,xe"
+ filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter" o:forcedash="t"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" grouping="t"/>
+ <p:placeholder type="dateTime" position="1"/></v:shapetype>
+
+<div v:shape="_x0000_s70659" class=O style='text-align:right'><span lang=EN-US
+style='font-size:67%;mso-field-code:meta0'>‹date/time›</span><span
+style='font-size:67%;mso-special-format:lastCR'>&#13;</span></div>
+
+<v:shapetype id="_x0000_s70660" style='position:absolute;left:90pt;top:54pt;
+ width:5in;height:270pt;v-text-anchor:middle' coordsize="21600,21600" o:master=""
+ o:spt="1" path="m,l,21600r21600,l21600,xe">
+ <v:fill o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter"/>
+ <v:shadow obscured="t"/>
+ <v:path gradientshapeok="t" fillok="f" o:connecttype="rect"/>
+ <o:lock v:ext="edit" rotation="t" text="t"/>
+ <p:placeholder type="slideImage" position="2"/></v:shapetype><v:shapetype
+ id="_x0000_s70661" style='position:absolute;left:54pt;top:342pt;width:6in;
+ height:324pt' coordsize="21600,21600" o:master="" o:spt="1" path="m,l,21600r21600,l21600,xe"
+ filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter" o:forcedash="t"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" grouping="t"/>
+ <p:placeholder type="body" position="3" size="quarter"/></v:shapetype>
+
+<div v:shape="_x0000_s70661">
+
+<div class=N>Click to edit Master text styles&#13;</div>
+
+<div class=N1>Second level&#13;</div>
+
+<div class=N2>Third level&#13;</div>
+
+<div class=N3>Fourth level&#13;</div>
+
+<div class=N4>Fifth level</div>
+
+</div>
+
+<v:shapetype id="_x0000_s70662" style='position:absolute;left:0;top:683.875pt;
+ width:234pt;height:36pt;v-text-anchor:bottom' coordsize="21600,21600"
+ o:master="" o:spt="1" path="m,l,21600r21600,l21600,xe" filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter" o:forcedash="t"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" grouping="t"/>
+ <p:placeholder type="footer" position="4" size="quarter"/></v:shapetype>
+
+<div v:shape="_x0000_s70662" class=O><span style='font-size:67%;mso-field-code:
+meta15'>‹footer›</span><span style='font-size:67%;mso-special-format:lastCR'>&#13;</span></div>
+
+<v:shapetype id="_x0000_s70663" style='position:absolute;left:305.875pt;top:683.875pt;
+ width:234pt;height:36pt;v-text-anchor:bottom' coordsize="21600,21600"
+ o:master="" o:spt="1" path="m,l,21600r21600,l21600,xe" filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter" o:forcedash="t"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" grouping="t"/>
+ <p:placeholder type="slideNumber" position="5" size="quarter"/></v:shapetype>
+
+<div v:shape="_x0000_s70663" class=O style='text-align:right'><span
+style='font-size:67%;mso-field-code:meta16'>‹#›</span><span style='font-size:
+67%;mso-special-format:lastCR'>&#13;</span></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master03.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master03.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,56 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<meta name=Robots content=NoIndex>
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]><script src=script.js></script>
+<script>
+<!--
+ parent.location.href=document.all.item("Main-File").href
+//-->
+</script>
+<![endif]>
+</head>
+
+<body>
+
+<div v:shape="_x0000_m1026" class=T>Click to edit Master title style</div>
+
+<div v:shape="_x0000_m1027">
+
+<div class=B>Click to edit Master text styles&#13;</div>
+
+<div class=B1>Second level&#13;</div>
+
+<div class=B2>Third level&#13;</div>
+
+<div class=B3>Fourth level&#13;</div>
+
+<div class=B4>Fifth level</div>
+
+</div>
+
+<div v:shape="_x0000_s1028" class=O><span lang=EN-US style='font-size:78%;
+mso-field-code:meta0'>‹date/time›</span><span style='font-size:78%;mso-special-format:
+lastCR'>&#13;</span></div>
+
+<div v:shape="_x0000_s1029" class=O style='text-align:center'><span
+style='font-size:78%;mso-field-code:meta15'>‹footer›</span><span
+style='font-size:78%;mso-special-format:lastCR'>&#13;</span></div>
+
+<div v:shape="_x0000_s1030" class=O style='text-align:right'><span
+style='font-size:78%;mso-field-code:meta16'>‹#›</span><span style='font-size:
+78%;mso-special-format:lastCR'>&#13;</span></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master03.xml
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master03.xml 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,71 @@
+<xml xmlns:v="urn:schemas-microsoft-com:vml"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+ xmlns:oa="urn:schemas-microsoft-com:office:activation">
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout><p:colorscheme
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"/>
+ <v:background id="_x0000_s1025" o:bwmode="white" fillcolor="white [0]">
+ <v:fill color2="#339 [5]"/>
+ </v:background><p:shaperange id="_x0000_m1026">
+ <v:shapetype id="_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;
+ width:9in;height:90pt;v-text-anchor:middle' coordsize="21600,21600"
+ o:master="" o:spt="1" path="m,l,21600r21600,l21600,xe" filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter" o:forcedash="t"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" grouping="t"/>
+ <p:placeholder type="title"/>
+ </v:shapetype></p:shaperange>
+ <p:shaperange id="_x0000_m1027">
+ <v:shapetype id="_x0000_m1027" style='position:absolute;left:36pt;top:126pt;
+ width:9in;height:356.375pt' coordsize="21600,21600" o:master="" o:spt="1"
+ path="m,l,21600r21600,l21600,xe" filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter" o:forcedash="t"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" grouping="t"/>
+ <p:placeholder type="body" position="1"/>
+ </v:shapetype></p:shaperange>
+ <p:shaperange id="_x0000_s1028">
+ <v:shapetype id="_x0000_s1028" style='position:absolute;left:36pt;top:491.75pt;
+ width:168pt;height:37.5pt' coordsize="21600,21600" o:master="" o:spt="1"
+ path="m,l,21600r21600,l21600,xe" filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter" o:forcedash="t"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" grouping="t"/>
+ <p:placeholder type="dateTime" position="2" size="half"/>
+ </v:shapetype></p:shaperange>
+ <p:shaperange id="_x0000_s1029">
+ <v:shapetype id="_x0000_s1029" style='position:absolute;left:246pt;top:491.75pt;
+ width:228pt;height:37.5pt' coordsize="21600,21600" o:master="" o:spt="1"
+ path="m,l,21600r21600,l21600,xe" filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter" o:forcedash="t"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" grouping="t"/>
+ <p:placeholder type="footer" position="3" size="quarter"/>
+ </v:shapetype></p:shaperange>
+ <p:shaperange id="_x0000_s1030">
+ <v:shapetype id="_x0000_s1030" style='position:absolute;left:516pt;top:491.75pt;
+ width:168pt;height:37.5pt' coordsize="21600,21600" o:master="" o:spt="1"
+ path="m,l,21600r21600,l21600,xe" filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="t"/>
+ <v:stroke joinstyle="miter" o:forcedash="t"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" grouping="t"/>
+ <p:placeholder type="slideNumber" position="4" size="quarter"/>
+ </v:shapetype></p:shaperange>
+</xml>
\ No newline at end of file

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master03_stylesheet.css
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/master03_stylesheet.css 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,311 @@
+body
+ {width:534px;
+ height:400px;}
+.TB
+ {mso-special-format:nobullet•;}
+.T
+ {text-align:center;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:3;
+ font-size:209%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.BB
+ {mso-special-format:bullet•;}
+.B
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:152%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.B1B
+ {mso-special-format:bullet–;}
+.B1
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:133%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.B2B
+ {mso-special-format:bullet•;}
+.B2
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:114%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.B3B
+ {mso-special-format:bullet–;}
+.B3
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:95%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.B4B
+ {mso-special-format:bullet»;}
+.B4
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:95%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.NB
+ {mso-special-format:nobullet•;}
+.N
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:57%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.N1B
+ {mso-special-format:nobullet•;}
+.N1
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:57%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.N2B
+ {mso-special-format:nobullet•;}
+.N2
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:57%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.N3B
+ {mso-special-format:nobullet•;}
+.N3
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:57%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.N4N
+ {mso-special-format:nobullet•;}
+.N4
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:57%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.OB
+ {mso-special-format:nobullet•;}
+.O
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:85%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.O1
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.O2
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.O3
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.O4
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.CBB
+ {mso-special-format:nobullet•;}
+.CB
+ {text-align:center;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:152%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.CB1
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.CB2
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.CB3
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.CB4
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.CTB
+ {mso-special-format:nobullet•;}
+.CT
+ {text-align:center;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:3;
+ font-size:209%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.HB
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.HB1
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.HB2
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.HB3
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.HB4
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.QB
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.QB1
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.QB2
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.QB3
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.QB4
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.TblB
+ {mso-special-format:nobullet•;}
+.Tbl
+ {text-align:left;
+ font-family:Arial;
+ mso-bidi-font-family:Arial;
+ color:black;
+ mso-color-index:1;
+ font-size:133%;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.Tbl1
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.Tbl2
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.Tbl3
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.Tbl4
+ {font-family:Arial;
+ mso-bidi-font-family:Arial;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;}
+.defaultB
+ {mso-special-format:nobullet•;}
+.default
+ {text-align:left;
+ font-family:Arial;
+ mso-ascii-font-family:Arial;
+ mso-bidi-font-family:Arial;
+ font-weight:normal;
+ font-style:normal;
+ text-decoration:none;
+ text-shadow:none;
+ text-effect:none;
+ mso-fareast-hint:no;
+ layout-flow:horizontal;
+ color:black;
+ mso-color-index:1;
+ font-size:85%;
+ mso-text-raise:0%;
+ mso-line-spacing:"100 0 0";
+ mso-margin-left-alt:0;
+ mso-text-indent-alt:0;
+ mso-char-wrap:1;
+ mso-kinsoku-overflow:1;
+ direction:ltr;
+ mso-word-wrap:1;
+ mso-vertical-align-special:baseline;
+ mso-ansi-language:EN-US;}
+a:link
+ {color:#009999 !important;}
+a:active
+ {color:#333399 !important;}
+a:visited
+ {color:#99CC00 !important;}

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/outline.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/outline.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,1891 @@
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<meta name=Robots content=NoIndex>
+<script src=script.js></script><script><!--
+
+if( !(IsWin("PPTOtl")||IsWin("PPTNav")||IsWin("PPTOtlNav")) )
+{
+ obj = GetObj("Main-File")
+ parent.location.href=obj.href
+}
+
+var gOtlHiliteClr="#ffffff",gOtlNormalClr="#000000",gOtlActiveClr="#ffff00",gSelected="",gTxtState=false,gChildEntryTable=new Array()
+
+function Load()
+{
+ if( IsWin("PPTOtl" ) ){ LoadOtl(); parent.gOtlLoaded=true; return }
+ if( g_supportsPPTHTML ) {
+ if( IsWin("PPTNav" ) ){ LoadNav("NavObj",UpdNav); parent.gNavLoaded=true; return }
+ if( IsWin("PPTOtlNav" ) ){ LoadNav("OtlNavObj",UpdOtlNav); parent.gOtlNavLoaded=true; return }
+ }
+}
+function Upd(){ if( IsWin("PPTNav") ) LoadNav("NavObj",UpdNav) }
+function LoadNav( oId,UpdFunc )
+{
+ document.ondragstart=CancelDrag
+ document.onselectstart=CancelDrag
+ document.body.style.margin=2
+ UpdFunc()
+ obj=document.all.item(oId)
+ obj.style.display="block"
+ obj.style.visibility="visible"
+ document.bgColor="threedface"
+
+ if( parent.frames["PPTNts"] )
+ notesBtn.style.display = ""
+ if( parent.gHasNarration )
+ nb_voiceBorder.style.display = ""
+}
+function LoadOtl()
+{
+ var otl=GetObj("OtlObj")
+ otl.style.display="block"
+ otl.style.visibility="visible"
+ if( gOtlActiveClr == "" ) gOtlActiveClr=document.linkColor
+ if( gOtlHiliteClr == "" ) gOtlHiliteClr=document.fgColor
+ if( gOtlNormalClr == "" )
+ gOtlNormalClr=document.bgColor
+ else
+ document.bgColor=gOtlNormalClr
+
+ InitArray()
+
+ if( ObjExists( parent.gCurSld ) ) {
+ ChangeState( parent.gCurSld,gOtlNormalClr,gOtlHiliteClr )
+ gSelected=parent.gCurSld
+ }
+ else gSelected = -1
+
+ UpdOtl()
+}
+function UpdOtl(){ UpdIdx(parent.gCurSld) }
+function UpdIdx( idx )
+{
+ if( gSelected != idx ) {
+ if( gSelected > 0 )
+ ChangeState( gSelected,gOtlHiliteClr,gOtlNormalClr )
+
+ if( ObjExists( idx ) ) {
+ gSelected = idx
+ ChangeState( gSelected,gOtlNormalClr,gOtlHiliteClr )
+ }
+ else gSelected = -1
+ }
+
+ if( gTxtState != parent.gOtlTxtExp ) {
+ state = "block"
+ if( !parent.gOtlTxtExp )
+ state="none"
+
+ for(ii=0; ii<gChildEntryTable.length; ii++) {
+ obj=gChildEntryTable[ii];
+ if( obj.id == null ) continue;
+
+ if( obj.id.indexOf("PPTC") >= 0 )
+ obj.style.display=state;
+ }
+ gTxtState=parent.gOtlTxtExp
+ if( ObjExists( gSelected ) )
+ ChangeState( gSelected,gOtlNormalClr,gOtlHiliteClr )
+ }
+}
+function InitArray()
+{
+ count=0
+ var list=GetTags(document,"DIV");
+ for(ii=0; ii<list.length; ii++) {
+ obj=list.item(ii)
+ if( obj.id == null ) continue
+
+ if( obj.id.indexOf("PPTC") >= 0 )
+ gChildEntryTable[count++]=obj
+ }
+}
+function ChangeState( idx,fgColor,bgColor )
+{
+ obj=GetObj("PPTL"+idx)
+ obj.style.color=fgColor
+
+ obj=GetObj("PPTP"+idx)
+ obj.style.backgroundColor=bgColor
+}
+function ChgClr( o,clr ){ if( o.id != "PPTL"+gSelected ) o.style.color=clr }
+function Over( src ){ ChgClr(GetLink(src),gOtlActiveClr) }
+function Out( src ){ ChgClr(GetLink(src),gOtlHiliteClr) }
+function Follow(src){ window.location.href = GetLink(src).href; }
+function ObjExists( ii ) { obj=GetObj("PPTP"+ii ); return( obj ) }
+function GoToSld( href ){ UpdIdx(parent.GetSldNum(href)); parent.GoToSld( href ) }
+function CancelDrag(){ window.event.cancelBubble=true;window.event.returnValue=false}
+function GetLink(src)
+{
+ if(src.tagName=="A") return src
+ else return GetTags(src,"A").item(0)
+}
+
+function UpdNav()
+{
+ txt = "<center>";
+ if( parent.GetHrefObj( parent.gCurSld ).mOrigVis == 1 )
+ txt += "Slide " + parent.GetCurSldNum() + " of " + parent.GetNumSlds()
+ else
+ txt += "Hidden Slide"
+ txt += "</center>";
+ nav_text.innerHTML = txt;
+
+ if( !parent.HasPrevSld() )
+ gBtnArr["nb_prev"].Enabled(0)
+ else
+ gBtnArr["nb_prev"].Enabled(1)
+
+ if( !parent.HasNextSld() )
+ gBtnArr["nb_next"].Enabled(0)
+ else
+ gBtnArr["nb_next"].Enabled(1)
+ gBtnArr["nb_nts"].Enabled(1)
+ gBtnArr["nb_ntsBorder"].SetFlag( parent.gHasNts )
+
+ gBtnArr["nb_sldshw"].Enabled(1)
+ gBtnArr["nb_voice"].Enabled(1)
+}
+
+function ExecBtn()
+{
+ if (event.keyCode == 13)
+ {
+ BtnOnDown();
+ BtnOnUp();
+ }
+}
+function UpdOtlNav()
+{
+ gBtnArr["nb_otl"].SetEnabled();
+
+ if( parent.gOtlOpen )
+ gBtnArr["nb_otlTxt"].Enabled( true );
+ else
+ document.all.item("nb_otlTxtBorder").style.visibility = "hidden";
+}
+
+
+
+
+//--></script>
+<style>
+<!--.PTxt
+ {position:relative;
+ width:100%;
+ margin-top:5px;
+ padding-left:2px;
+ font-weight:bold;}
+.CTxt
+ {position:relative;
+ width:100%;
+ margin-top:5px;}
+a
+ {color:white;
+ text-decoration:none;}
+ul
+ {color:white;
+ margin-bottom:0px;
+ margin-left:20px;}
+.sldNum
+ {margin-top:5px;
+ color:white;}
+.button
+ {position:absolute;
+ width:32px;
+ height:20px;
+ border-style:solid;
+ border-width:1px;
+ border-color:threedface;}
+-->
+</style>
+</head>
+
+<body onload="Load()" style='margin:2px'>
+
+<div id=NavObj onload="Load()" onmouseover="BtnOnOver()"
+onmousedown="BtnOnDown()" onmouseout="BtnOnOut()" onmouseup="BtnOnUp()"
+onkeypress="ExecBtn()" style='display:none;visibility:hidden'>
+<table id="notesBtn" style='display:none;position:relative;width:55px' align=left cellpadding=0
+ cellspacing=0>
+ <td nowrap>
+ <div id="nb_ntsElem" title="Show/Hide
+Notes" align=center style='position:relative;margin-left:5px;margin-right:5px;padding:3px;
+ font-family:Arial;color:buttontext;font-size:9pt; cursor:default'>
+ <img src="notes_flag.gif" id="nb_nts" style='display:none'> &nbsp;Notes</div>
+ <div id="nb_ntsBorder" title ="Show/Hide
+Notes" onfocus="BtnOnOver()" onblur="BtnOnOut()" TABINDEX=1 style='position:absolute;top:0%;left:0%;width:100%;height:20px'>
+
+ </div>
+ </td>
+</table>
+
+
+<table style='position:relative;width:70px' align=right cellpadding=0 cellspacing=0>
+ <td nowrap>
+ <div id="nb_sldshwText" title="Full Screen Slide Show" align=center style='position:relative;margin-left:20px;padding:3px;
+ font-family:Arial;color:buttontext;font-size:9pt;cursor:default'>Slide
+Show</div>
+ <div id="nb_sldshwBorder" title="Full Screen Slide Show" onfocus="BtnOnOver()" onblur="BtnOnOut()" TABINDEX=5 style='position:absolute;top:0%;left:0%;width:100%;height:20px'>
+ <div style='position:absolute;clip:rect(0px, 18px, 18px, 0px)'><img
+ src="buttons.gif" id="nb_sldshw" style='position:relative;left:-254px'></div>
+ </div>
+ </td>
+ <td>
+ <div id="nb_voiceBorder" style='display:none;position:absolute;top:0;left:-40px;
+ width:20px;height:20px' onfocus="BtnOnOver()" onblur="BtnOnOut()" TABINDEX=4 class=button>
+ <div style='position:absolute;clip:rect(0px, 18px, 18px, 0px)'><img
+ src="buttons.gif" id="nb_voice" title="Pause/Play Narration" style='position:
+ relative;left:-290px'></div>
+ </div>
+ </td>
+</table>
+
+<table style='position:relative' align=center cellpadding=0 cellspacing=0>
+ <td nowrap>
+ <div id="nb_prevBorder" onfocus="BtnOnOver()" onblur="BtnOnOut()" TABINDEX=2 class=button style='left:-30px'>
+ <div style='position:absolute;clip:rect(0px, 30px, 18px, 0px)'><img
+ src="buttons.gif" id="nb_prev" title="Previous Slide" style='position:relative;
+ left:0px'></div>
+ </div>
+ <span id="nav_text" style='position:relative;top:3px;width:100px;font-family:
+ Arial;color:buttontext;font-size:9pt'></span>
+ <div id="nb_nextBorder" onfocus="BtnOnOver()" onblur="BtnOnOut()" TABINDEX=3 class=button>
+ <div style='position:absolute;clip:rect(0px, 30px, 18px, 0px)'><img
+ src="buttons.gif" id="nb_next" title="Next Slide" style='position:relative;
+ left:-90px'></div>
+ </div>
+ </td>
+</table>
+</div>
+
+<div id=OtlNavObj onload="Load()" onmouseover="BtnOnOver()"
+onmousedown="BtnOnDown()" onmouseout="BtnOnOut()" onmouseup="BtnOnUp()"
+onkeypress="ExecBtn()" style='display:none;visibility:hidden'>
+
+<table style='position:relative;width:70px' align=left cellpadding=0 cellspacing=0>
+ <td nowrap><div title="Show/Hide
+Outline" id="nb_otl" onfocus="BtnOnOver()" onblur="BtnOnOut()" TABINDEX=11
+ style='position:absolute;top:0%;left:0%;width:100%;height:100%;cursor:default'>
+ <div id="nb_otlElem" align=center style='position:relative;padding:3px;font-family:Arial;
+ color:buttontext;font-size:9pt'>Outline</div></div>
+ </td>
+</table>
+
+<table style='position:relative' align=center cellpadding=0 cellspacing=0>
+ <td>
+ <div style='position:absolute;left:-18px;width:24px;height:20px;border-style:
+ solid;border-width:1px;border-color:threedface' onfocus="BtnOnOver()" onblur="BtnOnOut()" TABINDEX=12 id="nb_otlTxtBorder">
+ <div style='position:absolute;clip:rect(0px, 22px, 18px, 0px)'><img
+ src=buttons.gif id="nb_otlTxt" title="Expand/Collapse Outline"
+ style='position:relative;left:-157px'></div>
+ </div>
+ </td>
+</table>
+
+</div>
+
+<div id=OtlObj style='display:none;visibility:hidden;'>
+
+
+<table width="100%" style='font-family:Arial;font-size:9pt'>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>1</font></div>
+ </td>
+ <td width="100%">
+ <div id=PPTP1 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0001.htm');" id=PPTL1>GTL<span
+ style='mso-spacerun:yes'>  </span>Geometry Template Library</a></font></div>
+ <div id=PPTC1 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>-for stl-like polygon manipulation</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>2</font></div>
+ </td>
+ <td>
+ <div id=PPTP2 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0073.htm');" id=PPTL2>Overview</a></font></div>
+ <div id=PPTC2 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Intel badly needed high performance algorithms for planar polygon
+ manipulation</li>
+ <ul>
+ <li>I implemented them</li>
+ </ul>
+ <li>We have 2D Cartesian geometry</li>
+ <ul>
+ <li>Coordinate, Interval, Point, Rectangle, Polygon, Polygon Set</li>
+ <li>Library of concepts for each</li>
+ </ul>
+ <li>Many generic functions that operate on conceptual types</li>
+ <ul>
+ <li>API strives for symmetry, consistency and simplicity</li>
+ </ul>
+ <li>Some pretty heavy weight algorithms under the hood</li>
+ <li>3 man years and 30kloc</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>3</font></div>
+ </td>
+ <td>
+ <div id=PPTP3 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0068.htm');" id=PPTL3>Introduction</a></font></div>
+ <div id=PPTC3 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Implemented goofy template argument inheritance type system and
+ Manhattan geometry features</li>
+ <li>Request for interest from boost in 2007</li>
+ <ul>
+ <li>Discussed the design on boost dev list</li>
+ <li>Found out the design was bad and needed to be redone the boost way</li>
+ <ul>
+ <li>Thank you Joel Guzman</li>
+ </ul>
+ </ul>
+ <li>Added 45 degree geometry features</li>
+ <li>After six months of work we got permission from Intel to release under
+ boost license</li>
+ <ul>
+ <li>Discussed the code on the boost dev list</li>
+ <li>Got a lot of feedback on specific design considerations</li>
+ </ul>
+ <li>Rewrote the interfaces to be more generic by using tag dispatching</li>
+ <ul>
+ <li>Got more feedback on design considerations from boost, especially
+ refinement</li>
+ </ul>
+ <li>Re-rewrote the interfaces to be more generic still and based on SFINAE</li>
+ <li>Added arbitrary-angle geometry features</li>
+ <ul>
+ <li>Got feedback on arbitrary-angle algorithms and robustness
+ considerations from boost</li>
+ <ul>
+ <li>Thank you Fernando Cacciola</li>
+ </ul>
+ </ul>
+ <li>Ported new SFINAE interfaces to MSVC9</li>
+ <ul>
+ <li>Thank you Steven Watanabe</li>
+ </ul>
+ <li>The library now looks more like Joel said it should back in 2007</li>
+ <ul>
+ <li>We may pursue formal review this year</li>
+ </ul>
+ <li>Deployed library to internal users who are using it now to create the
+ next generation of silicon fabrication process technology and
+ microprocessors</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>4</font></div>
+ </td>
+ <td>
+ <div id=PPTP4 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0002.htm');" id=PPTL4>Agenda</a></font></div>
+ <div id=PPTC4 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>GTL Feature Set</li>
+ <li>Benchmark Comparisons</li>
+ <li>Generic Sweep-line Booleans Algorithm</li>
+ <li>Numerical Robustness</li>
+ <li>Geometry Concepts Type System</li>
+ <li>Booleans Operator Syntax</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>5</font></div>
+ </td>
+ <td>
+ <div id=PPTP5 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0003.htm');" id=PPTL5>Primary GTL Feature</a></font></div>
+ <div id=PPTC5 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Boolean operations on sets of polygons</li>
+ <ul>
+ <li>Manhattan</li>
+ <br>
+ <br>
+ <li>45-degree</li>
+ <br>
+ <br>
+ <br>
+ <li>Arbitrary Angle (XOR)</li>
+ </ul>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>6</font></div>
+ </td>
+ <td>
+ <div id=PPTP6 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0067.htm');" id=PPTL6>Using Booleans</a></font></div>
+ <div id=PPTC6 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Productive operator syntax</li>
+ <li>Clip polygon a against bounding box c, then subtract polygon b, storing
+ the result in polygon set d</li>
+ <li>Takes longer to say than to type</li>
+ <li>No try/catch and no memory management</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>7</font></div>
+ </td>
+ <td>
+ <div id=PPTP7 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0004.htm');" id=PPTL7>Details Of Booleans</a></font></div>
+ <div id=PPTC7 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>?</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>8</font></div>
+ </td>
+ <td>
+ <div id=PPTP8 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0005.htm');" id=PPTL8>Details of 45-degree
+ Booleans</a></font></div>
+ <div id=PPTC8 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Preserve 45-degree nature of geometry at output</li>
+ <li>Handle off-grid intersections by inserting an edge to approximate the
+ output region</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>9</font></div>
+ </td>
+ <td>
+ <div id=PPTP9 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0006.htm');" id=PPTL9>Boolean Operation Output
+ Modes</a></font></div>
+ <div id=PPTC9 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Manhattan Booleans</li>
+ <ul>
+ <li>Polygons with lists of holes</li>
+ <li>Keyhole holes to outer polygon</li>
+ <li>Horizontal and vertical sliced rectangle tiling</li>
+ </ul>
+ <li>45-degree Booleans</li>
+ <ul>
+ <li>Polygon with lists of holes</li>
+ <li>Keyhole holes to outer polygon</li>
+ <li>Vertical sliced trapezoid tiling</li>
+ </ul>
+ <li>Arbitrary-angle Booleans</li>
+ <ul>
+ <li>Polygon with lists of holes</li>
+ <li>Keyhole holes to outer polygon</li>
+ </ul>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>10</font></div>
+ </td>
+ <td>
+ <div id=PPTP10 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0007.htm');" id=PPTL10>Polygon
+ Buffering/Resizing/Offsetting</a></font></div>
+ <div id=PPTC10 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Manhattan</li>
+ <ul>
+ <li>Uniform resizing</li>
+ <li>Resizing by different amount in each of the four directions</li>
+ <li>Optionally leave corners unfilled</li>
+ </ul>
+ <li>45-Degree</li>
+ <ul>
+ <li>Uniform resizing</li>
+ <li>Preserve original topology or cut off acute angled corners at resizing
+ distance</li>
+ <li>Snapping options for moving 45-degree edges</li>
+ </ul>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>11</font></div>
+ </td>
+ <td>
+ <div id=PPTP11 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0010.htm');" id=PPTL11>Many More Features</a></font></div>
+ <div id=PPTC11 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Rectangle query tree</li>
+ <li>Maximum enclosed rectangle in Manhattan polygon</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge/Map Overlay</li>
+ <li>Etc.</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>12</font></div>
+ </td>
+ <td>
+ <div id=PPTP12 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0011.htm');" id=PPTL12>Small Arbitrary-angle
+ Input Benchmark Comparison</a></font></div>
+ <div id=PPTC12 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Runtime for intersection operation</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>13</font></div>
+ </td>
+ <td>
+ <div id=PPTP13 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0012.htm');" id=PPTL13>Large Scale
+ Arbitrary-angle Performance Comparison</a></font></div>
+ <div id=PPTC13 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>One to two orders of magnitude larger than previous benchmark</li>
+ <li>Though fastest for small inputs, GPC does not scale well</li>
+ <li>gtlb excludes line segment intersection</li>
+ <li>Core Boolean is n log n, Intel micro-architecture accelerates processing
+ of large vectorss</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>14</font></div>
+ </td>
+ <td>
+ <div id=PPTP14 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0013.htm');" id=PPTL14>Manhattan Benchmarking</a></font></div>
+ <div id=PPTC14 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>100X performance delta between optimal gtl 90-degree algorithm and
+ general algorithms</li>
+ <li>gtl 45-degree Boolean is optimal</li>
+ <li>Core arbitrary angle Boolean (gtlb) is optimal</li>
+ <li>gtl arbitrary angle Boolean is slightly suboptimal due to line segment
+ intersection</li>
+ <li>CGAL is optimal, but has a high constant factor</li>
+ <li>GPC and PolyBoolean both scale sub-optimally</li>
+ <br>
+ <br>
+ <br>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>15</font></div>
+ </td>
+ <td>
+ <div id=PPTP15 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0014.htm');" id=PPTL15>Benchmarking
+ Conclusions about GTL</a></font></div>
+ <div id=PPTC15 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>GTL arbitrary-angle Booleans is near optimal</li>
+ <li>Performance of GTL arbitrary-angle Booleans is middle-of-road for small
+ inputs</li>
+ <li>Performance of GTL arbitrary-angle Booleans is best in class for large
+ inputs</li>
+ <li>Performance of GTL could be improved by up to 10X with further work on
+ the arbitrary-angle Booleans</li>
+ <li>If you have 45-degree or Manhattan polygons gtl provides 50X and 100X
+ performance advantage over cgal</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>16</font></div>
+ </td>
+ <td>
+ <div id=PPTP16 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0016.htm');" id=PPTL16>Observations on GPC,
+ CGAL and PolyBoolean</a></font></div>
+ <div id=PPTC16 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>We found at least two different bugs in PolyBoolean</li>
+ <li>We found one bug in CGAL</li>
+ <li>GPC and PolyBoolean have very difficult to use C-style APIs</li>
+ <li>GPC and PolyBoolean cannot merge multiple overlapping polygons in one
+ step</li>
+ <li>GPC and PolyBoolean both have O(n<sup>1.5</sup>log n) line segment
+ intersection algorithms (sort all edges that intersect sweep-line at
+ every x)</li>
+ <li>PolyBoolean has O(n * m * k) algorithm to determine which polygons
+ contain which holes (n polygons, m holes, k points per polygon), which
+ is O(n^2) in the worst case</li>
+ <li>CGAL requires that overlapping polygons be merged before being an input
+ to a Boolean, but can do that itself</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>17</font></div>
+ </td>
+ <td>
+ <div id=PPTP17 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0018.htm');" id=PPTL17>Observations About
+ Preconditions</a></font></div>
+ <div id=PPTC17 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>CGAL throws an “Precondition Violated” exception if an input polygon is
+ self intersecting/overlapping or has “closed” semantic at last vertex</li>
+ <li>PolyBoolean returns a “bad input polygon” error code if an input polygon
+ is self intersecting/overlapping has zero area or is a hole with no
+ enclosing polygon</li>
+ <li>Both PolyBoolean and CGAL inform the user the input is bad when a bug in
+ their algorithms leads to a fatal error</li>
+ <li>GPC produces garbage output when input polygons are self
+ intersecting/overlapping</li>
+ <li>GTL has no preconditions and produces correct output in all cases</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>18</font></div>
+ </td>
+ <td>
+ <div id=PPTP18 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0015.htm');" id=PPTL18>Generic Sweep-line
+ Algorithm</a></font></div>
+ <div id=PPTC18 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Sweep-line algorithms for polygon clipping is a tradition that goes back
+ to 1979</li>
+ <li>Sweep-line is the best known method for line segment intersection</li>
+ <li>GTL implements different sweep lines for Manhattan, 45-degree and
+ general case</li>
+ <li>GTL Booleans sweep-lines are parameterized to allow them to perform
+ multiple operations</li>
+ <br>
+ <br>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>19</font></div>
+ </td>
+ <td>
+ <div id=PPTP19 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0019.htm');" id=PPTL19>Better Booleans through
+ Calculus</a></font></div>
+ <div id=PPTC19 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>We use the same algorithm for Manhattan, 45-degree and general polygon
+ Booleans</li>
+ <br>
+ <br>
+ <br>
+ <br>
+ <li>We will explain how it works in the Manhattan case first, then how we
+ generalize it</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>20</font></div>
+ </td>
+ <td>
+ <div id=PPTP20 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0020.htm');" id=PPTL20>Boolean Polygon Model</a></font></div>
+ <div id=PPTC20 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>We define a polygon as a two dimensional Boolean function</li>
+ <ul>
+ <li>Function evaluates to true inside the polygon</li>
+ <li>Function evaluates to false outside the polygon</li>
+ </ul>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>21</font></div>
+ </td>
+ <td>
+ <div id=PPTP21 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0021.htm');" id=PPTL21>Math With Polygon Model</a></font></div>
+ <div id=PPTC21 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Because the Polygon is now modeled mathematically…</li>
+ <li>We can manipulate it with calculus</li>
+ <li>The derivative with respect to x of the polygon function is the change
+ in polygon count as we cross its vertical edges</li>
+ <li>In one dimension the polygon looks like a step function at its vertical
+ edges</li>
+ <li>Derivative of a step function is an impulse with area of one</li>
+ <li>Summing changes in polygon count from left to right (scanline) performs
+ an integration over the df/dx to produce the original polygon</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>22</font></div>
+ </td>
+ <td>
+ <div id=PPTP22 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0022.htm');" id=PPTL22>The Great Thing About
+ Math</a></font></div>
+ <div id=PPTC22 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>If it works once, it will work a second time</li>
+ <li>The derivative with respect to y of the d/dx of polygon function f is
+ the change in the change in polygon count with respect to x as we enter
+ and leave its vertical edges in the y dimension</li>
+ <li>In the y dimension d f/dx (vertical edges) looks like a step function</li>
+ <li>Derivative of a step function is an impulse with area of one</li>
+ <li>Summing changes in y of changes in x from low to high y integrates the
+ function and produces changes in x (edges) that can be integrated left
+ to right to produce polygons</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>23</font></div>
+ </td>
+ <td>
+ <div id=PPTP23 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0023.htm');" id=PPTL23>1D Boolean OR Operation
+ Example</a></font></div>
+ <div id=PPTC23 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>We want a data model for polygons that can provide the input for
+ sweep-line and be constructed from n polygon verticies in O(n log n)
+ time</li>
+ <li>If you want to sum two piece-wise linear functions (continuous)</li>
+ <ul>
+ <li>you can take the derivative of each (discreet)</li>
+ <li>combine their derivatives in linear time by merging (sum any
+ overlapping values)</li>
+ <li>and then integrate by summing from low to high (in linear time)</li>
+ </ul>
+ <li>The math is what allows the boolean algorithm to achieve optimal time
+ complexity</li>
+ <ul>
+ <li>All we do is sort vertices, but you have to carry the dxdy values along
+ with them so that the meaning of the vertices is retained</li>
+ </ul>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>24</font></div>
+ </td>
+ <td>
+ <div id=PPTP24 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0027.htm');" id=PPTL24>2D, Two Layer Boolean
+ XOR Example</a></font></div>
+ <div id=PPTC24 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>XOR an L shape with a rectangle</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>25</font></div>
+ </td>
+ <td>
+ <div id=PPTP25 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0028.htm');" id=PPTL25>XOR Example</a></font></div>
+ <div id=PPTC25 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Preprocess input polygons into a merged, sorted sequence of change on y
+ of change on x of polygon intersection count</li>
+ <li>Decomposition is linear, sort is n log n, merge is linear</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>26</font></div>
+ </td>
+ <td>
+ <div id=PPTP26 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0029.htm');" id=PPTL26>XOR Example</a></font></div>
+ <div id=PPTC26 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Sweep-line data structure initialized to a single interval from
+ -infinity to +infinity with intersection count of zero for each input
+ layer</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>27</font></div>
+ </td>
+ <td>
+ <div id=PPTP27 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0030.htm');" id=PPTL27>XOR Example</a></font></div>
+ <div id=PPTC27 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Intersect first input interval of intersection count change on x against
+ sweep-line data structure of intersection count intervals</li>
+ <li>Intersection count changes from zero to one on layer1 on that interval</li>
+ <li>0 xor 0 = false, 1 xor 0 = true, output a left edge because Boolean
+ logic changed from false to true</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>28</font></div>
+ </td>
+ <td>
+ <div id=PPTP28 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0031.htm');" id=PPTL28>XOR Example</a></font></div>
+ <div id=PPTC28 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Intersect second input interval against sweep-line data structure</li>
+ <li>Intersection count changes from zero to one for layer2 on that interval</li>
+ <li>1 xor 0 = true, 1 xor 1 = false, so output a right edge because Boolean
+ logic has changed from true to false</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>29</font></div>
+ </td>
+ <td>
+ <div id=PPTP29 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0032.htm');" id=PPTL29>XOR Example</a></font></div>
+ <div id=PPTC29 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Intersect third input interval against sweep-line data structure</li>
+ <li>Intersection count changes from one to zero for layer1 on that interval</li>
+ <li>1 xor 0 = false, 0 xor 1 = false, so no output</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>30</font></div>
+ </td>
+ <td>
+ <div id=PPTP30 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0033.htm');" id=PPTL30>XOR Example</a></font></div>
+ <div id=PPTC30 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Intersect fourth input interval against sweep-line data structure</li>
+ <li>Intersection count changes from one to zero for layer1 on one interval</li>
+ <li>1 xor 0 = true, 0 xor 0 = false, so output a right edge because Boolean
+ logic has changed from true to false</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>31</font></div>
+ </td>
+ <td>
+ <div id=PPTP31 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0034.htm');" id=PPTL31>XOR Example</a></font></div>
+ <div id=PPTC31 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Intersect fifth input interval against sweep-line data structure</li>
+ <li>Intersection count changes from one to zero for layer1 on two intervals</li>
+ <li>1 xor 0 = true, 0 xor 0 = false, so output a right edge for the first
+ interval</li>
+ <li>1 xor 1 = false, 0 xor 1 = true, so output a left edge for the second
+ interval</li>
+ <br>
+ <br>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>32</font></div>
+ </td>
+ <td>
+ <div id=PPTP32 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0035.htm');" id=PPTL32>XOR Example</a></font></div>
+ <div id=PPTC32 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Intersect sixth input interval against sweep-line data structure</li>
+ <li>Intersection count changes from one to zero for layer2 on one interval</li>
+ <li>0 xor 1 = true, 0 xor 0 = false, so output a right edge</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>33</font></div>
+ </td>
+ <td>
+ <div id=PPTP33 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0036.htm');" id=PPTL33>XOR Example</a></font></div>
+ <div id=PPTC33 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Sweep-line Polygon Formation produces output polygon</li>
+ <li>Could be done in the same pass as the xor</li>
+ <li>Leaving it in the derivative form allows direct input to a subsequent
+ Boolean</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>34</font></div>
+ </td>
+ <td>
+ <div id=PPTP34 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0037.htm');" id=PPTL34>Generalizing The
+ Algorithm</a></font></div>
+ <div id=PPTC34 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>We want the derivative of this vertex:</li>
+ <li>We apply d/dx and d/dy</li>
+ <li>To get a result in terms of &#952;:</li>
+ <li>We sweep the &#952; from low to high:</li>
+ <li>As we integrate wrt. y:</li>
+ <li>And finally integrate wrt. x:</li>
+ <li>To which we assign counter clockwise winding and output partial polygon:</li>
+ <br>
+ <br>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>35</font></div>
+ </td>
+ <td>
+ <div id=PPTP35 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0038.htm');" id=PPTL35>The Algorithm Requires
+ No Preconditions</a></font></div>
+ <div id=PPTC35 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>The great thing about math is that it’s general</li>
+ <li>Every special case is just another instance of the general case</li>
+ <li>Every case that breaks other algorithms is handled implicitly and
+ correctly</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>36</font></div>
+ </td>
+ <td>
+ <div id=PPTP36 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0041.htm');" id=PPTL36>Taking Things One Step
+ Further</a></font></div>
+ <div id=PPTC36 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>The Booleans algorithm is parameterized</li>
+ <li>N layer operations are implemented with a single pass of the same
+ algorithm</li>
+ <li>Is used to provide connectivity extraction / spatial map join and
+ property merge / map overlay</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>37</font></div>
+ </td>
+ <td>
+ <div id=PPTP37 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0039.htm');" id=PPTL37>Robustness</a></font></div>
+ <div id=PPTC37 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Strategies employed by GTL are provably robust for all cases</li>
+ <ul>
+ <li>100% robust--not just “works for all the cases we’ve tried”</li>
+ </ul>
+ <li>A firm guarantee of 100% numerical robustness is a very comforting
+ feature</li>
+ <li>PolyBoolean fails to find polygons that enclose some holes because its
+ point-in-polygon calculation is not numerically robust</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>38</font></div>
+ </td>
+ <td>
+ <div id=PPTP38 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0064.htm');" id=PPTL38>Robust Predicate
+ Primitives</a></font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>39</font></div>
+ </td>
+ <td>
+ <div id=PPTP39 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0040.htm');" id=PPTL39>Robust Comparison of
+ Slope</a></font></div>
+ <div id=PPTC39 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li> Segment 1: (x11,y11) to (x12, y12)</li>
+ <li> Segment 2: (x21,y21) to (x22, y22)</li>
+ <li> Slope1: (y12 - y11) / (x12 - x11)</li>
+ <li> Slope2: (y22 - y21) / (x22 - x21)</li>
+ <li> Slope1 &lt; Slope2 iff (y12 - y11)(x22 - x21) &lt; (x12 - x11)(y22 -
+ y21)</li>
+ <li>Cross multiplication avoids integer truncation of division</li>
+ <li>Requires 65 bits for signed 32 bit integer coordinates</li>
+ <ul>
+ <li>Use long double, multi-precision, SSE quad word, or unsigned 64 bit
+ integer with sign computed separately</li>
+ </ul>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>40</font></div>
+ </td>
+ <td>
+ <div id=PPTP40 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0042.htm');" id=PPTL40>Robust Comparison Of
+ Point and Line Segment</a></font></div>
+ <div id=PPTC40 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Make a 2<sup>nd</sup> segment from one end of the segment to the point</li>
+ <li>Compare slopes</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>41</font></div>
+ </td>
+ <td>
+ <div id=PPTP41 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0045.htm');" id=PPTL41>Robust Line Segment
+ Intersection Check</a></font></div>
+ <div id=PPTC41 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Compute whether the two ends of each segment are on, above or below the
+ other segment</li>
+ <li>Both points of one segment on the same side of the other means no
+ intersection</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>42</font></div>
+ </td>
+ <td>
+ <div id=PPTP42 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0065.htm');" id=PPTL42>Robust Point In Polygon
+ Predicate</a></font></div>
+ <div id=PPTC42 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>For all edges which contain the x value of the point within their x
+ interval</li>
+ <ul>
+ <li>Accumulate the sum of such edges the point is above</li>
+ </ul>
+ <li>The point is inside if the sum is odd</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>43</font></div>
+ </td>
+ <td>
+ <div id=PPTP43 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0044.htm');" id=PPTL43>Robust Calculation of
+ Slope Intercept</a></font></div>
+ <div id=PPTC43 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Apply GMP multi-precision rational and compute exact result</li>
+ <li>To compare two slope intercepts</li>
+ <br>
+ <br>
+ <br>
+ <br>
+ <li> (requires 97 bits of precision)</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>44</font></div>
+ </td>
+ <td>
+ <div id=PPTP44 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0046.htm');" id=PPTL44>Robust Calculation of
+ Line Segment Intersection Point</a></font></div>
+ <div id=PPTC44 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Apply GMP multi-precision rational and compute exact result.</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>45</font></div>
+ </td>
+ <td>
+ <div id=PPTP45 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0047.htm');" id=PPTL45>Robust Snapping of
+ Non-Integer Intersection Points to Grid</a></font></div>
+ <div id=PPTC45 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Truncate down and to left</li>
+ <li>Causes Edges to move slightly</li>
+ <li>Moving edges may introduce artifacts</li>
+ <li>Non overlapping edges may become parallel and overlap</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>46</font></div>
+ </td>
+ <td>
+ <div id=PPTP46 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0049.htm');" id=PPTL46><span
+ style='mso-spacerun:yes'> </span></a></font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>47</font></div>
+ </td>
+ <td>
+ <div id=PPTP47 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0048.htm');" id=PPTL47>Intersections Creating
+ Intersections</a></font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>48</font></div>
+ </td>
+ <td>
+ <div id=PPTP48 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0050.htm');" id=PPTL48>Acceptable vs.
+ Unacceptable Artifacts</a></font></div>
+ <div id=PPTC48 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>An artifact is unacceptable</li>
+ <ul>
+ <li>if it causes any line segments to intersect other than at their end
+ points</li>
+ <li>if it causes a closed cycle in the input to become open at the output</li>
+ </ul>
+ <li>Inserting vertices on line segments and merging vertices are acceptable</li>
+ <li>We insert vertices and merge vertices to snap to integer grid robustly</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>49</font></div>
+ </td>
+ <td>
+ <div id=PPTP49 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0066.htm');" id=PPTL49>What code that uses GTL
+ looks like</a></font></div>
+ <div id=PPTC49 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>Two lines of code in the example invoke five different GTL algorithms</li>
+ <li>Arguments passed into functions are not GTL data types</li>
+ <li>The code is maximally concise, yet easy to read</li>
+ <li>Clip b to the bounding box of a, XOR that with a shrunk by ten then
+ merge into result</li>
+ <li>Details of memory management for intermediate results are abstracted
+ away from the use of algorithms</li>
+ <li>Such code is easy to write and easy to maintain</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>50</font></div>
+ </td>
+ <td>
+ <div id=PPTP50 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0052.htm');" id=PPTL50>C++ Concepts-based Type
+ System</a></font></div>
+ <div id=PPTC50 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>GTL allows application data types to be arguments to its API</li>
+ <li>You can check if your point type lies inside your polygon type with a
+ call to GTL contains() passing in your point and your polygon</li>
+ <li> gtl::contains(my_polygon, my_point);</li>
+ <li>This is accomplished by use of a C++ Concepts-based statically
+ polymorphic type system</li>
+ <li>This is much more convenient than copying your polygon into a GTL
+ polygon data type first</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>51</font></div>
+ </td>
+ <td>
+ <div id=PPTP51 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0054.htm');" id=PPTL51>C++ Traits</a></font></div>
+ <div id=PPTC51 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>GTL accesses your geometry types through type traits that you must
+ provide</li>
+ <li>These traits map your implementation of a geometry object to GTL’s
+ concept of how a such geometry behaves</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>52</font></div>
+ </td>
+ <td>
+ <div id=PPTP52 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0055.htm');" id=PPTL52>C++ Concepts
+ Overloading</a></font></div>
+ <div id=PPTC52 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>GTL functions that expect a polygon check whether the input data type is
+ registered as a polygon and will not instantiate if the check fails</li>
+ <li>A different gtl function with the same name can instantiate if the data
+ type turns out to be registered as a rectangle, or a point</li>
+ <li>The mechanism for doing this is called substitution failure is not an
+ error (SFINAE)</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>53</font></div>
+ </td>
+ <td>
+ <div id=PPTP53 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0058.htm');" id=PPTL53>Concept Refinement</a></font></div>
+ <div id=PPTC53 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>A rectangle is a refinement of the concept of a polygon</li>
+ <ul>
+ <li>A rectangle narrows-down the definition of polygon to four sided,
+ 90-degree angles</li>
+ </ul>
+ <li>A function that requires read only access to a polygon can always work
+ on a rectangle</li>
+ <ul>
+ <li><span style='mso-spacerun:yes'> </span>A polygon is a generalization of
+ a rectangle</li>
+ </ul>
+ <li>A function that requires write-access to a polygon cannot work on a
+ rectangle</li>
+ <ul>
+ <li>A rectangle cannot store a polygon</li>
+ </ul>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>54</font></div>
+ </td>
+ <td>
+ <div id=PPTP54 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0059.htm');" id=PPTL54>GTL Refinement
+ Relationships</a></font></div>
+ <div id=PPTC54 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>GTL assign() function</li>
+ <ul>
+ <li>copies data between objects of the same conceptual type</li>
+ <li>copies data from a refinement to a more general conceptual type</li>
+ <li>instantiates for each of the 49 legal combinations</li>
+ <li>requires only one overload definition per concept type</li>
+ <li>each overload protected by SFINAE concept check</li>
+ <br>
+ <br>
+ </ul>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>55</font></div>
+ </td>
+ <td>
+ <div id=PPTP55 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0060.htm');" id=PPTL55>Concept Casting</a></font></div>
+ <div id=PPTC55 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>A Manhattan polygon is a refinement of a general polygon</li>
+ <li>Given a general polygon and the certainly that it contains only
+ Manhattan data</li>
+ <ul>
+ <li>GTL view_as&lt;polygon_90_concept&gt;() can allow that polygon to be
+ legally passed to functions expecting a Manhattan polygon</li>
+ </ul>
+ <li>This is useful when general objects are used by applications to model
+ several specific kinds of data</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>56</font></div>
+ </td>
+ <td>
+ <div id=PPTP56 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0053.htm');" id=PPTL56>Booleans Operator
+ Syntax</a></font></div>
+ <div id=PPTC56 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>GTL overloads the C++ bit-wise logical operators &amp;|^ and the
+ subtraction operator -</li>
+ <li>They perform Boolean AND, OR, XOR and AND-NOT (SUBTRACT)</li>
+ <li>They work with any polygons, rectangles, vectors or lists of polygons or
+ rectangles and the GTL polygon-set data types</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>57</font></div>
+ </td>
+ <td>
+ <div id=PPTP57 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0061.htm');" id=PPTL57>GTL Booleans Operator
+ Templates</a></font></div>
+ <div id=PPTC57 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>C++ requires that operators return their result by value</li>
+ <li>The return value of a GTL Boolean operator function call is an operator
+ template</li>
+ <li>The operator template stores references to the arguments and defers the
+ operation until the result is requested</li>
+ <li>In this way the operation is performed after the operator template is
+ returned by the operator function</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>58</font></div>
+ </td>
+ <td>
+ <div id=PPTP58 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0062.htm');" id=PPTL58>Operator Templates</a></font></div>
+ <div id=PPTC58 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>When chaining operator templates they cache references to each other and
+ build an expression tree</li>
+ <li>When the final result is requested the expression is evaluated and the
+ result is produced</li>
+ <li>This avoids unnecessary copying of intermediate results</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>59</font></div>
+ </td>
+ <td>
+ <div id=PPTP59 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0070.htm');" id=PPTL59>MSVC SFINAE limitation</a></font></div>
+ <div id=PPTC59 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>SFINAE works in MSVC for the simple cases</li>
+ <li>Order of template instantiation in MSVC depends on type of template</li>
+ <ul>
+ <li>compile time constant vs. by type</li>
+ </ul>
+ <li>Substitution failure of a nested template is an error in MSVC</li>
+ <li>The only way to get reliable SFINAE behavior out of MSVC is to use
+ enable_if with compile time logic expressions</li>
+ <li>It took two weeks of work to port the code from EDG/gcc compatibility to
+ MSVC</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>60</font></div>
+ </td>
+ <td>
+ <div id=PPTP60 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0069.htm');" id=PPTL60>EDG SFINAE Bug</a></font></div>
+ <div id=PPTC60 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>An unnamed enum type cannot be referred to in the template definition
+ when instantiating a template on that type</li>
+ <li>STL uses unnamed enum types with arithmetic operators</li>
+ <li>Substituion of my generic operators for the unnamed STL enum types
+ should fail</li>
+ <li>A bug in older versions of EDG frontend produces a syntax error instead
+ of SFINAE if the template references it in the definition</li>
+ <li>Currently fixed in the version of EGD used by the new icc11</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+ <tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
+ style='cursor:hand'>
+ <td align=right valign=top>
+ <div class=sldNum><font size=2>61</font></div>
+ </td>
+ <td>
+ <div id=PPTP61 class=PTxt><font size=2><a
+ href="javascript:GoToSld('slide0071.htm');" id=PPTL61>EDG Bug Workaround</a></font></div>
+ <div id=PPTC61 class=CTxt style='display:none'><font size=2>
+ <ul>
+ <li>If substitution of a nested template parameter fails before EDG tries to
+ instantiate the template that would refer to the unnamed enum type no
+ syntax error is generated</li>
+ <li>EDG supports nested SFINAE, of course</li>
+ <li>I provide an intermediate meta-function with preprocessor macros in its
+ definition that results in nested SFINAE except when compiled by MSVC to
+ work around both bugs</li>
+ </ul>
+ </font></div>
+ </td>
+ </tr>
+</table>
+
+
+
+</div>
+
+<div style='display:none'><a href=master03.htm></a><a href=master03.xml></a><a
+href=preview.wmf></a><a href=pres.xml></a><a href=slide0001.htm></a><a
+href="slide0001_image001.png"></a><a
+href=slide0073.htm></a><a href=slide0068.htm></a><a href=slide0002.htm></a><a
+href="slide0002_image003.png"></a><a
+href=slide0003.htm></a><a
+href="slide0003_image006.jpg"></a><a
+href="slide0003_image008.jpg"></a><a
+href="slide0003_image010.jpg"></a><a
+href="slide0003_image012.gif"></a><a href=slide0067.htm></a><a
+href="slide0067_image013.gif"></a><a href=slide0004.htm></a><a
+href="slide0004_image014.png"></a><a
+href="slide0004_image016.png"></a><a
+href="slide0004_image018.gif"></a><a
+href="slide0004_image020.gif"></a><a
+href="slide0004_image022.gif"></a><a
+href="slide0004_image024.gif"></a><a
+href="slide0004_image026.gif"></a><a
+href="slide0004_image028.gif"></a><a
+href=slide0005.htm></a><a
+href="slide0005_image031.jpg"></a><a href=slide0006.htm></a><a
+href=slide0006.xml></a><a
+href="slide0006_image033.gif"></a><a
+href="slide0006_image035.gif"></a><a
+href="slide0006_image037.gif"></a><a
+href="slide0006_image039.gif"></a><a
+href="slide0006_image041.gif"></a><a
+href="slide0006_image043.gif"></a><a
+href="slide0006_image045.gif"></a><a
+href="slide0006_image047.gif"></a><a
+href="slide0006_image049.gif"></a><a
+href="slide0006_image051.gif"></a><a
+href="slide0006_image053.gif"></a><a
+href="slide0006_image055.gif"></a><a
+href="slide0006_image057.gif"></a><a
+href="slide0006_image059.gif"></a><a
+href="slide0006_image061.gif"></a><a
+href="slide0006_image063.gif"></a><a
+href="slide0006_image065.gif"></a><a
+href="slide0006_image067.gif"></a><a
+href="slide0006_image069.gif"></a><a
+href="slide0006_image071.gif"></a><a
+href="slide0006_image073.gif"></a><a
+href="slide0006_image075.gif"></a><a
+href="slide0006_image077.gif"></a><a
+href="slide0006_image079.gif"></a><a
+href="slide0006_image081.gif"></a><a href=slide0007.htm></a><a
+href="slide0007_image082.gif"></a><a href=slide0010.htm></a><a
+href="slide0010_image083.gif"></a><a href=slide0011.htm></a><a
+href="slide0011_image084.png"></a><a
+href="slide0011_image086.png"></a><a
+href="slide0011_image088.gif"></a><a
+href="slide0011_image090.png"></a><a
+href="slide0011_image092.gif"></a><a href=slide0012.htm></a><a
+href="slide0012_image093.png"></a><a
+href="slide0012_image095.gif"></a><a
+href="slide0012_image097.gif"></a><a
+href="slide0012_image099.gif"></a><a
+href=slide0013.htm></a><a
+href="slide0013_image102.jpg"></a><a
+href="slide0013_image104.gif"></a><a
+href="slide0013_image106.gif"></a><a
+href="slide0013_image108.gif"></a><a
+href="slide0013_image110.gif"></a><a
+href="slide0013_image112.gif"></a><a
+href="slide0013_image114.gif"></a><a
+href="slide0013_image116.gif"></a><a
+href="slide0013_image118.gif"></a><a href=slide0014.htm></a><a
+href=slide0016.htm></a><a href=slide0018.htm></a><a href=slide0015.htm></a><a
+href=slide0019.htm></a><a
+href="slide0019_image120.jpg"></a><a
+href="slide0019_image122.jpg"></a><a href=slide0020.htm></a><a
+href="slide0020_image123.gif"></a><a
+href="slide0020_image125.gif"></a><a
+href="slide0020_image127.gif"></a><a
+href=slide0021.htm></a><a
+href="slide0021_image130.gif"></a><a
+href="slide0021_image132.gif"></a><a
+href="slide0021_image134.gif"></a><a
+href="slide0021_image136.gif"></a><a
+href="slide0021_image138.gif"></a><a
+href="slide0021_image140.gif"></a><a
+href="slide0021_image142.gif"></a><a
+href="slide0021_image144.gif"></a><a
+href="slide0021_image146.gif"></a><a
+href=slide0022.htm></a><a
+href="slide0022_image149.gif"></a><a
+href="slide0022_image151.gif"></a><a
+href="slide0022_image153.gif"></a><a
+href="slide0022_image155.gif"></a><a
+href="slide0022_image157.gif"></a><a
+href="slide0022_image159.gif"></a><a
+href="slide0022_image161.gif"></a><a
+href="slide0022_image163.gif"></a><a
+href="slide0022_image165.gif"></a><a
+href="slide0022_image167.gif"></a><a
+href="slide0022_image169.gif"></a><a href=slide0023.htm></a><a
+href="slide0023_image170.gif"></a><a
+href="slide0023_image172.gif"></a><a
+href="slide0023_image174.gif"></a><a
+href="slide0023_image176.gif"></a><a
+href="slide0023_image178.gif"></a><a
+href="slide0023_image180.gif"></a><a
+href="slide0023_image182.gif"></a><a
+href="slide0023_image184.gif"></a><a
+href="slide0023_image186.gif"></a><a
+href="slide0023_image188.gif"></a><a
+href="slide0023_image190.gif"></a><a
+href="slide0023_image192.gif"></a><a
+href="slide0023_image194.gif"></a><a
+href="slide0023_image196.gif"></a><a
+href="slide0023_image198.gif"></a><a
+href="slide0023_image200.gif"></a><a
+href="slide0023_image202.gif"></a><a
+href="slide0023_image204.gif"></a><a
+href="slide0023_image206.gif"></a><a
+href="slide0023_image208.gif"></a><a href=slide0027.htm></a><a
+href="slide0027_image209.gif"></a><a
+href="slide0027_image211.gif"></a><a
+href="slide0027_image213.gif"></a><a
+href="slide0027_image215.gif"></a><a
+href="slide0027_image217.gif"></a><a
+href="slide0027_image219.gif"></a><a
+href="slide0027_image221.gif"></a><a
+href="slide0027_image223.gif"></a><a
+href="slide0027_image225.gif"></a><a
+href="slide0027_image227.gif"></a><a
+href="slide0027_image229.gif"></a><a
+href="slide0027_image231.gif"></a><a href=slide0028.htm></a><a
+href="slide0028_image232.gif"></a><a
+href="slide0028_image234.gif"></a><a
+href="slide0028_image236.gif"></a><a
+href="slide0028_image238.gif"></a><a
+href="slide0028_image240.gif"></a><a
+href="slide0028_image242.gif"></a><a
+href="slide0028_image244.gif"></a><a
+href="slide0028_image246.gif"></a><a
+href="slide0028_image248.gif"></a><a
+href="slide0028_image250.gif"></a><a
+href="slide0028_image252.gif"></a><a
+href="slide0028_image254.gif"></a><a
+href="slide0028_image256.gif"></a><a
+href="slide0028_image258.gif"></a><a
+href="slide0028_image260.gif"></a><a
+href="slide0028_image262.gif"></a><a
+href="slide0028_image264.gif"></a><a
+href="slide0028_image266.gif"></a><a href=slide0029.htm></a><a
+href="slide0029_image267.gif"></a><a
+href="slide0029_image269.gif"></a><a
+href="slide0029_image271.gif"></a><a
+href="slide0029_image273.gif"></a><a
+href="slide0029_image275.gif"></a><a
+href="slide0029_image277.gif"></a><a href=slide0030.htm></a><a
+href="slide0030_image278.gif"></a><a
+href="slide0030_image280.gif"></a><a
+href="slide0030_image282.gif"></a><a
+href="slide0030_image284.gif"></a><a
+href="slide0030_image286.gif"></a><a
+href="slide0030_image288.gif"></a><a
+href="slide0030_image290.gif"></a><a
+href="slide0030_image292.gif"></a><a href=slide0031.htm></a><a
+href="slide0031_image293.gif"></a><a
+href="slide0031_image295.gif"></a><a
+href="slide0031_image297.gif"></a><a
+href="slide0031_image299.gif"></a><a
+href="slide0031_image301.gif"></a><a
+href="slide0031_image303.gif"></a><a
+href="slide0031_image305.gif"></a><a
+href="slide0031_image307.gif"></a><a
+href="slide0031_image309.gif"></a><a href=slide0032.htm></a><a
+href="slide0032_image310.gif"></a><a
+href="slide0032_image312.gif"></a><a
+href="slide0032_image314.gif"></a><a
+href="slide0032_image316.gif"></a><a
+href="slide0032_image318.gif"></a><a
+href="slide0032_image320.gif"></a><a
+href="slide0032_image322.gif"></a><a
+href="slide0032_image324.gif"></a><a
+href="slide0032_image326.gif"></a><a
+href=slide0033.htm></a><a
+href="slide0033_image329.gif"></a><a
+href="slide0033_image331.gif"></a><a
+href="slide0033_image333.gif"></a><a
+href="slide0033_image335.gif"></a><a
+href="slide0033_image337.gif"></a><a
+href="slide0033_image339.gif"></a><a
+href="slide0033_image341.gif"></a><a
+href="slide0033_image343.gif"></a><a
+href="slide0033_image345.gif"></a><a
+href=slide0034.htm></a><a
+href="slide0034_image348.gif"></a><a
+href="slide0034_image350.gif"></a><a
+href="slide0034_image352.gif"></a><a
+href="slide0034_image354.gif"></a><a
+href="slide0034_image356.gif"></a><a
+href="slide0034_image358.gif"></a><a
+href="slide0034_image360.gif"></a><a
+href="slide0034_image362.gif"></a><a
+href="slide0034_image364.gif"></a><a
+href="slide0034_image366.gif"></a><a
+href="slide0034_image368.gif"></a><a
+href="slide0034_image370.gif"></a><a href=slide0035.htm></a><a
+href="slide0035_image371.gif"></a><a
+href="slide0035_image373.gif"></a><a
+href="slide0035_image375.gif"></a><a
+href="slide0035_image377.gif"></a><a
+href="slide0035_image379.gif"></a><a
+href="slide0035_image381.gif"></a><a
+href="slide0035_image383.gif"></a><a
+href="slide0035_image385.gif"></a><a
+href="slide0035_image387.gif"></a><a
+href="slide0035_image389.gif"></a><a
+href="slide0035_image391.gif"></a><a
+href="slide0035_image393.gif"></a><a
+href="slide0035_image395.gif"></a><a
+href="slide0035_image397.gif"></a><a href=slide0036.htm></a><a
+href="slide0036_image398.gif"></a><a
+href="slide0036_image400.gif"></a><a
+href="slide0036_image402.gif"></a><a
+href="slide0036_image404.gif"></a><a
+href="slide0036_image406.gif"></a><a
+href="slide0036_image408.gif"></a><a
+href="slide0036_image410.gif"></a><a
+href="slide0036_image412.gif"></a><a
+href="slide0036_image414.gif"></a><a
+href="slide0036_image416.gif"></a><a
+href="slide0036_image418.gif"></a><a
+href="slide0036_image420.gif"></a><a href=slide0037.htm></a><a
+href="slide0037_image421.gif"></a><a
+href="slide0037_image423.gif"></a><a
+href="slide0037_image425.gif"></a><a
+href="slide0037_image427.gif"></a><a href=slide0038.htm></a><a
+href="slide0038_image428.gif"></a><a
+href=slide0041.htm></a><a href=slide0039.htm></a><a href=slide0064.htm></a><a
+href="slide0064_image430.gif"></a><a
+href="slide0064_image432.gif"></a><a
+href="slide0064_image434.gif"></a><a
+href="slide0064_image436.gif"></a><a
+href="slide0064_image438.gif"></a><a href=slide0040.htm></a><a
+href="slide0040_image439.gif"></a><a
+href=slide0042.htm></a><a
+href="slide0042_image442.gif"></a><a
+href="slide0042_image444.gif"></a><a href=slide0045.htm></a><a
+href="slide0045_image445.gif"></a><a href=slide0065.htm></a><a
+href="slide0065_image446.gif"></a><a
+href="slide0065_image448.gif"></a><a
+href=slide0044.htm></a><a
+href="slide0044_image451.gif"></a><a
+href="slide0044_image453.gif"></a><a
+href=slide0046.htm></a><a
+href="slide0046_image456.gif"></a><a href=slide0047.htm></a><a
+href=slide0047.xml></a><a
+href="slide0047_image458.gif"></a><a href=slide0049.htm></a><a
+href=slide0049.xml></a><a
+href=slide0048.htm></a><a href=slide0048.xml></a><a
+href="slide0048_image460.gif"></a><a
+href="slide0048_image462.gif"></a><a href=slide0050.htm></a><a
+href=slide0066.htm></a><a
+href=slide0052.htm></a><a href=slide0054.htm></a><a href=slide0055.htm></a><a
+href="slide0055_image464.gif"></a><a href=slide0058.htm></a><a
+href=slide0059.htm></a><a href=slide0059.xml></a><a
+href="slide0059_image465.gif"></a><a
+href="slide0059_image467.jpg"></a><a href=slide0060.htm></a><a
+href=slide0053.htm></a><a href=slide0061.htm></a><a href=slide0062.htm></a><a
+href="slide0062_image468.gif"></a><a
+href="slide0062_image470.gif"></a><a href=slide0070.htm></a><a
+href=slide0069.htm></a><a href=slide0071.htm></a><a
+href="slide0071_image471.gif"></a><a href=master01.htm></a><a
+href="master03_stylesheet.css"></a><a href=script.js></a><a
+href="../GTL_boostcon_draft03.htm"></a><a href=fullscreen.htm></a><a
+href=buttons.gif></a><a href=frame.htm></a><a href=outline.htm></a></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/pres.xml
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/pres.xml 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,172 @@
+<xml xmlns:v="urn:schemas-microsoft-com:vml"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+ xmlns:oa="urn:schemas-microsoft-com:office:activation">
+ <p:presentation sizeof="screen" gridspacingx="49152" gridspacingy="49152">
+ <p:master id="3" slidesn="1C9B241,32B04140" type="main" href="master03.htm"
+ xmlhref="master03.xml" template="Default Design" layout="title_body"
+ slots="title,body,dateTime,footer,slideNumber">
+ <p:schemes>
+ <p:colorscheme
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"/>
+ <p:colorscheme
+ colors="#ffffff,#000000,#969696,#000000,#fbdf53,#ff9966,#cc3300,#996600"/>
+ <p:colorscheme
+ colors="#ffffff,#000000,#808080,#000000,#99ccff,#ccccff,#3333cc,#af67ff"/>
+ <p:colorscheme
+ colors="#def6f1,#000000,#969696,#000000,#ffffff,#8dc6ff,#0066cc,#00a800"/>
+ <p:colorscheme
+ colors="#ffffd9,#000000,#777777,#000000,#fffff7,#33cccc,#ff5050,#ff9900"/>
+ <p:colorscheme
+ colors="#008080,#ffffff,#005a58,#ffff99,#006462,#6d6fc7,#00ffff,#00ff00"/>
+ <p:colorscheme
+ colors="#800000,#ffffff,#5c1f00,#dfd293,#cc3300,#be7960,#ffff99,#d3a219"/>
+ <p:colorscheme
+ colors="#000099,#ffffff,#003366,#ccffff,#3366cc,#00b000,#66ccff,#ffe701"/>
+ <p:colorscheme
+ colors="#000000,#ffffff,#336699,#e3ebf1,#003399,#468a4b,#66ccff,#f0e500"/>
+ <p:colorscheme
+ colors="#686b5d,#ffffff,#777777,#d1d1cb,#909082,#809ea8,#ffcc66,#e9dcb9"/>
+ <p:colorscheme
+ colors="#666699,#ffffff,#3e3e5c,#ffffff,#60597b,#6666ff,#99ccff,#ffff99"/>
+ <p:colorscheme
+ colors="#523e26,#ffffff,#2d2015,#dfc08d,#8c7b70,#8f5f2f,#ccb400,#8c9ea0"/>
+ </p:schemes>
+ </p:master>
+ <p:master id="1" slidesn="1C9B41C,AB2432D0" type="notes" href="master01.htm"
+ layout="notes" slots="header,dateTime,slideImage,body,footer,slideNumber"/>
+ <p:slide id="1" slidesn="1C9B241,32B76D30" href="slide0001.htm"
+ layout="title_subtitle" slots="centerTitle,subTitle"/>
+ <p:slide id="73" slidesn="1C9CD33,E4D54CA0" href="slide0073.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="68" slidesn="1C9CC64,D1B49B00" href="slide0068.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="2" slidesn="1C9B242,49883A20" href="slide0002.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="3" slidesn="1C9B24A,CFB242A0" href="slide0003.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="67" slidesn="1C9B964,1BAEF9D0" href="slide0067.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="4" slidesn="1C9B24D,307771D0" href="slide0004.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="5" slidesn="1C9B24D,C57031A0" href="slide0005.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="6" slidesn="1C9B24E,DB497F30" href="slide0006.htm"
+ xmlhref="slide0006.xml" layout="title_body" slots="title,body"/>
+ <p:slide id="7" slidesn="1C9B24F,BB264DE0" href="slide0007.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="10" slidesn="1C9B251,26417950" href="slide0010.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="11" slidesn="1C9B251,96FCBA10" href="slide0011.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="12" slidesn="1C9B251,CB0F4340" href="slide0012.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="13" slidesn="1C9B252,3B09A500" href="slide0013.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="14" slidesn="1C9B253,214E9E80" href="slide0014.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="16" slidesn="1C9B255,4409D870" href="slide0016.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="18" slidesn="1C9B3A8,EC7B21E0" href="slide0018.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="15" slidesn="1C9B253,A9C7C0C0" href="slide0015.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="19" slidesn="1C9B3B2,BD067F40" href="slide0019.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="20" slidesn="1C7ABDC,4F674030" href="slide0020.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="21" slidesn="1C7ABDC,D9D10EE0" href="slide0021.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="22" slidesn="1C7ABE6,EC072EF0" href="slide0022.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="23" slidesn="1C7ABEA,24F2FE30" href="slide0023.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="27" slidesn="1C777AF,22F59350" href="slide0027.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="28" slidesn="1C777AF,22F59350" href="slide0028.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="29" slidesn="1C777AF,22F59350" href="slide0029.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="30" slidesn="1C777AF,22F59350" href="slide0030.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="31" slidesn="1C777AF,22F59350" href="slide0031.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="32" slidesn="1C777AF,22F59350" href="slide0032.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="33" slidesn="1C777AF,22F59350" href="slide0033.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="34" slidesn="1C777AF,22F59350" href="slide0034.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="35" slidesn="1C777AF,22F59350" href="slide0035.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="36" slidesn="1C777AF,22F59350" href="slide0036.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="37" slidesn="1C9B3BD,817AA860" href="slide0037.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="38" slidesn="1C9B3C1,AE6CB670" href="slide0038.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="41" slidesn="1C9B3D6,DDD496C0" href="slide0041.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="39" slidesn="1C9B3C2,602D0400" href="slide0039.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="64" slidesn="1C9B418,3A9EF300" href="slide0064.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="40" slidesn="1C9B3C3,21369670" href="slide0040.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="42" slidesn="1C9B3D8,75FCA810" href="slide0042.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="45" slidesn="1C9B3DA,DC6B1EE0" href="slide0045.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="65" slidesn="1C9B41B,3F1B4C00" href="slide0065.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="44" slidesn="1C9B3DA,A9400F80" href="slide0044.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="46" slidesn="1C9B3DA,A9400F80" href="slide0046.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="47" slidesn="1C9B3DD,1B216ED0" href="slide0047.htm"
+ xmlhref="slide0047.xml" layout="title_body" slots="title,body"/>
+ <p:slide id="49" slidesn="1C9B3DD,FFB20190" href="slide0049.htm"
+ xmlhref="slide0049.xml" layout="title_body" slots="title,body"/>
+ <p:slide id="48" slidesn="1C9B3DD,BA19D810" href="slide0048.htm"
+ xmlhref="slide0048.xml" layout="title_body" slots="title,body"/>
+ <p:slide id="50" slidesn="1C9B3DE,328FB440" href="slide0050.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="66" slidesn="1C9B3E4,BD9F7830" href="slide0066.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="52" slidesn="1C9B3DF,3F4EFD70" href="slide0052.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="54" slidesn="1C9B3DF,99ADE880" href="slide0054.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="55" slidesn="1C9B3DF,EFD23720" href="slide0055.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="58" slidesn="1C9B3E0,CBC26250" href="slide0058.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="59" slidesn="1C9B3E1,1FA106B0" href="slide0059.htm"
+ xmlhref="slide0059.xml" layout="title_body" slots="title,body"/>
+ <p:slide id="60" slidesn="1C9B3E1,FE7DCA80" href="slide0060.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="53" slidesn="1C9B3DF,5132C350" href="slide0053.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="61" slidesn="1C9B3E4,31B28BF0" href="slide0061.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="62" slidesn="1C9B3E4,74DA0390" href="slide0062.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="70" slidesn="1C9CC65,9D0BA8C0" href="slide0070.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="69" slidesn="1C9CC65,293433E0" href="slide0069.htm"
+ layout="title_body" slots="title,body"/>
+ <p:slide id="71" slidesn="1C9CC66,81EBE220" href="slide0071.htm"
+ layout="title_body" slots="title,body"/>
+ <p:viewstate type="slideView" nosnaptogrid="t" restoredleft="156"
+ restoredtop="946" hideoutlineicons="t"/>
+ <p:font name="Arial" charset="0" type="4"/>
+ <p:font name="Courier New" charset="0" type="6" family="49"/>
+ <p:font name="Times New Roman" charset="0" type="6" family="18"/>
+ <p:headersfooters slidenumber="t" formatid="0" noheader="t"/>
+ <p:headersfooters notes="t" slidenumber="t"/>
+ <p:pptdocumentsettings framecolors="WhiteTextOnBlack" hideslideanimation="t"
+ browsersupport="v4"/>
+ </p:presentation>
+ <o:shapedefaults v:ext="edit" spidmax="82948">
+ <o:colormru v:ext="edit" colors="red"/>
+ </o:shapedefaults></xml>
\ No newline at end of file

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/preview.wmf
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/script.js
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/script.js 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,1081 @@
+function LoadSld()
+{
+ var sld=GetObj("SlideObj")
+ if( !g_supportsPPTHTML ) {
+ sld.style.visibility="visible"
+ return
+ }
+
+ if( MakeNotesVis() ) return
+
+ runAnimations = _InitAnimations();
+
+ if( IsWin("PPTSld") )
+ parent.SldUpdated(GetSldId())
+ g_origSz=parseInt(SlideObj.style.fontSize)
+ g_origH=sld.style.posHeight
+ g_origW=sld.style.posWidth
+ g_scaleHyperlinks=(document.all.tags("AREA").length>0)
+ if( g_scaleHyperlinks )
+ InitHLinkArray()
+ if( g_scaleInFrame||(IsWin("PPTSld") && parent.IsFullScrMode() ) )
+ document.body.scroll="no"
+ _RSW()
+ if( IsWin("PPTSld") && parent.IsFullScrMode() )
+ FullScrInit();
+
+ MakeSldVis();
+ ChkAutoAdv()
+
+ if( runAnimations )
+ {
+ if( document.all("NSPlay") )
+ document.all("NSPlay").autoStart = false;
+
+ if( sld.filters && sld.filters.revealtrans )
+ setTimeout( "document.body.start()", sld.filters.revealtrans.duration * 1000 );
+ else
+ document.body.start();
+ }
+}
+
+function MakeSldVis()
+{
+ var fTrans=g_showAnimation && SldHasTrans()
+ if( fTrans )
+ {
+ if( g_bgSound ) {
+ idx=g_bgSound.indexOf(",");
+ pptSound.src=g_bgSound.substr( 0, idx );
+ pptSound.loop= -(parseInt(g_bgSound.substr(idx+1)));
+ }
+ SlideObj.filters.revealtrans.Apply()
+ }
+ SlideObj.style.visibility="visible"
+ if( fTrans )
+ SlideObj.filters.revealtrans.Play()
+}
+function MakeNotesVis()
+{
+ if( !IsNts() ) return false
+ SlideObj.style.display="none"
+ nObj = document.all.item("NotesObj")
+ parent.SetHasNts(0)
+ if( nObj ) {
+ nObj.style.display=""
+ parent.SetHasNts(1)
+ }
+ return 1
+}
+function ChkAutoAdv()
+{
+ if(SldHasTrans())
+ SlideObj.onfilterchange=AutoAdv
+ else
+ AutoAdv()
+}
+function AutoAdv()
+{
+ if(!IsWin("PPTSld") || !gUseSldTimings )return
+ var sld=GetCurSld()
+ if( (sld.mAdvDelay>0) && !parent.IsFramesMode() )
+ setTimeout("parent.GoToNextSld()",sld.mAdvDelay)
+}
+function GetObj(id)
+{
+ if(g_supportsPPTHTML) return document.all(id);
+ else return document.getElementById(id);
+}
+function SldHasTrans() { return SlideObj.style.filter != ""; }
+function GetSldId()
+{
+ var regExp = /file:\/\/\//i
+ var pos = location.href.search(regExp)
+ if (MHTMLPrefix != "" && pos != -1)
+ sId = location.href.substring(pos)
+ else
+ {
+ sId = RemoveFilePrefixFromHref(location.href);
+ var regExp = /\//
+ var fixedHref = sId
+ var pos = -1
+
+ pos = fixedHref.search(regExp)
+ while (pos != -1)
+ {
+ fixedHref = fixedHref.replace(regExp, "\\")
+ pos = fixedHref.search(regExp)
+ }
+
+ if (g_fBaseHyperlink == true)
+ sId = "file:///" + fixedHref;
+ else
+ sId = fixedHref.substring(fixedHref.lastIndexOf('\\') + 1)
+ }
+
+ return sId
+}
+function HideMenu() { if( frames["PPTSld"] && PPTSld.document.all.item("ctxtmenu") && PPTSld.ctxtmenu.style.display!="none" ) { PPTSld.ctxtmenu.style.display='none'; return true } return false }
+function IsWin( name ) { return window.name == name }
+function IsNts() { return IsWin("PPTNts") }
+function IsSldOrNts() { return( IsWin("PPTSld")||IsWin("PPTNts") ) }
+function SupportsPPTAnimation() { return( navigator.platform == "Win32" && navigator.appVersion.indexOf("Windows")>0 ) }
+function SupportsPPTHTML()
+{
+ var appVer=navigator.appVersion, msie=appVer.indexOf("MSIE "), ver=0
+ if( msie >= 0 )
+ ver=parseFloat( appVer.substring( msie+5, appVer.indexOf(";",msie) ) )
+ else
+ ver=parseInt(appVer)
+
+ return( ver >= 4 && msie >= 0 )
+}
+function _RSW()
+{
+ if( !g_supportsPPTHTML || IsNts() ||
+ ( !g_scaleInFrame && (!IsWin("PPTSld") || !parent.IsFullScrMode()) ) )
+ return
+
+ var padding=0;
+ if( IsWin("PPTSld") && parent.IsFramesMode() ) padding=6
+
+ cltWidth=document.body.clientWidth-padding
+ cltHeight=document.body.clientHeight-padding
+ factor=(1.0*cltWidth)/g_origW
+ if( cltHeight < g_origH*factor )
+ factor=(1.0*cltHeight)/g_origH
+
+ newSize = g_origSz * factor
+ if( newSize < 1 ) newSize=1
+
+ s=SlideObj.style
+ s.fontSize=newSize+"px"
+ s.posWidth=g_origW*factor
+ s.posHeight=g_origH*factor
+ s.posLeft=(cltWidth-s.posWidth+padding)/2
+ s.posTop=(cltHeight-s.posHeight+padding)/2
+
+ if( g_scaleHyperlinks )
+ ScaleHyperlinks( factor )
+}
+function _InitAnimations()
+{
+ animRuntimeInstalled = ''+document.body.localTime != 'undefined';
+ isFullScreen = (window.name == "PPTSld") && !parent.IsFramesMode();
+ g_animUseRuntime = g_showAnimation && animRuntimeInstalled && !(isFullScreen && parent.IsSldVisited());
+ if( g_animUseRuntime ) {
+ collSeq = document.all.tags("seq");
+ if( collSeq != null ) {
+ for(ii=0;ii<collSeq.length;ii++) {
+ if( collSeq[ii].getAttribute( "p:nodeType" ) == "mainSeq" ) {
+ g_animMainSequence = collSeq[ii];
+ break;
+ }
+ }
+ }
+
+ if( g_animItemsToHide && document.body.playAnimations != false ) {
+ for(jj = 0; jj < g_animItemsToHide.length; jj++) {
+ if( hideObj = GetObj(g_animItemsToHide[jj]) )
+ hideObj.runtimeStyle.visibility="hidden";
+ }
+ }
+
+ if( g_animInteractiveItems ){
+ for(jj = 0; jj < g_animInteractiveItems.length; jj++) {
+ if( triggerObj = GetObj(g_animInteractiveItems[jj]) )
+ triggerObj.runtimeStyle.cursor="hand";
+ }
+ }
+
+ if( gUseSldTimings && ''+g_animSlideTime != 'undefined' ) {
+ adjustedTime = document.body.calculateAutoAdvanceTimes( g_animSlideTime, g_animEffectTimings );
+ if( IsWin("PPTSld") && adjustedTime != g_animSlideTime ) {
+ var sld = GetCurSld();
+ sld.mAdvDelay = adjustedTime * 1000;
+ }
+ }
+ }
+
+ return g_animUseRuntime;
+}
+
+gSldJump = 0, gSldJumpTrack = 0, gSldJumpIdx = "";
+
+function _KPH()
+{
+ if( IsNts() ) return;
+
+ if( !parent.IsFramesMode() && event.keyCode == 27 && !HideMenu() )
+ parent.window.close( self );
+ else if( event.keyCode == 32 ) {
+ if( window.name == "PPTSld" )
+ parent.PPTSld.DocumentOnClick();
+ else
+ parent.GoToNextSld();
+ }
+
+ CatchNumKeys( parent, event );
+}
+
+function CatchNumKeys( win, event ) {
+ if( win.IsFullScrMode() && (48<=event.keyCode) && (event.keyCode<=57) ) {
+ gSldJump = 1;
+ gSldJumpIdx += (event.keyCode-48).toString();
+ }
+ if( win.IsFullScrMode() && gSldJump && event.keyCode == 13 ) {
+ var numSlds = parent.GetSldList().mList.length
+ if ( gSldJumpIdx > numSlds )
+ gSldJumpIdx = numSlds;
+ if ( gSldJumpIdx >= 0 ) {
+ if ( gSldJumpIdx == 0 )
+ gSldJumpIdx = 1;
+ var jumpTo = parseInt(gSldJumpIdx);
+ gSldJump = 0; gSldJumpIdx = "";
+ win.GoToSld( parent.GetSldList().mList[jumpTo-1].mSldHref )
+ }
+ }
+}
+
+function _KDH()
+{
+ if( event.keyCode == 8 ) {
+ event.returnValue = 0;
+ parent.GoToPrevSld();
+ }
+}function DocumentOnClick()
+{
+ if( IsNts() || parent.HideMenu() ) return;
+
+ if( ( g_allowAdvOnClick && (window.name=="PPTSld") && !parent.IsFramesMode() ) ||
+ (event && event.keyCode==32) ) {
+
+ if( g_animUseRuntime && g_animMainSequence && g_animMainSequence.cangonext )
+ return;
+
+ parent.GoToNextSld();
+ }
+}
+
+
+var g_supportsPPTHTML = SupportsPPTHTML(), g_scaleInFrame = 1, gId="", g_bgSound="",
+ g_scaleHyperlinks = false, g_allowAdvOnClick = 1, g_showInBrowser = 0, gLoopCont = 0, gUseSldTimings = 1;
+var g_showAnimation = g_supportsPPTHTML && SupportsPPTAnimation() && ( (window.name=="PPTSld" && !parent.IsFramesMode()) || g_showInBrowser );var g_animManager = null;
+var g_animUseRuntime = false;
+var g_animItemsToHide, g_animInteractiveItems, g_animSlideTime;
+var g_animMainSequence = null;
+
+var ENDSHOW_MESG="End of slide show, click to exit.", SCREEN_MODE="Frames", gIsEndShow=0, NUM_VIS_SLDS=61, SCRIPT_HREF="script.js", FULLSCR_HREF="fullscreen.htm";
+var gCurSld = gPrevSld = 1, g_offset = 0, gNtsOpen = gHasNts = gOtlTxtExp = 0, gHasNarration = 0, gOtlOpen = true
+window.gPPTHTML=SupportsPPTHTML()
+var g_fBaseHyperlink = false;
+var gMainDoc=new Array(new hrefList("slide0001.htm",1,-1,1),new hrefList("slide0073.htm",1,-1,1),new hrefList("slide0068.htm",1,-1,1),new hrefList("slide0002.htm",1,-1,1),new hrefList("slide0003.htm",1,-1,1),new hrefList("slide0067.htm",1,-1,1),new hrefList("slide0004.htm",1,-1,1),new hrefList("slide0005.htm",1,-1,1),new hrefList("slide0006.htm",1,-1,1),new hrefList("slide0007.htm",1,-1,1),new hrefList("slide0010.htm",1,-1,1),new hrefList("slide0011.htm",1,-1,1),new hrefList("slide0012.htm",1,-1,1),new hrefList("slide0013.htm",1,-1,1),new hrefList("slide0014.htm",1,-1,1),new hrefList("slide0016.htm",1,-1,1),new hrefList("slide0018.htm",1,-1,1),new hrefList("slide0015.htm",1,-1,1),new hrefList("slide0019.htm",1,-1,1),new hrefList("slide0020.htm",1,-1,1),new hrefList("slide0021.htm",1,-1,1),new hrefList("slide0022.htm",1,-1,1),new hrefList("slide0023.htm",1,-1,1),new hrefList("slide0027.htm",1,-1,1),new hrefList("slide0028.htm",1,-1,1),new hrefList("slide0029.htm",1,-1,1),new hrefList("slide0030.htm",1,-1,1),
new hrefList("slide0031.htm",1,-1,1),new hrefList("slide0032.htm",1,-1,1),new hrefList("slide0033.htm",1,-1,1),new hrefList("slide0034.htm",1,-1,1),new hrefList("slide0035.htm",1,-1,1),new hrefList("slide0036.htm",1,-1,1),new hrefList("slide0037.htm",1,-1,1),new hrefList("slide0038.htm",1,-1,1),new hrefList("slide0041.htm",1,-1,1),new hrefList("slide0039.htm",1,-1,1),new hrefList("slide0064.htm",1,-1,1),new hrefList("slide0040.htm",1,-1,1),new hrefList("slide0042.htm",1,-1,1),new hrefList("slide0045.htm",1,-1,1),new hrefList("slide0065.htm",1,-1,1),new hrefList("slide0044.htm",1,-1,1),new hrefList("slide0046.htm",1,-1,1),new hrefList("slide0047.htm",1,-1,1),new hrefList("slide0049.htm",1,-1,1),new hrefList("slide0048.htm",1,-1,1),new hrefList("slide0050.htm",1,-1,1),new hrefList("slide0066.htm",1,-1,1),new hrefList("slide0052.htm",1,-1,1),new hrefList("slide0054.htm",1,-1,1),new hrefList("slide0055.htm",1,-1,1),new hrefList("slide0058.htm",1,-1,1),new hrefList("slide0059.htm",1,-1,1),new hrefList("slide0060.
htm",1,-1,1),new hrefList("slide0053.htm",1,-1,1),new hrefList("slide0061.htm",1,-1,1),new hrefList("slide0062.htm",1,-1,1),new hrefList("slide0070.htm",1,-1,1),new hrefList("slide0069.htm",1,-1,1),new hrefList("slide0071.htm",1,-1,1));
+
+/*********************************************
+ Frameset functions
+
+ These functions control slide navigation
+ and state of the frameset.
+**********************************************/
+
+function RemoveFilePrefixFromHref(href)
+{
+ var regExp = /^file:\/\/\//i;
+ return href.replace(regExp, "")
+}
+
+function FullScrInit()
+{
+ g_allowAdvOnClick = GetCurSld().mAdvOnClk
+ document.body.style.backgroundColor="black"
+ document.oncontextmenu=parent._CM;
+ document.onkeydown = _KDH;
+ document.ondragstart=Cancel
+ document.onselectstart=Cancel
+ self.focus()
+}
+
+function Redirect( frmId )
+{
+ var str=document.location.hash,idx=str.indexOf('#'), sId=GetSldId()
+ if(idx>=0) str=str.substr(1);
+ if( window.name != frmId && ( sId != str) ) {
+ obj = GetObj("Main-File")
+ window.location.href=obj.href+"#"+sId
+ return 1
+ }
+ return 0
+}
+
+var MHTMLPrefix = CalculateMHTMLPrefix();
+function CalculateMHTMLPrefix()
+{
+ if ( document.location.protocol == 'mhtml:') {
+ href=new String(document.location.href)
+ Start=href.indexOf('!')+1
+ End=href.lastIndexOf('/')+1
+ if (End < Start)
+ return href.substring(0, Start)
+ else
+ return href.substring(0, End)
+ }
+ return '';
+}
+
+function GetTags(base,tag)
+{
+ if(g_supportsPPTHTML) return base.all.tags(tag);
+ else return base.getElementsByTagName(tag);
+}
+
+
+function UpdNtsPane(){ if(frames["PPTNts"]) PPTNts.location.replace( MHTMLPrefix+GetHrefObj( gCurSld ).mNtsHref ) }
+
+function UpdNavPane( sldIndex ){ if(gNavLoaded) PPTNav.UpdNav() }
+
+function UpdOtNavPane(){ if(gOtlNavLoaded) PPTOtlNav.UpdOtlNav() }
+
+function UpdOtlPane(){ if(gOtlLoaded) PPTOtl.UpdOtl() }
+
+function SetHasNts( fVal )
+{
+ if( gHasNts != fVal ) {
+ gHasNts=fVal
+ UpdNavPane()
+ }
+}
+
+function ToggleOtlText()
+{
+ gOtlTxtExp=!gOtlTxtExp
+ UpdOtlPane()
+}
+
+function ClearMedia()
+{
+ // Clear any sounds playing before launching another browser window. Otherwise,
+ // in fullscreen mode, you'll continue to hear the sound in the frames mode.
+ if (PPTSld.pptSound) PPTSld.pptSound.loop = 0;
+}
+
+function FullScreen()
+{
+ if ( PPTSld.g_animUseRuntime )
+ PPTSld.document.body.pause();
+ ClearMedia();
+ var href = ( document.location.protocol == 'mhtml:') ? FULLSCR_HREF : FULLSCR_HREF+"#"+GetHrefObj(gCurSld).mSldHref;
+ if (MHTMLPrefix != "")
+ href = RemoveFilePrefixFromHref(href)
+ if(PPTNav.event.ctrlKey) {
+ var w = (window.screen.availWidth * 1.0) / 2.0
+ var h = w * (PPTSld.g_origH * 1.0) / PPTSld.g_origW
+ win = window.open( MHTMLPrefix+href,null,"toolbar=0,resizable=1,top=0,left=0," + "width="+ w + ",height=" + h );
+ if( win.document.body && PPTSld.g_animUseRuntime )
+ win.document.body.PPTSldFrameset=window;
+ }
+ else
+ {
+ win = window.open( MHTMLPrefix+href,null,"fullscreen=yes" );
+ if( win.document.body && PPTSld.g_animUseRuntime )
+ win.document.body.PPTSldFrameset=window;
+ }
+}
+
+function ToggleVNarration()
+{
+ rObj=PPTSld.document.all("NSPlay")
+ if( rObj && !PPTSld.g_animUseRuntime ) {
+ if( (rObj.playState == 1)||(rObj.playState == 0) )
+ rObj.Play()
+ else if( rObj.playState == 2 )
+ rObj.Pause()
+ else
+ return;
+ }
+ else if( PPTSld.g_animUseRuntime )
+ {
+ narObj = PPTSld.document.all("narrationID")
+ if( narObj )
+ narObj.togglePause()
+ }
+}
+
+function GetCurSldNum()
+{
+ obj=GetHrefObj(gCurSld)
+ if( obj.mOrigVis == 1 )
+ return obj.mSldIdx
+ else
+ return gCurSld
+}
+
+function GetNumSlds()
+{
+ if( GetHrefObj(gCurSld).mOrigVis == 1 )
+ return GetSldList().mNumVisSlds;
+ else
+ return GetSldList().mList.length
+}
+
+function GetSldNum( href )
+{
+ for(ii=0; ii<GetSldList().mList.length; ii++) {
+ if ( GetSldList().mList[ii].mSldHref == href )
+ return ii+1
+ }
+ return 1
+}
+
+function GetHrefObj( sldIdx ){ return GetSldList().mList[sldIdx-1] }
+
+function IsFramesMode(){ return ( SCREEN_MODE == "Frames" ) }
+
+function IsFullScrMode(){ return ( SCREEN_MODE == "FullScreen" ) }
+
+function GoToNextSld()
+{
+ ii=gCurSld + 1
+ if( GetHrefObj( ii-1 ).mOrigVis == 0 ) {
+ if( ii<=GetSldList().mList.length ) {
+ obj=GetHrefObj(ii)
+ obj.mVis=1
+ GoToSldNum(ii)
+ return
+ }
+ }
+ else {
+ obj=GetHrefObj( ii )
+ while ( obj && ( obj.mOrigVis == 0 ) )
+ obj=GetHrefObj(++ii)
+ if( obj && obj.mOrigVis ) {
+ GoToSldNum(ii)
+ return
+ }
+ }
+ if( gSldStack.length > 1 )
+ PopSldList();
+ else if( !IsFramesMode() ) {
+ if( gLoopCont )
+ GoToFirst()
+ else
+ EndShow()
+ }
+}
+
+function GoToPrevSld()
+{
+ ii=gCurSld-1
+ if( ii > 0 ) {
+ obj=GetHrefObj(ii)
+ while ( obj && ( obj.mVis == 0 ) && ( ii>0 ) )
+ obj=GetHrefObj(--ii)
+ if( ii == 0 ) ii=1
+ GoToSldNum(ii)
+ }
+}
+
+function GoToFirst(){ GoToSld( GetHrefObj(1).mSldHref ) }
+
+function GoToLast()
+{
+ ii=GetSldList().mList.length
+ if( ii != gCurSld )
+ GoToSld( GetHrefObj(ii).mSldHref )
+}
+
+function GoToSldNum( num )
+{
+ if( PPTSld.event ) PPTSld.event.cancelBubble=true
+ obj = GetHrefObj( num )
+ obj.mVis=1
+ gPrevSld=gCurSld
+ gCurSld = num;
+
+ if (MHTMLPrefix != "")
+ PPTSld.location.replace(MHTMLPrefix+RemoveFilePrefixFromHref(obj.mSldHref))
+ else
+ PPTSld.location.replace(obj.mSldHref)
+
+ if( IsFramesMode() ) {
+ UpdNavPane(); UpdOtlPane(); UpdNtsPane()
+ }
+}
+
+function GoToSld( href )
+{
+ if( PPTSld.event ) PPTSld.event.cancelBubble=true
+ GetHrefObj( GetSldNum(href) ).mVis=1
+ if (MHTMLPrefix != "")
+ PPTSld.location.replace(MHTMLPrefix+RemoveFilePrefixFromHref(href))
+ else
+ PPTSld.location.replace(href)
+}
+
+function SldUpdated( id )
+{
+ if( id == GetHrefObj(gCurSld).mSldHref ) return
+ gPrevSld=gCurSld
+ gCurSld=GetSldNum(id)
+ if( IsFramesMode() ) {
+ UpdNavPane(); UpdOtlPane(); UpdNtsPane()
+ }
+}
+
+function PrevSldViewed(){ GoToSld( GetHrefObj(gPrevSld).mSldHref ) }
+function HasPrevSld() { return ( gIsEndShow || ( gCurSld != 1 && GetHrefObj( gCurSld-1 ).mVis == 1 )||( GetCurSldNum() > 1 ) ) }
+function HasNextSld() { return (GetCurSldNum() != GetNumSlds()) }
+
+function CloseWindow() {
+ if( HideMenu() ) return;
+
+ var event = PPTSld.event;
+ if( !IsFramesMode() && event && (event.keyCode==27 || event.keyCode==32 || event.type=="click" ) )
+ window.close( self );
+ CatchNumKeys( self, event );
+}
+
+function Unload() { gIsEndShow=0; }
+
+function SetupEndShow() {
+ gIsEndShow=1;
+ PPTSld.document.body.scroll="no";
+ PPTSld.document.onkeypress=CloseWindow;
+ PPTSld.document.onclick=CloseWindow;
+ PPTSld.document.oncontextmenu=_CM;
+}
+
+function EndShow()
+{
+ if( IsFramesMode() ) return
+ if( PPTSld.event ) PPTSld.event.cancelBubble=true
+
+ doc=PPTSld.document
+ var dir = doc.body.dir
+ if( dir != "rtl" ) dir = "ltr";
+ doc.open()
+ doc.writeln('<html><body dir=' + dir + ' bgcolor=black onload=parent.SetupEndShow() onunload=parent.Unload()><center><p><font face=Tahoma color=white size=2><br><b>' + ENDSHOW_MESG + '</b></font></p></center></body></html>')
+ doc.close()
+}
+
+function SetSldVisited(){ GetSldList().mList[gCurSld-1].mVisited=true }
+
+function IsSldVisited(){ return GetSldList().mList[gCurSld-1].mVisited }
+
+function hrefList( sldHref, visible, advDelay, advClk )
+{
+ this.mSldHref= this.mNtsHref = sldHref
+ this.mOrigVis= this.mVis = visible
+ this.mVisited= false
+ this.mAdvDelay= advDelay
+ this.mAdvOnClk= advClk
+}
+
+function SldList(arr,curSld,fEnd)
+{
+ this.mCurSld = curSld;
+ this.mList = new Array();
+
+ var idx = 1;
+ for(ii=0;ii<arr.length;ii++) {
+ this.mList[ii] = new hrefList( arr[ii].mSldHref, arr[ii].mOrigVis, arr[ii].mAdvDelay, arr[ii].mAdvOnClk );
+ if( arr[ii].mOrigVis )
+ this.mList[ii].mSldIdx = idx++;
+ }
+ this.mNumVisSlds = idx-1;
+ this.fEndShow = fEnd;
+}
+
+function GetSldList() { return gSldStack[gSldStack.length-1] }
+function GetCurSld() { return parent.GetSldList().mList[parent.gCurSld - 1] }
+
+gSldStack = new Array();
+gSldStack[0] = new SldList(gMainDoc,gCurSld,1)
+function ToggleOtlPane()
+{
+ frmset=document.all("PPTHorizAdjust")
+ frm=document.all("PPTOtl")
+
+ if( gOtlOpen )
+ frmset.cols="*,100%"
+ else
+ frmset.cols="25%,*"
+
+ gOtlOpen=!gOtlOpen
+ frm.noResize=!frm.noResize
+ UpdOtNavPane()
+}
+
+function ToggleNtsPane()
+{
+ frmset=document.all("PPTVertAdjust")
+ frm=document.all("PPTNts")
+
+ if( gNtsOpen )
+ frmset.rows="100%,*"
+ else
+ frmset.rows="*,20%"
+
+ gNtsOpen=!gNtsOpen
+ UpdNtsPane()
+}
+
+/*********************************************
+Custom Shows implementation
+
+When ViewCustomShow() is called, we create
+a new array that is a subset of the slides in
+the main doc. This list pushed on a stack so
+we can return after the end of the custom
+show.
+*********************************************/
+function ViewCustomShow(idx,fEnd)
+{
+ if( !IsFullScrMode() ) return;
+ var sldList = new Array();
+ var custShow = custShowList[idx-1];
+ var jj = 0;
+ for( ii=0;ii<custShow.length;ii++ ) {
+ if( custShow[ii] <= gMainDoc.length )
+ sldList[jj++] = gMainDoc[custShow[ii]-1];
+ }
+ if (sldList.length > 0) {
+ PushSldList(sldList,fEnd);
+ gCurSld = 1;
+ }
+ else
+ if( PPTSld.event ) PPTSld.event.cancelBubble=true
+}
+
+function PushSldList(arr,fEnd) {
+ var ii = gSldStack.length;
+ gSldStack[ii] = new SldList(arr,gCurSld,fEnd);
+ GoToSld( gSldStack[ii].mList[0].mSldHref );
+}
+
+function PopSldList() {
+ if (gSldStack[gSldStack.length-1].fEndShow)
+ EndShow()
+ else {
+ gCurSld = gSldStack[gSldStack.length-1].mCurSld;
+ gSldStack[gSldStack.length-1] = null;
+ gSldStack.length--;
+ var sldList = gSldStack[gSldStack.length-1];
+ GoToSld( sldList.mList[gCurSld - 1].mSldHref );
+ }
+}
+var custShowList=new Array();
+
+/*********************************************
+ Navigation button implementation
+
+ There are 2 types of buttons: ImgBtn, TxtBtn
+ implemented as function objects. They share
+ a similiar interface so the event handlers
+ can call SetActive, for example, on a button
+ object without needing to know exactly
+ what type of button it is.
+**********************************************/
+
+//----------------------------------
+function ImgBtn( oId,bId,w,action )
+//----------------------------------
+{
+ var t=this
+ t.Perform = _IBP
+ t.SetActive = _IBSetA
+ t.SetInactive= _IBSetI
+ t.SetPressed = _IBSetP
+ t.SetDisabled= _IBSetD
+ t.Enabled = _IBSetE
+ t.ChangeIcon = null
+ t.UserAction = action
+ t.ChgState = _IBUI
+ t.mObjId = oId
+ t.mBorderId= bId
+ t.mWidth = w
+ t.mIsOn = t.mCurState = 0
+}
+
+function _IBSetA()
+{
+ if( this.mIsOn ) {
+ obj=this.ChgState( gHiliteClr,gShadowClr,2 )
+ obj.style.posTop=0
+ }
+}
+
+function _IBSetI()
+{
+ if( this.mIsOn ) {
+ obj=this.ChgState( gFaceClr,gFaceClr,1 )
+ obj.style.posTop=0
+ }
+}
+
+function _IBSetP()
+{
+ if( this.mIsOn ) {
+ obj=this.ChgState( gShadowClr,gHiliteClr,2 )
+ obj.style.posLeft+=1; obj.style.posTop+=1
+ }
+}
+
+function _IBSetD()
+{
+ obj=this.ChgState( gFaceClr,gFaceClr,0 )
+ obj.style.posTop=0
+}
+
+function _IBSetE( state )
+{
+ var t=this
+ GetObj( t.mBorderId ).style.visibility="visible"
+ if( state != t.mIsOn ) {
+ t.mIsOn=state
+ if( state )
+ t.SetInactive()
+ else
+ t.SetDisabled()
+ }
+}
+
+function _IBP()
+{
+ var t=this
+ if( t.mIsOn ) {
+ if( t.UserAction != null )
+ t.UserAction()
+ if( t.ChangeIcon ) {
+ obj=GetObj(t.mObjId)
+ if( t.ChangeIcon() )
+ obj.style.posLeft=obj.style.posLeft+(t.mCurState-4)*t.mWidth
+ else
+ obj.style.posLeft=obj.style.posLeft+(t.mCurState-0)*t.mWidth
+ }
+ t.SetActive()
+ }
+}
+
+function _IBUI( clr1,clr2,nextState )
+{
+ var t=this
+ SetBorder( GetObj( t.mBorderId ),clr1,clr2 )
+ obj=GetObj( t.mObjId )
+ obj.style.posLeft=obj.style.posLeft+(t.mCurState-nextState)*t.mWidth-obj.style.posTop
+ t.mCurState=nextState
+ return obj
+}
+
+//-----------------------------------------
+function TxtBtn( oId,oeId,action,chkState )
+//-----------------------------------------
+{
+ var t=this
+ t.Perform = _TBP
+ t.SetActive = _TBSetA
+ t.SetInactive= _TBSetI
+ t.SetPressed = _TBSetP
+ t.SetDisabled= _TBSetD
+ t.SetEnabled = _TBSetE
+ t.GetState = chkState
+ t.UserAction = action
+ t.ChgState = _TBUI
+ t.mObjId = oId
+ t.m_elementsId= oeId
+ t.mIsOn = 1
+}
+
+function _TBSetA()
+{
+ var t=this
+ if( t.mIsOn && !t.GetState() )
+ t.ChgState( gHiliteClr,gShadowClr,0,0 )
+}
+
+function _TBSetI()
+{
+ var t=this
+ if( t.mIsOn && !t.GetState() )
+ t.ChgState( gFaceClr,gFaceClr,0,0 )
+}
+
+function _TBSetP()
+{
+ if( this.mIsOn )
+ this.ChgState( gShadowClr,gHiliteClr,1,1 )
+}
+
+function _TBSetD()
+{
+ this.ChgState( gFaceClr,gFaceClr,0,0 )
+ this.mIsOn = 0
+}
+
+function _TBSetE()
+{
+ var t=this
+ if( !t.GetState() )
+ t.ChgState( gFaceClr,gFaceClr,0,0 )
+ else
+ t.ChgState( gShadowClr,gHiliteClr,1,1 )
+ t.mIsOn = 1
+}
+
+function _TBP()
+{
+ var t=this
+ if( t.mIsOn ) {
+ if( t.UserAction != null )
+ t.UserAction()
+ if( !t.GetState )
+ return
+ if( t.GetState() )
+ t.SetPressed()
+ else
+ t.SetActive()
+ }
+}
+
+function _TBUI( clr1,clr2,lOffset,tOffset )
+{
+ SetBorder( GetObj( this.mObjId ),clr1,clr2 )
+ Offset( GetObj( this.m_elementsId ),lOffset,tOffset )
+}
+
+function Offset( obj, top, left ){ obj.style.top=top; obj.style.left=left }
+
+function SetBorder( obj, upperLeft, lowerRight )
+{
+ s=obj.style;
+ s.borderStyle = "solid"
+ s.borderWidth = 1
+ s.borderLeftColor = s.borderTopColor = upperLeft
+ s.borderBottomColor= s.borderRightColor = lowerRight
+}
+
+function GetBtnObj(){ return gBtnArr[window.event.srcElement.id] }
+
+function BtnOnOver(){ b=GetBtnObj(); if( b != null ) b.SetActive() }
+
+function BtnOnDown(){ b=GetBtnObj(); if( b != null ) b.SetPressed() }
+
+function BtnOnOut(){ b=GetBtnObj(); if( b != null ) b.SetInactive() }
+
+function BtnOnUp()
+{
+ b=GetBtnObj()
+ if( b != null )
+ b.Perform()
+ else
+ Upd()
+}
+function GetNtsState(){ return parent.gNtsOpen }
+
+function GetOtlState(){ return parent.gOtlOpen }
+
+function GetOtlTxtState(){ return parent.gOtlTxtExp }
+
+function NtsBtnSetFlag( fVal )
+{
+ s=document.all.item( this.m_flagId ).style
+ s.display="none"
+ if( fVal )
+ s.display=""
+ else
+ s.display="none"
+}
+
+function _BSetA_Border(){ b = gBtnArr[this.mObjId]; if( b != null ) b.SetActive() }
+
+function _BSetI_Border(){ b = gBtnArr[this.mObjId]; if( b != null ) b.SetInactive() }
+
+function _BSetP_Border(){ b = gBtnArr[this.mObjId]; if( b != null ) b.SetPressed() }
+
+function _BSetA_BorderImg()
+{
+ b = gBtnArr[this.mBorderId]
+ if( b != null && this.mIsOn && !b.GetState() ) {
+ obj=this.ChgState( gHiliteClr,gShadowClr,2 )
+ obj.style.posTop=0
+ }
+}
+
+function _BSetI_BorderImg()
+{
+ b = gBtnArr[this.mBorderId]
+ if( b != null && this.mIsOn && !b.GetState() ) {
+ obj=this.ChgState( gFaceClr,gFaceClr,1 )
+ obj.style.posTop=0
+ }
+}
+
+
+var gHiliteClr="THREEDHIGHLIGHT",gShadowClr="THREEDSHADOW",gFaceClr="THREEDFACE"
+var gBtnArr = new Array()
+gBtnArr["nb_otl"] = new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOtlPane,GetOtlState )
+gBtnArr["nb_otlElem"] = new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOtlPane,GetOtlState )
+gBtnArr["nb_nts"] = new ImgBtn( "nb_nts","nb_ntsBorder",10,parent.ToggleNtsPane )
+gBtnArr["nb_nts"].SetActive = _BSetA_BorderImg;
+gBtnArr["nb_nts"].SetInactive = _BSetI_BorderImg;
+gBtnArr["nb_ntsBorder"] = new TxtBtn( "nb_ntsBorder","nb_ntsElem",parent.ToggleNtsPane,GetNtsState )
+gBtnArr["nb_ntsElem"] = new TxtBtn( "nb_ntsBorder","nb_ntsElem",parent.ToggleNtsPane,GetNtsState )
+gBtnArr["nb_prevBorder"] = gBtnArr["nb_prev"]= new ImgBtn( "nb_prev","nb_prevBorder",30,parent.GoToPrevSld )
+gBtnArr["nb_nextBorder"] = gBtnArr["nb_next"]= new ImgBtn( "nb_next","nb_nextBorder",30,parent.GoToNextSld )
+gBtnArr["nb_sldshw"]= new ImgBtn( "nb_sldshw","nb_sldshwBorder",18,parent.FullScreen )
+gBtnArr["nb_sldshwBorder"] = new TxtBtn( "nb_sldshw","nb_sldshwBorder",parent.FullScreen,null )
+gBtnArr["nb_sldshwBorder"].SetActive = _BSetA_Border;
+gBtnArr["nb_sldshwBorder"].SetInactive = _BSetI_Border;
+gBtnArr["nb_sldshwText"] = new TxtBtn( "nb_sldshw","nb_sldshwText",parent.FullScreen,null )
+gBtnArr["nb_sldshwText"].SetActive = _BSetA_Border;
+gBtnArr["nb_sldshwText"].SetInactive = _BSetI_Border;
+gBtnArr["nb_voice"] = gBtnArr["nb_voiceBorder"] = new ImgBtn( "nb_voice","nb_voiceBorder",18,parent.ToggleVNarration )
+gBtnArr["nb_otlTxtBorder"] = gBtnArr["nb_otlTxt"]= new ImgBtn( "nb_otlTxt","nb_otlTxtBorder",23,parent.ToggleOtlText )
+gBtnArr["nb_ntsBorder"].m_flagId= "nb_nts"
+gBtnArr["nb_ntsBorder"].SetFlag = NtsBtnSetFlag
+gBtnArr["nb_otlTxt"].ChangeIcon= GetOtlTxtState
+
+/*********************************************
+ Context menu implementation
+
+ _CM() is the function that's hooked up to
+ the oncontextmenu event. Once we're asked to
+ show the menu, we first build it by creating
+ DIVs on-the-fly. Then we position it
+ within the screen area so it doesn't get
+ clipped.
+
+ Creating the DIVs using createElement() means
+ we don't have to write out any extra HTML
+ into the slide HTML files.
+**********************************************/
+var sNext="Next",sPrev="Previous",sEnd="End Show",sFont="Arial",sArrow="Arrow",sFreeform="Freeform",sRect="Rectangle",sOval="Oval"
+
+function ShowMenu()
+{
+ BuildMenu();
+ var doc=PPTSld.document.body,x=PPTSld.event.clientX+doc.scrollLeft,y=PPTSld.event.clientY+doc.scrollTop
+ m = PPTSld.document.all.item("ctxtmenu")
+ m.style.pixelLeft=x
+ if( (x+m.scrollWidth > doc.clientWidth)&&(x-m.scrollWidth > 0) )
+ m.style.pixelLeft=x-m.scrollWidth
+
+ m.style.pixelTop=y
+ if( (y+m.scrollHeight > doc.clientHeight)&&(y-m.scrollHeight > 0) )
+ m.style.pixelTop=y-m.scrollHeight
+
+ m.style.display=""
+}
+
+function _CM()
+{
+ if( !parent.IsFullScrMode() ) return;
+ if(!PPTSld.event.ctrlKey) {
+ ShowMenu()
+ return false
+ } else
+ HideMenu()
+}
+
+function BuildMenu()
+{
+ if( PPTSld.document.all.item("ctxtmenu") ) return
+
+ var mObj=CreateItem( PPTSld.document.body )
+ mObj.id="ctxtmenu"
+ mObj.style.visibility="hidden"
+ var s=mObj.style
+ s.position="absolute"
+ s.cursor="default"
+ s.width="120px"
+ SetCMBorder(mObj,"menu","black")
+
+ var iObj=CreateItem( mObj )
+ SetCMBorder( iObj, "threedhighlight","threedshadow" )
+ iObj.style.padding=2
+ CreateMenuItem( iObj,sNext,M_GoNextSld,M_True )
+ CreateMenuItem( iObj,sPrev,M_GoPrevSld,M_HasPrevSld )
+
+ CreateSeparator( iObj )
+ CreateMenuItem( iObj,sEnd,M_End,M_True )
+ mObj.style.visibility="visible"
+}
+
+function Cancel() { window.event.cancelBubble=true; window.event.returnValue=false }
+
+function Highlight() { ChangeClr("activecaption","threedhighlight") }
+
+function Deselect() { ChangeClr("threedface","menutext") }
+
+function Perform()
+{
+ e=PPTSld.event.srcElement
+ if( e.type=="menuitem" && e.IsActive() )
+ e.Action()
+ else
+ PPTSld.event.cancelBubble=true
+}
+function ChangeClr( bg,clr )
+{
+ e=PPTSld.event.srcElement
+ if( e.type=="menuitem" && e.IsActive() ) {
+ e.style.backgroundColor=bg
+ e.style.color=clr
+ }
+}
+
+function M_HasPrevSld() { return( parent.HasPrevSld() ) }
+
+function M_GoNextSld() { if( gIsEndShow ) M_End(); else GoToNextSld() }
+
+function M_GoPrevSld() { if( gIsEndShow ) { gIsEndShow=0; history.back(); PPTSld.event.cancelBubble=true; } else GoToPrevSld() }
+
+function M_True() { return true }
+
+function M_End() { window.close( self ) }
+
+function CreateMenuItem( node,text,action,eval )
+{
+ var e=CreateItem( node )
+ e.type="menuitem"
+ e.Action=action
+ e.IsActive=eval
+ e.innerHTML=text
+
+ if( !e.IsActive() )
+ e.style.color="threedshadow"
+
+ e.onclick=Perform
+ e.onmouseover=Highlight
+ e.onmouseout=Deselect
+ s=e.style;
+ s.fontFamily=sFont
+ s.fontSize="9pt"
+ s.paddingLeft=2
+}
+
+function CreateSeparator( node )
+{
+ var sObj=CreateItem( node )
+ SetCMBorder(sObj,"menu","menu")
+ var s=sObj.style
+ s.borderTopColor="threedshadow"
+ s.borderBottomColor="threedhighlight"
+ s.height=1
+ s.fontSize="0px"
+}
+
+function CreateItem( node )
+{
+ var elem=PPTSld.document.createElement("DIV")
+ node.insertBefore( elem )
+ return elem
+}
+
+function SetCMBorder( o,ltClr,rbClr )
+{
+ var s=o.style
+ s.backgroundColor="menu"
+ s.borderStyle="solid"
+ s.borderWidth=1
+ s.borderColor=ltClr+" "+rbClr+" "+rbClr+" "+ltClr
+}
\ No newline at end of file

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0001.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0001.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,122 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: GTL Geometry Template Library">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style>
+.CB
+ {color:black;}
+.CT
+ {color:black;}
+</style>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="2"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O style='text-align:right;position:absolute;
+ top:92.0%;left:72.65%;width:21.53%;height:3.25%'><span style='font-size:78%;
+ mso-field-code:meta16'>1</span><span style='font-size:78%;mso-special-format:
+ lastCR;display:none'>&#13;</span></div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s2050"
+ type="#_x0000_m1026" style='position:absolute;left:18pt;top:168pt;width:672pt;
+ height:115.75pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="centerTitle"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s2051" type="#_x0000_m1027"
+ style='position:absolute;left:108pt;top:306pt;width:510pt;height:138pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="subTitle" position="1"/></v:shape><v:rect id="_x0000_s2052"
+ style='position:absolute;left:102pt;top:420pt;width:510pt;height:102pt'
+ filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect>
+ <div v:shape="_x0000_s2050" class=CT style='position:absolute;top:37.5%;
+ left:-4.68%;width:107.86%;height:9.25%'>GTL<span style='mso-spacerun:yes'> 
+ </span>Geometry Template Library</div>
+ <div v:shape="_x0000_s2051" class=CB style='position:absolute;top:57.75%;
+ left:12.17%;width:76.59%;height:6.75%'>-for stl-like polygon manipulation</div>
+ <div v:shape="_x0000_s2052" class=CB>
+ <div style='position:absolute;top:78.75%;left:11.04%;width:77.15%;height:6.75%'><i>Lucanus
+ Simonson, Gyuszi Suto&#13;</i></div>
+ <div style='position:absolute;top:87.25%;left:15.16%;width:68.91%;height:6.75%'>Intel
+ Corporation</div>
+ </div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s2053" type="#_x0000_t75" style='position:absolute;
+ left:42pt;top:0;width:636pt;height:189.125pt'>
+ <v:imagedata src="slide0001_image001.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s2053"
+ src="slide0001_image002.jpg" style='position:absolute;top:0%;left:5.8%;
+ width:88.38%;height:35.0%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0001_image001.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0001_image002.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0002.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0002.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,131 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Agenda">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="3"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>4</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s3074"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s3075" type="#_x0000_m1027"
+ style='position:absolute;left:18pt;top:126pt;width:258pt;height:354pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s3074" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Agenda</div>
+ <div v:shape="_x0000_s3075" class=B>
+ <div style='position:absolute;top:24.25%;left:3.55%;width:34.08%;height:5.25%'><span
+ style='position:absolute;top:0%;left:10.98%;width:88.46%;height:100.0%'><span
+ style='font-size:75%'><span class=BB style='position:absolute;left:-12.42%'>•</span></span><span
+ style='font-size:75%'>GTL Feature Set&#13;</span></span></div>
+ <span style='position:absolute;top:30.75%;left:7.3%;width:30.14%;height:5.25%'><span
+ style='font-size:75%'><span class=BB style='position:absolute;left:-12.42%'>•</span></span><span
+ style='font-size:75%'>Benchmark </span></span><span style='position:absolute;
+ top:36.0%;left:7.3%;width:30.14%;height:5.25%'><span style='font-size:75%'>Comparisons&#13;</span></span><span
+ style='position:absolute;top:42.5%;left:7.3%;width:35.2%;height:5.25%'><span
+ style='font-size:75%'><span class=BB style='position:absolute;left:-10.63%'>•</span></span><span
+ style='font-size:75%'>Generic Sweep-line </span></span><span style='position:
+ absolute;top:47.75%;left:7.3%;width:35.01%;height:5.25%'><span
+ style='font-size:75%'>Booleans Algorithm&#13;</span></span><span
+ style='position:absolute;top:54.0%;left:7.3%;width:30.14%;height:5.25%'><span
+ style='font-size:75%'><span class=BB style='position:absolute;left:-12.42%'>•</span></span><span
+ style='font-size:75%'>Numerical </span></span><span style='position:absolute;
+ top:59.5%;left:7.3%;width:30.14%;height:5.25%'><span style='font-size:75%'>Robustness&#13;</span></span><span
+ style='position:absolute;top:65.75%;left:7.3%;width:35.76%;height:5.25%'><span
+ style='font-size:75%'><span class=BB style='position:absolute;left:-10.47%'>•</span></span><span
+ style='font-size:75%'>Geometry Concepts </span></span><span style='position:
+ absolute;top:71.25%;left:7.3%;width:30.14%;height:5.25%'><span
+ style='font-size:75%'>Type System&#13;</span></span><span style='position:
+ absolute;top:77.5%;left:7.3%;width:33.89%;height:5.25%'><span
+ style='font-size:75%'><span class=BB style='position:absolute;left:-11.04%'>•</span></span><span
+ style='font-size:75%'>Booleans Operator </span></span><span style='position:
+ absolute;top:82.75%;left:7.3%;width:30.14%;height:5.25%'><span
+ style='font-size:75%'>Syntax</span></span></div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s3076" type="#_x0000_t75" style='position:absolute;
+ left:270pt;top:126pt;width:438pt;height:361.75pt'>
+ <v:imagedata src="slide0002_image003.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s3076"
+ src="slide0002_image004.jpg" style='position:absolute;top:23.25%;left:37.45%;
+ width:60.86%;height:67.0%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0002_image003.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0002_image004.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,225 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Primary GTL Feature">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="4"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>5</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s4098"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s4099" type="#_x0000_m1027"
+ style='position:absolute;left:30pt;top:108pt;width:9in;height:356.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s4098" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Primary GTL Feature</div>
+ <div v:shape="_x0000_s4099">
+ <div class=B style='position:absolute;top:21.0%;left:5.24%;width:97.19%;
+ height:6.75%'><span style='position:absolute;top:0%;left:3.85%;width:96.14%;
+ height:100.0%'><span class=BB style='position:absolute;left:-4.0%'>•</span>Boolean
+ operations on sets of polygons&#13;</span></div>
+ <div class=B1 style='position:absolute;top:29.5%;left:10.11%;width:83.14%;
+ height:6.0%'><span style='position:absolute;top:0%;left:3.82%;width:96.17%;
+ height:100.0%'><span class=B1B style='position:absolute;left:-3.98%'>–</span>Manhattan&#13;</span></div>
+ <div class=B1 style='position:absolute;top:36.75%;left:10.11%;width:83.14%;
+ height:6.0%'><span style='position:absolute;top:0%;left:3.82%;width:96.17%;
+ height:100.0%'><span style='visibility:hidden'><span class=B1B
+ style='position:absolute;left:-3.98%'>–</span></span>&#13;</span></div>
+ <div class=B1 style='position:absolute;top:44.25%;left:10.11%;width:83.14%;
+ height:6.0%'><span style='position:absolute;top:0%;left:3.82%;width:96.17%;
+ height:100.0%'><span class=B1B style='position:absolute;left:-3.98%'>–</span>45-degree&#13;</span></div>
+ <div class=B1 style='position:absolute;top:51.74%;left:10.11%;width:83.14%;
+ height:6.0%'><span style='position:absolute;top:0%;left:3.82%;width:96.17%;
+ height:100.0%'><span style='visibility:hidden'><span class=B1B
+ style='position:absolute;left:-3.98%'>–</span></span>&#13;</span></div>
+ <div class=B1 style='position:absolute;top:59.25%;left:10.11%;width:83.14%;
+ height:6.0%'><span style='position:absolute;top:0%;left:3.82%;width:96.17%;
+ height:100.0%'><span style='visibility:hidden'><span class=B1B
+ style='position:absolute;left:-3.98%'>–</span></span>&#13;</span></div>
+ <div class=B1 style='position:absolute;top:66.75%;left:10.11%;width:83.14%;
+ height:6.0%'><span style='position:absolute;top:0%;left:3.82%;width:96.17%;
+ height:100.0%'><span class=B1B style='position:absolute;left:-3.98%'>–</span>Arbitrary
+ Angle (XOR)</span></div>
+ </div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s4104" type="#_x0000_t75" style='position:absolute;
+ left:249.75pt;top:256.875pt;width:138pt;height:97.625pt'>
+ <v:imagedata src="slide0003_image005.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s4104"
+ src="slide0003_image006.jpg" style='position:absolute;top:47.5%;left:34.64%;
+ width:19.1%;height:18.0%'><![endif]><v:shape id="_x0000_s4105" type="#_x0000_t75"
+ style='position:absolute;left:580.75pt;top:258pt;width:139.25pt;height:99.25pt'>
+ <v:imagedata src="slide0003_image007.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s4105"
+ src="slide0003_image008.jpg" style='position:absolute;top:47.75%;left:80.71%;
+ width:19.28%;height:18.5%'><![endif]><v:shapetype id="_x0000_t13" coordsize="21600,21600"
+ o:spt="13" adj="16200,5400" path="m_at_0,l_at_0@1,0_at_1,0_at_2@0_at_2@0,21600,21600,10800xe">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="val #0"/>
+ <v:f eqn="val #1"/>
+ <v:f eqn="sum height 0 #1"/>
+ <v:f eqn="sum 10800 0 #1"/>
+ <v:f eqn="sum width 0 #0"/>
+ <v:f eqn="prod @4 @3 10800"/>
+ <v:f eqn="sum width 0 @5"/>
+ </v:formulas>
+ <v:path o:connecttype="custom" o:connectlocs="@0,0;0,10800;@0,21600;21600,10800"
+ o:connectangles="270,180,90,0" textboxrect="0,@1,@6,@2"/>
+ <v:handles>
+ <v:h position="#0,#1" xrange="0,21600" yrange="0,10800"/>
+ </v:handles>
+ </v:shapetype><v:shape id="_x0000_s4106" type="#_x0000_t13" style='position:absolute;
+ left:423.75pt;top:259.125pt;width:120pt;height:78pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s4106"
+ src="slide0003_image009.gif" style='position:absolute;top:47.75%;left:58.8%;
+ width:17.22%;height:15.25%'><![endif]>
+ <div v:shape="_x0000_s4106" class=O>
+ <div style='text-align:center;position:absolute;top:51.5%;left:58.61%;
+ width:15.35%;height:4.0%'>45 Boolean&#13;</div>
+ <div style='text-align:center;position:absolute;top:55.5%;left:59.92%;
+ width:12.92%;height:4.0%'>OR</div>
+ </div>
+ <v:shape id="_x0000_s4107" type="#_x0000_t75" style='position:absolute;left:198pt;
+ top:391.875pt;width:498pt;height:148.125pt'>
+ <v:imagedata src="slide0001_image001.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s4107"
+ src="slide0003_image010.jpg" style='position:absolute;top:72.5%;left:27.52%;
+ width:69.1%;height:27.5%'><![endif]><v:rect id="_x0000_s4108" style='position:absolute;
+ left:270pt;top:174pt;width:126pt;height:42pt;mso-wrap-style:none;
+ v-text-anchor:middle' fillcolor="red" strokecolor="red">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s4109" style='position:absolute;left:4in;top:168pt;
+ width:18pt;height:60pt;mso-wrap-style:none;v-text-anchor:middle' fillcolor="blue"
+ strokecolor="blue">
+ <v:fill opacity="47186f" color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s4110" style='position:absolute;left:318pt;top:168pt;
+ width:18pt;height:60pt;mso-wrap-style:none;v-text-anchor:middle' fillcolor="blue"
+ strokecolor="blue">
+ <v:fill opacity="47186f" color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s4111" style='position:absolute;left:354pt;top:168pt;
+ width:18pt;height:60pt;mso-wrap-style:none;v-text-anchor:middle' fillcolor="blue"
+ strokecolor="blue">
+ <v:fill opacity="47186f" color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0
+ v:shapes="_x0000_s4108,_x0000_s4109,_x0000_s4110,_x0000_s4111"
+ src="slide0003_image011.gif" style='position:absolute;top:31.0%;left:37.45%;
+ width:17.97%;height:11.75%'><![endif]><v:rect id="_x0000_s4112" style='position:absolute;
+ left:546pt;top:174pt;width:18pt;height:42pt;mso-wrap-style:none;
+ v-text-anchor:middle' fillcolor="#339" strokecolor="#339">
+ <v:fill opacity="56361f" color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:shape id="_x0000_s4116" type="#_x0000_t13" style='position:absolute;
+ left:408pt;top:156pt;width:126pt;height:90pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><v:rect id="_x0000_s4117" style='position:absolute;left:8in;top:174pt;
+ width:18pt;height:42pt;mso-wrap-style:none;v-text-anchor:middle' fillcolor="#339"
+ strokecolor="#339">
+ <v:fill opacity="56361f" color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s4118" style='position:absolute;left:612pt;top:174pt;
+ width:18pt;height:42pt;mso-wrap-style:none;v-text-anchor:middle' fillcolor="#339"
+ strokecolor="#339">
+ <v:fill opacity="56361f" color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0
+ v:shapes="_x0000_s4112,_x0000_s4116,_x0000_s4117,_x0000_s4118"
+ src="slide0003_image012.gif" style='position:absolute;top:28.49%;left:56.55%;
+ width:31.27%;height:17.5%'><![endif]>
+ <div v:shape="_x0000_s4116" class=O>
+ <div style='text-align:center;position:absolute;top:33.5%;left:56.92%;
+ width:15.16%;height:4.0%'>Manhattan &#13;</div>
+ <div style='text-align:center;position:absolute;top:37.5%;left:55.43%;
+ width:18.35%;height:4.0%'>Boolean AND</div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image005.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image006.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image007.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image008.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image009.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image010.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image011.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0003_image012.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,611 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Details Of Booleans">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<!--[if gte IE 5]>
+<object id=MSOANIM classid="CLSID:A4639D2F-774E-11D3-A490-00C04F6843FB"></object>
+<object id=MSOTIME classid="CLSID:A4639D29-774E-11D3-A490-00C04F6843FB"></object>
+<![endif]-->
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<style>
+<!--
+oa\:* { BEHAVIOR: url(#MSOANIM#ANIM) url(#MSOTIME#TIME) }
+oa\:par,oa\:seq,oa\:iterate { BEHAVIOR:url(#MSOTIME) }
+oa\:video,oa\:audio {BEHAVIOR:url(#MSOTIME) url(#MSOTIME#MEDIA) }
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><script><!--
+g_animItemsToHide=new Array("_x0000_s5125","_x0000_s5141","_x0000_s5127_239_325","_x0000_s5142","_x0000_s5139","_x0000_s5127_194_239","_x0000_s5137","_x0000_s5138","_x0000_s5127_177_194","_x0000_s5133","_x0000_s5134","_x0000_s5135","_x0000_s5136","_x0000_s5132","_x0000_s5127_159_177","_x0000_s5131","_x0000_s5127_145_159","_x0000_s5127_122_145","_x0000_s5130_0_2","_x0000_s5127_79_122","_x0000_s5128","_x0000_s5127_42_79");
+
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="5"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()" oa:clockstart="onstart">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>7</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s5122"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape>
+ <div v:shape="_x0000_s5122" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Details Of Booleans</div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s5124" type="#_x0000_t75" style='position:absolute;
+ left:386.875pt;top:102pt;width:314.375pt;height:414pt'>
+ <v:imagedata src="slide0004_image014.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s5124"
+ src="slide0004_image015.gif" style='position:absolute;top:19.0%;left:53.74%;
+ width:43.63%;height:76.75%'><![endif]><v:shape id="_x0000_s5125" type="#_x0000_t75"
+ style='position:absolute;left:387.125pt;top:106.375pt;width:310.625pt;
+ height:410pt'>
+ <v:imagedata src="slide0004_image016.png" o:title=""/>
+ <p:animation number="36" delay="0" type="object" effect="wipe"
+ direction="right" flag="17412"/></v:shape><![if !vml]><img border=0
+ v:shapes="_x0000_s5125" src="slide0004_image017.gif" style='position:absolute;
+ top:19.75%;left:53.74%;width:43.07%;height:76.0%'><![endif]><v:rect id="_x0000_s5127"
+ style='position:absolute;left:0;top:96pt;width:384pt;height:444pt' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="2" delay="0" type="object" effect="zoom" direction="out"
+ flag="16384"/></v:rect>
+ <div v:shape="_x0000_s5127" style='position:absolute;top:18.25%;left:.93%;
+ width:58.23%;height:67.75%'>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:0%;left:6.43%;width:83.6%;height:7.74%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-7.69%'>•</span></span><span
+ style='font-size:75%'>No preconditions placed on </span></span><span
+ style='position:absolute;top:7.01%;left:6.43%;width:81.99%;height:7.74%'><span
+ style='font-size:75%'>input polygons&#13;</span></span></div>
+ <div id="_x0000_s5127_42_79" class=B1 style='mso-line-spacing:"90 20 0";
+ position:absolute;top:15.49%;left:8.68%;width:81.02%;height:12.54%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:6.74%;width:93.25%;
+ height:52.94%'><span style='font-size:71%'><span style='mso-special-format:
+ bullet;position:absolute;left:-7.23%'>–</span></span><span style='font-size:
+ 71%'>Open/closed semantic for last </span></span><span style='position:absolute;
+ top:47.05%;left:6.74%;width:92.06%;height:52.94%'><span style='font-size:71%'>vertex&#13;</span></span></div>
+ <div id="_x0000_s5127_79_122" class=B1 style='mso-line-spacing:"90 20 0";
+ position:absolute;top:28.78%;left:8.68%;width:91.31%;height:12.54%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:5.98%;width:94.01%;
+ height:52.94%'><span style='font-size:71%'><span style='mso-special-format:
+ bullet;position:absolute;left:-6.36%'>–</span></span><span style='font-size:
+ 71%'>Winding direction conventions not </span></span><span style='position:
+ absolute;top:47.05%;left:5.98%;width:81.69%;height:52.94%'><span
+ style='font-size:71%'>enforced&#13;</span></span></div>
+ <div id="_x0000_s5127_122_145" class=B1 style='mso-line-spacing:"90 20 0";
+ position:absolute;top:41.69%;left:8.68%;width:79.74%;height:6.64%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:6.85%;width:93.54%;
+ height:100.0%'><span style='font-size:71%'><span style='mso-special-format:
+ bullet;position:absolute;left:-7.32%'>–</span></span><span style='font-size:
+ 71%'>Input polygons may be &#13;</span></span></div>
+ <div id="_x0000_s5127_145_159" class=B2 style='mso-line-spacing:"90 20 0";
+ position:absolute;top:49.07%;left:17.36%;width:71.38%;height:5.9%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:5.85%;width:93.69%;
+ height:100.0%'><span style='font-size:75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-6.25%'>•</span></span><span style='font-size:
+ 75%'>self touching&#13;</span></span></div>
+ <div id="_x0000_s5127_159_177" class=B2 style='mso-line-spacing:"90 20 0";
+ position:absolute;top:55.35%;left:17.36%;width:71.38%;height:5.9%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:5.85%;width:93.69%;
+ height:100.0%'><span style='font-size:75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-6.25%'>•</span></span><span style='font-size:
+ 75%'>self intersecting&#13;</span></span></div>
+ <div id="_x0000_s5127_177_194" class=B2 style='mso-line-spacing:"90 20 0";
+ position:absolute;top:61.99%;left:17.36%;width:71.38%;height:5.9%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:5.85%;width:93.69%;
+ height:100.0%'><span style='font-size:75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-6.25%'>•</span></span><span style='font-size:
+ 75%'>self overlapping&#13;</span></span></div>
+ <div id="_x0000_s5127_194_239" class=B1 style='mso-line-spacing:"90 20 0";
+ position:absolute;top:68.63%;left:8.68%;width:84.24%;height:12.54%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:6.48%;width:93.51%;
+ height:52.94%'><span style='font-size:71%'><span style='mso-special-format:
+ bullet;position:absolute;left:-6.93%'>–</span></span><span style='font-size:
+ 71%'>Correctly handles duplicate/co-</span></span><span style='position:absolute;
+ top:47.05%;left:6.48%;width:88.54%;height:52.94%'><span style='font-size:71%'>linear
+ points&#13;</span></span></div>
+ <div id="_x0000_s5127_239_325" class=B1 style='mso-line-spacing:"90 20 0";
+ position:absolute;top:81.54%;left:8.68%;width:82.31%;height:18.45%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:6.64%;width:93.35%;
+ height:36.0%'><span style='font-size:71%'><span style='mso-special-format:
+ bullet;position:absolute;left:-7.11%'>–</span></span><span style='font-size:
+ 71%'>Correctly handles zero degree </span></span><span style='position:absolute;
+ top:32.0%;left:6.64%;width:90.62%;height:36.0%'><span style='font-size:71%'>angles
+ and polygons that </span></span><span style='position:absolute;top:64.0%;
+ left:6.64%;width:93.35%;height:36.0%'><span style='font-size:71%'>degenerate
+ to lines and points</span></span></div>
+ </div>
+ <v:line id="_x0000_s5128" style='position:absolute;flip:y' from="449.25pt,474.125pt"
+ to="597pt,507pt" strokecolor="red" strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="3" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s5128"
+ src="slide0004_image018.gif" style='position:absolute;top:87.75%;left:62.35%;
+ width:20.97%;height:6.75%'><![endif]><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s5130" type="#_x0000_m1027"
+ style='position:absolute;left:484.875pt;top:91.625pt;width:41pt;height:51.25pt'
+ o:spt="1" path="m,l,21600r21600,l21600,xe" filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="f"/>
+ <v:stroke joinstyle="miter" o:forcedash="f"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" text="f" grouping="t"/>
+ <p:placeholder type="body" position="1"/><p:animation number="6" delay="0"
+ type="text" level="1" effect="zoom" direction="out" flag="1028"/></v:shape>
+ <div id="_x0000_s5130_0_2" v:shape="_x0000_s5130" class=B style='position:
+ absolute;top:18.0%;left:68.35%;width:3.93%;height:6.75%;white-space:nowrap'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='color:red'>?</span></div>
+ <v:line id="_x0000_s5131" style='position:absolute' from="468.375pt,277.625pt"
+ to="468.375pt,342.25pt" strokecolor="red" strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="10" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s5131"
+ src="slide0004_image019.gif" style='position:absolute;top:51.24%;left:64.98%;
+ width:.56%;height:12.75%'><![endif]><v:oval id="_x0000_s5132" style='position:absolute;
+ left:463.25pt;top:268.125pt;width:10.375pt;height:10.375pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="13" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s5132"
+ src="slide0004_image020.gif" style='position:absolute;top:49.5%;left:64.23%;
+ width:1.87%;height:2.5%'><![endif]><v:oval id="_x0000_s5133" style='position:absolute;
+ left:619.25pt;top:295pt;width:10.375pt;height:10.375pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="17" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s5133"
+ src="slide0004_image021.gif" style='position:absolute;top:54.5%;left:85.95%;
+ width:1.87%;height:2.5%'><![endif]><v:oval id="_x0000_s5134" style='position:absolute;
+ left:629.625pt;top:311.25pt;width:10.375pt;height:10.375pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="16" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s5134"
+ src="slide0004_image022.gif" style='position:absolute;top:57.49%;left:87.45%;
+ width:1.87%;height:2.5%'><![endif]><v:oval id="_x0000_s5135" style='position:absolute;
+ left:477.5pt;top:354.375pt;width:10.375pt;height:10.375pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="15" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s5135"
+ src="slide0004_image023.gif" style='position:absolute;top:65.5%;left:66.29%;
+ width:1.87%;height:2.5%'><![endif]><v:oval id="_x0000_s5136" style='position:absolute;
+ left:513.125pt;top:397.375pt;width:10.375pt;height:10.375pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="14" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s5136"
+ src="slide0004_image024.gif" style='position:absolute;top:73.5%;left:71.16%;
+ width:1.87%;height:2.5%'><![endif]><v:oval id="_x0000_s5137" style='position:absolute;
+ left:479.125pt;top:329.875pt;width:75pt;height:75.625pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="25" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s5137"
+ src="slide0004_image025.gif" style='position:absolute;top:61.0%;left:66.47%;
+ width:10.86%;height:14.75%'><![endif]><v:oval id="_x0000_s5138" style='position:absolute;
+ left:613.75pt;top:283.875pt;width:36.375pt;height:34.875pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="24" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s5138"
+ src="slide0004_image026.gif" style='position:absolute;top:52.5%;left:85.2%;
+ width:5.61%;height:7.0%'><![endif]><v:oval id="_x0000_s5139" style='position:absolute;
+ left:461.25pt;top:338.125pt;width:10.375pt;height:10.375pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="29" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s5139"
+ src="slide0004_image027.gif" style='position:absolute;top:62.5%;left:64.04%;
+ width:1.87%;height:2.5%'><![endif]><v:oval id="_x0000_s5141" style='position:absolute;
+ left:625.125pt;top:106.5pt;width:78.625pt;height:79.375pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="34" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s5141"
+ src="slide0004_image028.gif" style='position:absolute;top:19.5%;left:86.7%;
+ width:11.42%;height:15.25%'><![endif]><v:oval id="_x0000_s5142" style='position:absolute;
+ left:633.75pt;top:162.5pt;width:11.125pt;height:10.25pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="30" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s5142"
+ src="slide0004_image029.gif" style='position:absolute;top:30.0%;left:88.01%;
+ width:2.05%;height:2.5%'><![endif]></p:slide></div>
+
+<p:animation number="-227242055"/><oa:par id="TimeNode0" dur="indefinite"
+ restart="never" p:nodeType="timingRoot">
+ <oa:seq id="TimeNode1" dur="indefinite" prev="document.onpptprev"
+ next="document.onpptnext" concurrent="enabled" nextAction="seek"
+ p:nodeType="mainSeq">
+ <oa:par id="TimeNode2" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode3" begin="0.0" fill="hold">
+ <oa:par id="TimeNode4" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode5" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5127_42_79" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode6" dur="0.5"
+ targetElement="_x0000_s5127_42_79" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode7" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode8" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5128" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode9" dur="0.5" targetElement="_x0000_s5128"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode10" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode11" begin="0.0" fill="hold">
+ <oa:par id="TimeNode12" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode13" dur="0.5" targetElement="_x0000_s5128"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode14" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5128" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode15" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode16" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5127_79_122" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode17" dur="0.5"
+ targetElement="_x0000_s5127_79_122" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode18" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode19" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5130_0_2" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode20" dur="0.5"
+ targetElement="_x0000_s5130_0_2" transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode21" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode22" begin="0.0" fill="hold">
+ <oa:par id="TimeNode23" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="1"
+ p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode24" dur="0.5"
+ targetElement="_x0000_s5130_0_2" transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode25" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5130_0_2" attributeName="style.visibility"
+ to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode26" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode27" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5127_122_145" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode28" dur="0.5"
+ targetElement="_x0000_s5127_122_145" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode29" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode30" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5127_145_159" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode31" dur="0.5"
+ targetElement="_x0000_s5127_145_159" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode32" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode33" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5131" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode34" dur="0.5" targetElement="_x0000_s5131"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode35" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode36" begin="0.0" fill="hold">
+ <oa:par id="TimeNode37" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode38" dur="0.5" targetElement="_x0000_s5131"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode39" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5131" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode40" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode41" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5127_159_177" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode42" dur="0.5"
+ targetElement="_x0000_s5127_159_177" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode43" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode44" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5132" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode45" dur="0.5" targetElement="_x0000_s5132"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode46" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode47" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5136" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode48" dur="0.5" targetElement="_x0000_s5136"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode49" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode50" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5135" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode51" dur="0.5" targetElement="_x0000_s5135"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode52" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode53" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5134" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode54" dur="0.5" targetElement="_x0000_s5134"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode55" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode56" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5133" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode57" dur="0.5" targetElement="_x0000_s5133"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode58" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode59" begin="0.0" fill="hold">
+ <oa:par id="TimeNode60" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode61" dur="0.5" targetElement="_x0000_s5136"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode62" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5136" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode63" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode64" dur="0.5" targetElement="_x0000_s5134"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode65" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5134" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode66" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode67" dur="0.5" targetElement="_x0000_s5135"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode68" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5135" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode69" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode70" dur="0.5" targetElement="_x0000_s5133"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode71" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5133" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode72" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode73" dur="0.5" targetElement="_x0000_s5132"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode74" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5132" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode75" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode76" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5127_177_194" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode77" dur="0.5"
+ targetElement="_x0000_s5127_177_194" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode78" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode79" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5138" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode80" dur="0.5" targetElement="_x0000_s5138"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode81" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode82" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5137" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode83" dur="0.5" targetElement="_x0000_s5137"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode84" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode85" begin="0.0" fill="hold">
+ <oa:par id="TimeNode86" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode87" dur="0.5" targetElement="_x0000_s5138"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode88" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5138" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode89" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode90" dur="0.5" targetElement="_x0000_s5137"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode91" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5137" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode92" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode93" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5127_194_239" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode94" dur="0.5"
+ targetElement="_x0000_s5127_194_239" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode95" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode96" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5139" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode97" dur="0.5" targetElement="_x0000_s5139"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode98" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode99" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5142" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode100" dur="0.5" targetElement="_x0000_s5142"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode101" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode102" begin="0.0" fill="hold">
+ <oa:par id="TimeNode103" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode104" dur="0.5" targetElement="_x0000_s5142"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode105" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5142" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode106" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode107" dur="0.5" targetElement="_x0000_s5139"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode108" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5139" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode109" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode110" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5127_239_325" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode111" dur="0.5"
+ targetElement="_x0000_s5127_239_325" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode112" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode113" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5141" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode114" dur="0.5" targetElement="_x0000_s5141"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode115" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode116" begin="0.0" fill="hold">
+ <oa:par id="TimeNode117" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode118" dur="0.5" targetElement="_x0000_s5141"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode119" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s5141" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode120" o:presetID="ppt_22" o:presetClass="entrance"
+ o:presetSubType="0x8" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode121" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s5125" attributeName="style.visibility" to="visible"/>
+ <oa:animateFilter id="TimeNode122" dur="0.5" targetElement="_x0000_s5125"
+ transition="in" filter="wipe(left)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ </oa:seq>
+</oa:par>
+<![if ppt]>
+<oa:buildParagraph targetElement="_x0000_s5130" groupID="0" build="byParagraph"
+ buildLevel="1" reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s5130" groupID="1" build="byParagraph" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/>
+<![endif]>
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image014.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image015.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image016.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image017.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image018.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image019.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image020.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image021.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image022.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image023.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image024.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image025.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image026.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image027.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image028.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0004_image029.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0005.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0005.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,121 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Details of 45-degree Booleans">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="6"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>8</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s6146"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s6147" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:306pt;height:356.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s6146" class=T style='position:absolute;top:8.0%;
+ left:.56%;width:98.87%;height:9.25%'>Details of 45-degree Booleans</div>
+ <div v:shape="_x0000_s6147" class=B>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:23.75%;left:9.73%;width:36.89%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-10.15%'>•</span>Preserve 45-</span><span
+ style='position:absolute;top:30.25%;left:9.73%;width:39.32%;height:6.75%'>degree
+ nature of </span><span style='position:absolute;top:36.5%;left:9.73%;
+ width:36.89%;height:6.75%'>geometry at </span><span style='position:absolute;
+ top:43.0%;left:9.73%;width:36.89%;height:6.75%'>output&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:50.74%;left:9.73%;width:36.89%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-10.15%'>•</span>Handle off-grid </span><span
+ style='position:absolute;top:57.25%;left:9.73%;width:37.26%;height:6.75%'>intersections
+ by </span><span style='position:absolute;top:63.5%;left:9.73%;width:41.01%;
+ height:6.75%'>inserting an edge </span><span style='position:absolute;
+ top:70.0%;left:9.73%;width:44.19%;height:6.75%'>to approximate the </span><span
+ style='position:absolute;top:76.25%;left:9.73%;width:36.89%;height:6.75%'>output
+ region</span></div>
+ </div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s6148" type="#_x0000_t75" style='position:absolute;
+ left:334.875pt;top:108pt;width:385.125pt;height:390pt'>
+ <v:imagedata src="slide0005_image030.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s6148"
+ src="slide0005_image031.jpg" style='position:absolute;top:20.0%;left:46.44%;
+ width:53.55%;height:72.25%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0005_image030.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0005_image031.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,301 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Boolean Operation Output Modes">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml" href="slide0006.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>9</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><p:shaperange
+ href="master03.xml#_x0000_m1027"/><p:shaperange
+ href="slide0006.xml#_x0000_s7170"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7450,_x0000_s7451,_x0000_s7452,_x0000_s7453,_x0000_s7454,_x0000_s7455,_x0000_s7456,_x0000_s7457,_x0000_s7458,_x0000_s7459,_x0000_s7460,_x0000_s7461,_x0000_s7462"
+ src="slide0006_image032.gif" style='position:absolute;top:81.0%;left:69.1%;
+ width:28.83%;height:17.5%'><![endif]>
+ <div v:shape="_x0000_s7170" class=T style='position:absolute;top:8.0%;
+ left:-3.93%;width:109.55%;height:9.25%'>Boolean Operation Output Modes</div>
+ <div v:shape="_x0000_s7336">
+ <div class=B style='mso-line-spacing:"90 20 0";position:absolute;top:19.25%;
+ left:.93%;width:50.74%;height:5.25%'><span style='position:absolute;
+ top:0%;left:7.38%;width:92.61%;height:100.0%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-7.96%'>•</span></span><span
+ style='font-size:75%'>Manhattan Booleans&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:25.0%;
+ left:5.99%;width:45.69%;height:4.5%'><span style='position:absolute;
+ top:0%;left:6.96%;width:93.03%;height:100.0%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-7.48%'>–</span></span><span
+ style='font-size:71%'>Polygons with lists of holes&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:29.75%;
+ left:5.99%;width:49.06%;height:4.5%'><span style='position:absolute;
+ top:0%;left:6.48%;width:93.51%;height:100.0%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-6.93%'>–</span></span><span
+ style='font-size:71%'>Keyhole holes to outer polygon&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:34.75%;left:9.17%;width:42.69%;height:4.5%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-7.45%'>–</span></span><span
+ style='font-size:71%'>Horizontal and vertical sliced </span></span><span
+ style='position:absolute;top:38.75%;left:9.17%;width:42.5%;height:4.5%'><span
+ style='font-size:71%'>rectangle tiling&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"90 20 0";position:absolute;top:43.75%;
+ left:.93%;width:50.74%;height:5.25%'><span style='position:absolute;
+ top:0%;left:7.38%;width:92.61%;height:100.0%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-7.96%'>•</span></span><span
+ style='font-size:75%'>45-degree Booleans&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:49.5%;
+ left:5.99%;width:45.69%;height:4.5%'><span style='position:absolute;
+ top:0%;left:6.96%;width:93.03%;height:100.0%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-7.48%'>–</span></span><span
+ style='font-size:71%'>Polygon with lists of holes&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:54.25%;
+ left:5.99%;width:49.06%;height:4.5%'><span style='position:absolute;
+ top:0%;left:6.48%;width:93.51%;height:100.0%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-6.93%'>–</span></span><span
+ style='font-size:71%'>Keyhole holes to outer polygon&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:59.25%;
+ left:5.99%;width:46.25%;height:4.5%'><span style='position:absolute;
+ top:0%;left:6.88%;width:93.52%;height:100.0%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-7.35%'>–</span></span><span
+ style='font-size:71%'>Vertical sliced trapezoid tiling&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"90 20 0";position:absolute;top:64.25%;
+ left:.93%;width:50.74%;height:5.25%'><span style='position:absolute;
+ top:0%;left:7.38%;width:92.61%;height:100.0%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-7.96%'>•</span></span><span
+ style='font-size:75%'>Arbitrary-angle Booleans&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:70.0%;
+ left:5.99%;width:45.69%;height:4.5%'><span style='position:absolute;
+ top:0%;left:6.96%;width:93.03%;height:100.0%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-7.48%'>–</span></span><span
+ style='font-size:71%'>Polygon with lists of holes&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:74.75%;
+ left:5.99%;width:49.06%;height:4.5%'><span style='position:absolute;
+ top:0%;left:6.48%;width:93.51%;height:100.0%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-6.93%'>–</span></span><span
+ style='font-size:71%'>Keyhole holes to outer polygon</span></span></div>
+ </div>
+ <div v:shape="_x0000_s7450" class=O>
+ <div style='text-align:center;position:absolute;top:86.0%;left:70.03%;
+ width:10.29%;height:4.0%'>Vertical&#13;</div>
+ <div style='text-align:center;position:absolute;top:90.0%;left:70.22%;
+ width:9.92%;height:4.0%'>Slicing</div>
+ </div>
+ <p:shaperange href="slide0006.xml#_x0000_s7463"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7463" src="slide0006_image033.gif" style='position:absolute;
+ top:23.5%;left:54.3%;width:7.11%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7464"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7464" src="slide0006_image034.gif" style='position:absolute;
+ top:28.99%;left:54.3%;width:8.8%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7465"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7465" src="slide0006_image035.gif" style='position:absolute;
+ top:24.75%;left:61.04%;width:7.11%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7466"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7466" src="slide0006_image036.gif" style='position:absolute;
+ top:24.75%;left:67.79%;width:.37%;height:10.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7467"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7467" src="slide0006_image037.gif" style='position:absolute;
+ top:23.5%;left:61.04%;width:.37%;height:1.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7468"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7468" src="slide0006_image038.gif" style='position:absolute;
+ top:23.5%;left:54.3%;width:.37%;height:6.0%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7469"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7469" src="slide0006_image039.gif" style='position:absolute;
+ top:34.75%;left:62.73%;width:5.43%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7470"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7470" src="slide0006_image040.gif" style='position:absolute;
+ top:28.99%;left:62.73%;width:.37%;height:6.0%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7471"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7471" src="slide0006_image041.gif" style='position:absolute;
+ top:24.75%;left:56.92%;width:2.99%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7472"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7472" src="slide0006_image042.gif" style='position:absolute;
+ top:24.75%;left:56.92%;width:.37%;height:2.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7473"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7473" src="slide0006_image043.gif" style='position:absolute;
+ top:24.75%;left:59.36%;width:.37%;height:2.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7474"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7474" src="slide0006_image044.gif" style='position:absolute;
+ top:27.0%;left:56.92%;width:2.99%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7475"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7475" src="slide0006_image045.gif" style='position:absolute;
+ top:45.75%;left:84.08%;width:7.11%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7476"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7476" src="slide0006_image046.gif" style='position:absolute;
+ top:51.5%;left:84.08%;width:8.8%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7477"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7477" src="slide0006_image047.gif" style='position:absolute;
+ top:47.0%;left:90.63%;width:7.11%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7478"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7478" src="slide0006_image048.gif" style='position:absolute;
+ top:47.0%;left:97.37%;width:.37%;height:10.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7479"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7479" src="slide0006_image049.gif" style='position:absolute;
+ top:45.75%;left:90.63%;width:.37%;height:1.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7480"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7480" src="slide0006_image050.gif" style='position:absolute;
+ top:45.75%;left:84.08%;width:.37%;height:6.0%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7481"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7481" src="slide0006_image051.gif" style='position:absolute;
+ top:56.99%;left:92.32%;width:5.43%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7482"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7482" src="slide0006_image052.gif" style='position:absolute;
+ top:51.5%;left:92.32%;width:.37%;height:6.0%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7483"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7483" src="slide0006_image053.gif" style='position:absolute;
+ top:47.0%;left:86.51%;width:2.99%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7484"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7484" src="slide0006_image054.gif" style='position:absolute;
+ top:47.0%;left:86.51%;width:.37%;height:2.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7485"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7485" src="slide0006_image055.gif" style='position:absolute;
+ top:45.75%;left:89.13%;width:.37%;height:4.0%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7486"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7486,_x0000_s7487" src="slide0006_image056.gif"
+ style='position:absolute;top:41.5%;left:68.91%;width:20.59%;height:17.5%'><![endif]>
+ <div v:shape="_x0000_s7487" class=O>
+ <div style='text-align:center;position:absolute;top:46.25%;left:70.03%;
+ width:9.92%;height:4.0%'>Hole &#13;</div>
+ <div style='text-align:center;position:absolute;top:50.24%;left:68.16%;
+ width:13.67%;height:4.0%'>Fracturing</div>
+ </div>
+ <p:shaperange href="slide0006.xml#_x0000_s7500"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7500" src="slide0006_image057.gif" style='position:absolute;
+ top:24.75%;left:84.08%;width:7.11%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7501"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7501" src="slide0006_image058.gif" style='position:absolute;
+ top:30.25%;left:84.08%;width:8.8%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7502"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7502" src="slide0006_image059.gif" style='position:absolute;
+ top:26.0%;left:90.82%;width:7.11%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7503"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7503" src="slide0006_image060.gif" style='position:absolute;
+ top:26.0%;left:97.37%;width:.37%;height:10.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7504"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7504" src="slide0006_image061.gif" style='position:absolute;
+ top:24.75%;left:90.82%;width:.37%;height:1.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7505"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7505" src="slide0006_image062.gif" style='position:absolute;
+ top:24.75%;left:84.08%;width:.37%;height:6.0%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7506"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7506" src="slide0006_image063.gif" style='position:absolute;
+ top:36.0%;left:92.5%;width:5.43%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7507"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7507" src="slide0006_image064.gif" style='position:absolute;
+ top:30.25%;left:92.5%;width:.37%;height:6.0%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7508"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7508" src="slide0006_image065.gif" style='position:absolute;
+ top:26.0%;left:86.51%;width:2.99%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7509"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7509" src="slide0006_image066.gif" style='position:absolute;
+ top:26.0%;left:86.51%;width:.37%;height:2.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7510"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7510" src="slide0006_image067.gif" style='position:absolute;
+ top:26.0%;left:89.13%;width:.37%;height:2.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7511"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7511,_x0000_s7512" src="slide0006_image068.gif"
+ style='position:absolute;top:20.0%;left:69.1%;width:20.41%;height:17.5%'><![endif]>
+ <div v:shape="_x0000_s7512" class=O>
+ <div style='text-align:center;position:absolute;top:25.0%;left:69.66%;
+ width:11.04%;height:4.0%'>Polygon&#13;</div>
+ <div style='text-align:center;position:absolute;top:28.99%;left:67.79%;
+ width:14.6%;height:4.0%'>With Holes</div>
+ </div>
+ <p:shaperange href="slide0006.xml#_x0000_s7513"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7513" src="slide0006_image069.gif" style='position:absolute;
+ top:45.5%;left:54.11%;width:7.11%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7514"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7514" src="slide0006_image070.gif" style='position:absolute;
+ top:51.0%;left:54.11%;width:8.8%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7515"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7515" src="slide0006_image071.gif" style='position:absolute;
+ top:46.5%;left:60.86%;width:7.11%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7516"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7516" src="slide0006_image072.gif" style='position:absolute;
+ top:46.5%;left:67.41%;width:.37%;height:10.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7517"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7517" src="slide0006_image073.gif" style='position:absolute;
+ top:45.5%;left:60.86%;width:.37%;height:1.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7518"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7518" src="slide0006_image074.gif" style='position:absolute;
+ top:45.5%;left:54.11%;width:.37%;height:6.0%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7519"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7519" src="slide0006_image075.gif" style='position:absolute;
+ top:56.49%;left:62.54%;width:5.43%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7520"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7520" src="slide0006_image076.gif" style='position:absolute;
+ top:51.0%;left:62.54%;width:.37%;height:6.0%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7521"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7521" src="slide0006_image077.gif" style='position:absolute;
+ top:46.5%;left:56.74%;width:2.99%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7522"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7522" src="slide0006_image078.gif" style='position:absolute;
+ top:46.5%;left:56.74%;width:.37%;height:2.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7523"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7523" src="slide0006_image079.gif" style='position:absolute;
+ top:46.5%;left:59.17%;width:.37%;height:2.75%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7524"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7524" src="slide0006_image080.gif" style='position:absolute;
+ top:48.75%;left:56.74%;width:2.99%;height:.5%'><![endif]><p:shaperange
+ href="slide0006.xml#_x0000_s7525"/><![if !vml]><img border=0
+ v:shapes="_x0000_s7525,_x0000_s7526,_x0000_s7527,_x0000_s7528,_x0000_s7529,_x0000_s7530,_x0000_s7531,_x0000_s7532,_x0000_s7533,_x0000_s7534,_x0000_s7535,_x0000_s7536,_x0000_s7537,_x0000_s7539,_x0000_s7540,_x0000_s7541,_x0000_s7542,_x0000_s7543,_x0000_s7544,_x0000_s7545,_x0000_s7546,_x0000_s7547,_x0000_s7548,_x0000_s7549,_x0000_s7550,_x0000_s7551,_x0000_s7552,_x0000_s7553,_x0000_s7554,_x0000_s7555,_x0000_s7556,_x0000_s7557,_x0000_s7558,_x0000_s7559,_x0000_s7560,_x0000_s7561,_x0000_s7562,_x0000_s7563"
+ src="slide0006_image081.gif" style='position:absolute;top:62.25%;left:54.3%;
+ width:43.44%;height:34.5%'><![endif]>
+ <div v:shape="_x0000_s7525" class=O>
+ <div style='text-align:center;position:absolute;top:67.25%;left:68.35%;
+ width:13.67%;height:4.0%'>Horizontal&#13;</div>
+ <div style='text-align:center;position:absolute;top:71.25%;left:70.22%;
+ width:9.92%;height:4.0%'>Slicing</div>
+ </div>
+</p:slide>
+</div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006.xml
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006.xml 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,452 @@
+<xml xmlns:v="urn:schemas-microsoft-com:vml"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+ xmlns:oa="urn:schemas-microsoft-com:office:activation">
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="7"/>
+ </o:shapelayout><p:shaperange id="_x0000_s7170">
+ <v:shape id="_x0000_s7170" type="#_x0000_m1026" style='position:absolute;
+ left:24pt;top:21.625pt;width:684pt;height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/>
+ </v:shape><v:shape id="_x0000_s7336" type="#_x0000_m1027" style='position:absolute;
+ left:0;top:100.75pt;width:378.25pt;height:428pt' o:spt="1" path="m,l,21600r21600,l21600,xe"
+ filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="f"/>
+ <v:stroke joinstyle="miter" o:forcedash="f"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" text="f" grouping="t"/>
+ <p:placeholder type="body" position="1"/>
+ </v:shape><v:shapetype id="_x0000_t13" coordsize="21600,21600" o:spt="13"
+ adj="16200,5400" path="m_at_0,l_at_0@1,0_at_1,0_at_2@0_at_2@0,21600,21600,10800xe">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="val #0"/>
+ <v:f eqn="val #1"/>
+ <v:f eqn="sum height 0 #1"/>
+ <v:f eqn="sum 10800 0 #1"/>
+ <v:f eqn="sum width 0 #0"/>
+ <v:f eqn="prod @4 @3 10800"/>
+ <v:f eqn="sum width 0 @5"/>
+ </v:formulas>
+ <v:path o:connecttype="custom" o:connectlocs="@0,0;0,10800;@0,21600;21600,10800"
+ o:connectangles="270,180,90,0" textboxrect="0,@1,@6,@2"/>
+ <v:handles>
+ <v:h position="#0,#1" xrange="0,21600" yrange="0,10800"/>
+ </v:handles>
+ </v:shapetype><v:shape id="_x0000_s7450" type="#_x0000_t13" style='position:absolute;
+ left:497.875pt;top:439.5pt;width:96pt;height:90pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><v:line id="_x0000_s7451" style='position:absolute' from="605.875pt,463.5pt"
+ to="653.875pt,463.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7452" style='position:absolute' from="605.875pt,493.5pt"
+ to="665.875pt,493.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7453" style='position:absolute' from="653.875pt,469.5pt"
+ to="701.875pt,469.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7454" style='position:absolute' from="701.875pt,469.5pt"
+ to="701.875pt,523.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7455" style='position:absolute' from="653.875pt,463.5pt"
+ to="653.875pt,493.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7456" style='position:absolute;flip:y' from="605.875pt,463.5pt"
+ to="605.875pt,493.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7457" style='position:absolute' from="665.875pt,523.5pt"
+ to="701.875pt,523.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7458" style='position:absolute' from="665.875pt,469.5pt"
+ to="665.875pt,523.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7459" style='position:absolute' from="623.875pt,469.5pt"
+ to="641.875pt,469.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7460" style='position:absolute;flip:y' from="623.875pt,463.5pt"
+ to="623.875pt,493.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7461" style='position:absolute;flip:y' from="641.875pt,463.5pt"
+ to="641.875pt,493.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7462" style='position:absolute' from="623.875pt,481.5pt"
+ to="641.875pt,481.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7463">
+ <v:line id="_x0000_s7463" style='position:absolute' from="391.875pt,127.625pt"
+ to="439.875pt,127.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7464">
+ <v:line id="_x0000_s7464" style='position:absolute' from="391.875pt,157.625pt"
+ to="451.875pt,157.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7465">
+ <v:line id="_x0000_s7465" style='position:absolute' from="439.875pt,133.625pt"
+ to="487.875pt,133.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7466">
+ <v:line id="_x0000_s7466" style='position:absolute' from="487.875pt,133.625pt"
+ to="487.875pt,187.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7467">
+ <v:line id="_x0000_s7467" style='position:absolute' from="439.875pt,127.625pt"
+ to="439.875pt,133.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7468">
+ <v:line id="_x0000_s7468" style='position:absolute;flip:y' from="391.875pt,127.625pt"
+ to="391.875pt,157.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7469">
+ <v:line id="_x0000_s7469" style='position:absolute' from="451.875pt,187.625pt"
+ to="487.875pt,187.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7470">
+ <v:line id="_x0000_s7470" style='position:absolute' from="451.875pt,157.625pt"
+ to="451.875pt,187.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7471">
+ <v:line id="_x0000_s7471" style='position:absolute' from="409.875pt,133.625pt"
+ to="427.875pt,133.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7472">
+ <v:line id="_x0000_s7472" style='position:absolute;flip:y' from="409.875pt,133.625pt"
+ to="409.875pt,145.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7473">
+ <v:line id="_x0000_s7473" style='position:absolute;flip:y' from="427.875pt,133.625pt"
+ to="427.875pt,145.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7474">
+ <v:line id="_x0000_s7474" style='position:absolute' from="409.875pt,145.625pt"
+ to="427.875pt,145.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7475">
+ <v:line id="_x0000_s7475" style='position:absolute' from="605.625pt,247.875pt"
+ to="653.625pt,247.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7476">
+ <v:line id="_x0000_s7476" style='position:absolute' from="605.625pt,277.875pt"
+ to="665.625pt,277.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7477">
+ <v:line id="_x0000_s7477" style='position:absolute' from="653.625pt,253.875pt"
+ to="701.625pt,253.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7478">
+ <v:line id="_x0000_s7478" style='position:absolute' from="701.625pt,253.875pt"
+ to="701.625pt,307.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7479">
+ <v:line id="_x0000_s7479" style='position:absolute' from="653.625pt,247.875pt"
+ to="653.625pt,253.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7480">
+ <v:line id="_x0000_s7480" style='position:absolute;flip:y' from="605.625pt,247.875pt"
+ to="605.625pt,277.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7481">
+ <v:line id="_x0000_s7481" style='position:absolute' from="665.625pt,307.875pt"
+ to="701.625pt,307.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7482">
+ <v:line id="_x0000_s7482" style='position:absolute' from="665.625pt,277.875pt"
+ to="665.625pt,307.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7483">
+ <v:line id="_x0000_s7483" style='position:absolute' from="623.625pt,253.875pt"
+ to="641.625pt,253.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7484">
+ <v:line id="_x0000_s7484" style='position:absolute;flip:y' from="623.625pt,253.875pt"
+ to="623.625pt,265.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7485">
+ <v:line id="_x0000_s7485" style='position:absolute;flip:y' from="641.625pt,247.875pt"
+ to="641.625pt,265.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7486">
+ <v:line id="_x0000_s7486" style='position:absolute' from="623.625pt,265.875pt"
+ to="641.625pt,265.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:shape id="_x0000_s7487" type="#_x0000_t13" style='position:absolute;
+ left:496.875pt;top:225.5pt;width:96pt;height:90pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape></p:shaperange>
+ <p:shaperange id="_x0000_s7500">
+ <v:line id="_x0000_s7500" style='position:absolute' from="605.875pt,134.25pt"
+ to="653.875pt,134.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7501">
+ <v:line id="_x0000_s7501" style='position:absolute' from="605.875pt,164.25pt"
+ to="665.875pt,164.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7502">
+ <v:line id="_x0000_s7502" style='position:absolute' from="653.875pt,140.25pt"
+ to="701.875pt,140.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7503">
+ <v:line id="_x0000_s7503" style='position:absolute' from="701.875pt,140.25pt"
+ to="701.875pt,194.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7504">
+ <v:line id="_x0000_s7504" style='position:absolute' from="653.875pt,134.25pt"
+ to="653.875pt,140.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7505">
+ <v:line id="_x0000_s7505" style='position:absolute;flip:y' from="605.875pt,134.25pt"
+ to="605.875pt,164.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7506">
+ <v:line id="_x0000_s7506" style='position:absolute' from="665.875pt,194.25pt"
+ to="701.875pt,194.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7507">
+ <v:line id="_x0000_s7507" style='position:absolute' from="665.875pt,164.25pt"
+ to="665.875pt,194.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7508">
+ <v:line id="_x0000_s7508" style='position:absolute' from="623.875pt,140.25pt"
+ to="641.875pt,140.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7509">
+ <v:line id="_x0000_s7509" style='position:absolute;flip:y' from="623.875pt,140.25pt"
+ to="623.875pt,152.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7510">
+ <v:line id="_x0000_s7510" style='position:absolute;flip:y' from="641.875pt,140.25pt"
+ to="641.875pt,152.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7511">
+ <v:line id="_x0000_s7511" style='position:absolute' from="623.875pt,152.25pt"
+ to="641.875pt,152.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:shape id="_x0000_s7512" type="#_x0000_t13" style='position:absolute;
+ left:497.875pt;top:110.25pt;width:96pt;height:90pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape></p:shaperange>
+ <p:shaperange id="_x0000_s7513">
+ <v:line id="_x0000_s7513" style='position:absolute' from="390.375pt,246.125pt"
+ to="438.375pt,246.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7514">
+ <v:line id="_x0000_s7514" style='position:absolute' from="390.375pt,276.125pt"
+ to="450.375pt,276.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7515">
+ <v:line id="_x0000_s7515" style='position:absolute' from="438.375pt,252.125pt"
+ to="486.375pt,252.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7516">
+ <v:line id="_x0000_s7516" style='position:absolute' from="486.375pt,252.125pt"
+ to="486.375pt,306.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7517">
+ <v:line id="_x0000_s7517" style='position:absolute' from="438.375pt,246.125pt"
+ to="438.375pt,252.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7518">
+ <v:line id="_x0000_s7518" style='position:absolute;flip:y' from="390.375pt,246.125pt"
+ to="390.375pt,276.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7519">
+ <v:line id="_x0000_s7519" style='position:absolute' from="450.375pt,306.125pt"
+ to="486.375pt,306.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7520">
+ <v:line id="_x0000_s7520" style='position:absolute' from="450.375pt,276.125pt"
+ to="450.375pt,306.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7521">
+ <v:line id="_x0000_s7521" style='position:absolute' from="408.375pt,252.125pt"
+ to="426.375pt,252.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7522">
+ <v:line id="_x0000_s7522" style='position:absolute;flip:y' from="408.375pt,252.125pt"
+ to="408.375pt,264.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7523">
+ <v:line id="_x0000_s7523" style='position:absolute;flip:y' from="426.375pt,252.125pt"
+ to="426.375pt,264.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7524">
+ <v:line id="_x0000_s7524" style='position:absolute' from="408.375pt,264.125pt"
+ to="426.375pt,264.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s7525">
+ <v:shape id="_x0000_s7525" type="#_x0000_t13" style='position:absolute;
+ left:497.625pt;top:337.875pt;width:96pt;height:90pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><v:line id="_x0000_s7526" style='position:absolute' from="605.625pt,361.875pt"
+ to="653.625pt,361.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7527" style='position:absolute' from="605.625pt,391.875pt"
+ to="701.625pt,391.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7528" style='position:absolute' from="605.625pt,367.875pt"
+ to="701.625pt,367.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7529" style='position:absolute' from="701.625pt,367.875pt"
+ to="701.625pt,421.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7530" style='position:absolute' from="653.625pt,361.875pt"
+ to="653.625pt,367.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7531" style='position:absolute;flip:y' from="605.625pt,361.875pt"
+ to="605.625pt,391.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7532" style='position:absolute' from="665.625pt,421.875pt"
+ to="701.625pt,421.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7533" style='position:absolute' from="665.625pt,391.875pt"
+ to="665.625pt,421.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7534" style='position:absolute' from="623.625pt,367.875pt"
+ to="641.625pt,367.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7535" style='position:absolute;flip:y' from="623.625pt,367.875pt"
+ to="623.625pt,379.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7536" style='position:absolute;flip:y' from="641.625pt,367.875pt"
+ to="641.625pt,379.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7537" style='position:absolute' from="605.625pt,379.875pt"
+ to="701.625pt,379.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7539" style='position:absolute' from="391.25pt,361.25pt"
+ to="439.25pt,361.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7540" style='position:absolute' from="391.25pt,391.25pt"
+ to="451.25pt,391.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7541" style='position:absolute' from="439.25pt,367.25pt"
+ to="487.25pt,367.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7542" style='position:absolute' from="487.25pt,367.25pt"
+ to="487.25pt,421.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7543" style='position:absolute' from="439.25pt,361.25pt"
+ to="439.25pt,367.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7544" style='position:absolute;flip:y' from="391.25pt,361.25pt"
+ to="391.25pt,391.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7545" style='position:absolute' from="451.25pt,421.25pt"
+ to="487.25pt,421.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7546" style='position:absolute' from="451.25pt,391.25pt"
+ to="451.25pt,421.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7547" style='position:absolute' from="409.25pt,367.25pt"
+ to="427.25pt,367.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7548" style='position:absolute;flip:y' from="409.25pt,367.25pt"
+ to="409.25pt,379.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7549" style='position:absolute;flip:y' from="427.25pt,367.25pt"
+ to="427.25pt,379.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7550" style='position:absolute' from="409.25pt,379.25pt"
+ to="427.25pt,379.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7551" style='position:absolute' from="392.625pt,459.375pt"
+ to="440.625pt,459.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7552" style='position:absolute' from="392.625pt,489.375pt"
+ to="452.625pt,489.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7553" style='position:absolute' from="440.625pt,465.375pt"
+ to="488.625pt,465.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7554" style='position:absolute' from="488.625pt,465.375pt"
+ to="488.625pt,519.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7555" style='position:absolute' from="440.625pt,459.375pt"
+ to="440.625pt,465.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7556" style='position:absolute;flip:y' from="392.625pt,459.375pt"
+ to="392.625pt,489.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7557" style='position:absolute' from="452.625pt,519.375pt"
+ to="488.625pt,519.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7558" style='position:absolute' from="452.625pt,489.375pt"
+ to="452.625pt,519.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7559" style='position:absolute' from="410.625pt,465.375pt"
+ to="428.625pt,465.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7560" style='position:absolute;flip:y' from="410.625pt,465.375pt"
+ to="410.625pt,477.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7561" style='position:absolute;flip:y' from="428.625pt,465.375pt"
+ to="428.625pt,477.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s7562" style='position:absolute' from="410.625pt,477.375pt"
+ to="428.625pt,477.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s7563" style='position:absolute;left:668pt;top:489.875pt;
+ width:14.125pt;height:22.25pt;mso-wrap-style:none;v-text-anchor:middle'
+ fillcolor="white [0]" strokecolor="white [0]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect></p:shaperange>
+</xml>
\ No newline at end of file

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image032.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image033.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image034.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image035.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image036.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image037.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image038.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image039.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image040.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image041.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image042.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image043.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image044.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image045.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image046.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image047.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image048.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image049.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image050.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image051.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image052.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image053.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image054.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image055.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image056.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image057.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image058.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image059.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image060.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image061.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image062.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image063.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image064.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image065.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image066.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image067.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image068.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image069.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image070.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image071.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image072.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image073.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image074.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image075.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image076.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image077.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image078.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image079.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image080.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0006_image081.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0007.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0007.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,149 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: Polygon Buffering/Resizing/Offsetting">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="8"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>10</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s8194"
+ type="#_x0000_m1026" style='position:absolute;left:18pt;top:21.625pt;width:684pt;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s8195" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:659.125pt;height:291.875pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s8194" class=T style='position:absolute;top:8.5%;
+ left:-5.24%;width:110.67%;height:8.5%'><span style='font-size:91%'>Polygon
+ Buffering/Resizing/Offsetting</span></div>
+ <div v:shape="_x0000_s8195">
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:23.25%;
+ left:5.99%;width:89.7%;height:6.0%'><span style='position:absolute;top:0%;
+ left:4.17%;width:95.82%;height:100.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.35%'>•</span></span><span
+ style='font-size:88%'>Manhattan&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:29.5%;
+ left:11.04%;width:84.64%;height:5.25%'><span style='position:absolute;
+ top:0%;left:3.53%;width:96.46%;height:100.0%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.66%'>–</span></span><span
+ style='font-size:86%'>Uniform resizing&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:34.75%;left:14.04%;width:84.08%;height:5.25%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.56%'>–</span></span><span
+ style='font-size:86%'>Resizing by different amount in each of the four </span></span><span
+ style='position:absolute;top:39.0%;left:14.04%;width:81.64%;height:5.25%'><span
+ style='font-size:86%'>directions&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:44.5%;
+ left:11.04%;width:84.64%;height:5.25%'><span style='position:absolute;
+ top:0%;left:3.53%;width:96.46%;height:100.0%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.66%'>–</span></span><span
+ style='font-size:86%'>Optionally leave corners unfilled&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:49.75%;
+ left:5.99%;width:89.7%;height:6.0%'><span style='position:absolute;top:0%;
+ left:4.17%;width:95.82%;height:100.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.35%'>•</span></span><span
+ style='font-size:88%'>45-Degree&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:56.0%;
+ left:11.04%;width:84.64%;height:5.25%'><span style='position:absolute;
+ top:0%;left:3.53%;width:96.46%;height:100.0%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.66%'>–</span></span><span
+ style='font-size:86%'>Uniform resizing&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:61.25%;left:14.04%;width:87.26%;height:5.25%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.43%'>–</span></span><span
+ style='font-size:86%'>Preserve original topology or cut off acute angled </span></span><span
+ style='position:absolute;top:65.5%;left:14.04%;width:81.64%;height:5.25%'><span
+ style='font-size:86%'>corners at resizing distance&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:70.75%;
+ left:11.04%;width:85.39%;height:5.25%'><span style='position:absolute;
+ top:0%;left:3.5%;width:96.49%;height:100.0%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.63%'>–</span></span><span
+ style='font-size:86%'>Snapping options for moving 45-degree edges</span></span></div>
+ </div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s8196" type="#_x0000_t75" style='position:absolute;
+ left:110.375pt;top:416.75pt;width:517.375pt;height:113.25pt'>
+ <v:imagedata src="slide0007_image082.gif" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s8196"
+ src="slide0007_image082.gif" style='position:absolute;top:77.25%;left:15.35%;
+ width:71.91%;height:21.0%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0007_image082.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0010.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0010.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,126 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Many More Features">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="12"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>11</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s12290"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s12291" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:102pt;width:9in;height:264pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s12290" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Many More Features</div>
+ <div v:shape="_x0000_s12291" class=B>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:19.5%;left:5.99%;
+ width:88.2%;height:6.75%'><span style='position:absolute;top:0%;left:4.24%;
+ width:95.75%;height:100.0%'><span style='mso-special-format:bullet;position:
+ absolute;left:-4.43%'>•</span>Rectangle query tree&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:27.25%;left:9.73%;width:84.45%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.43%'>•</span>Maximum enclosed rectangle in </span><span
+ style='position:absolute;top:33.5%;left:9.73%;width:84.45%;height:6.75%'>Manhattan
+ polygon&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:41.25%;
+ left:5.99%;width:88.2%;height:6.75%'><span style='position:absolute;
+ top:0%;left:4.24%;width:95.75%;height:100.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.43%'>•</span>Connectivity Extraction&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:49.25%;
+ left:5.99%;width:88.2%;height:6.75%'><span style='position:absolute;
+ top:0%;left:4.24%;width:95.75%;height:100.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.43%'>•</span>Property Merge/Map Overlay&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:56.99%;
+ left:5.99%;width:88.2%;height:6.75%'><span style='position:absolute;
+ top:0%;left:4.24%;width:95.75%;height:100.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.43%'>•</span>Etc.</span></div>
+ </div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s12292" type="#_x0000_t75" style='position:absolute;
+ left:13.375pt;top:354.75pt;width:706.625pt;height:185.25pt'>
+ <v:imagedata src="slide0010_image083.gif" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s12292"
+ src="slide0010_image083.gif" style='position:absolute;top:65.75%;left:1.87%;
+ width:98.12%;height:34.25%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0010_image083.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,430 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: Small Arbitrary-angle Input Benchmark Comparison">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<!--[if gte IE 5]>
+<object id=MSOANIM classid="CLSID:A4639D2F-774E-11D3-A490-00C04F6843FB"></object>
+<object id=MSOTIME classid="CLSID:A4639D29-774E-11D3-A490-00C04F6843FB"></object>
+<![endif]-->
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<style>
+<!--
+oa\:* { BEHAVIOR: url(#MSOANIM#ANIM) url(#MSOTIME#TIME) }
+oa\:par,oa\:seq,oa\:iterate { BEHAVIOR:url(#MSOTIME) }
+oa\:video,oa\:audio {BEHAVIOR:url(#MSOTIME) url(#MSOTIME#MEDIA) }
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><script><!--
+g_animItemsToHide=new Array("_x0000_s13321_AllText","_x0000_s13321","_x0000_s13320","_x0000_s13318_AllText","_x0000_s13318","_x0000_s13317_AllText","_x0000_s13317","_x0000_s13316");
+
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="13"/>
+ <o:rules v:ext="edit">
+ <o:r id="V:Rule2" type="callout" idref="#_x0000_s13317"/>
+ <o:r id="V:Rule3" type="callout" idref="#_x0000_s13318"/>
+ <o:r id="V:Rule4" type="callout" idref="#_x0000_s13321"/>
+ </o:rules>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()" oa:clockstart="onstart">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>12</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s13319" type="#_x0000_t75" style='position:absolute;
+ left:132.25pt;top:94.5pt;width:443.25pt;height:355.5pt'>
+ <v:imagedata src="slide0011_image084.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s13319"
+ src="slide0011_image085.jpg" style='position:absolute;top:17.5%;left:18.35%;
+ width:61.61%;height:65.75%'><![endif]><p:shaperange
+ href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s13314" type="#_x0000_m1026"
+ style='position:absolute;left:21.25pt;top:20pt;width:682pt;height:70pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape>
+ <div v:shape="_x0000_s13314" class=T><span style='position:absolute;
+ top:3.5%;left:3.93%;width:92.88%;height:6.75%'><span style='font-size:73%'>Small
+ Arbitrary-angle Input Benchmark </span></span><span style='position:absolute;
+ top:10.5%;left:3.93%;width:92.88%;height:6.75%'><span style='font-size:73%'>Comparison</span></span></div>
+ <v:shape id="_x0000_s13316" type="#_x0000_t75" style='position:absolute;
+ left:120pt;top:102pt;width:462pt;height:323.25pt'>
+ <v:imagedata src="slide0011_image086.png" o:title=""/>
+ <p:animation number="3" delay="0" type="object" effect="checker"
+ direction="horizontal" flag="17412"/></v:shape><![if !vml]><img border=0
+ v:shapes="_x0000_s13316" src="slide0011_image087.jpg" style='position:absolute;
+ top:19.0%;left:16.66%;width:64.23%;height:59.75%'><![endif]><v:shapetype id="_x0000_t63"
+ coordsize="21600,21600" o:spt="63" adj="1350,25920" path="wr,,21600,21600_at_15@16_at_17@18l_at_21@22xe">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="val #0"/>
+ <v:f eqn="val #1"/>
+ <v:f eqn="sum 10800 0 #0"/>
+ <v:f eqn="sum 10800 0 #1"/>
+ <v:f eqn="atan2 @2 @3"/>
+ <v:f eqn="sumangle @4 11 0"/>
+ <v:f eqn="sumangle @4 0 11"/>
+ <v:f eqn="cos 10800 @4"/>
+ <v:f eqn="sin 10800 @4"/>
+ <v:f eqn="cos 10800 @5"/>
+ <v:f eqn="sin 10800 @5"/>
+ <v:f eqn="cos 10800 @6"/>
+ <v:f eqn="sin 10800 @6"/>
+ <v:f eqn="sum 10800 0 @7"/>
+ <v:f eqn="sum 10800 0 @8"/>
+ <v:f eqn="sum 10800 0 @9"/>
+ <v:f eqn="sum 10800 0 @10"/>
+ <v:f eqn="sum 10800 0 @11"/>
+ <v:f eqn="sum 10800 0 @12"/>
+ <v:f eqn="mod @2 @3 0"/>
+ <v:f eqn="sum @19 0 10800"/>
+ <v:f eqn="if @20 #0 @13"/>
+ <v:f eqn="if @20 #1 @14"/>
+ </v:formulas>
+ <v:path o:connecttype="custom" o:connectlocs="10800,0;3163,3163;0,10800;3163,18437;10800,21600;18437,18437;21600,10800;18437,3163;@21,@22"
+ textboxrect="3163,3163,18437,18437"/>
+ <v:handles>
+ <v:h position="#0,#1"/>
+ </v:handles>
+ </v:shapetype><v:shape id="_x0000_s13317" type="#_x0000_t63" style='position:absolute;
+ left:555.125pt;top:167.75pt;width:164.875pt;height:1in' adj="2424,26175"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="4" delay="0" type="object" effect="zoom" direction="out"
+ flag="17408"/></v:shape><![if !vml]><img border=0 v:shapes="_x0000_s13317"
+ src="slide0011_image088.gif" style='position:absolute;top:31.0%;left:76.96%;
+ width:23.4%;height:16.75%'><![endif]>
+ <div id="_x0000_s13317_AllText" v:shape="_x0000_s13317" class=O
+ style='position:absolute;top:33.75%;left:80.33%;width:16.66%;height:8.0%;
+ white-space:nowrap'>
+ <div style='text-align:center;position:absolute;top:0%;left:0%;width:100.0%;
+ height:50.0%'>Polyboolean&#13;</div>
+ <div style='text-align:center;position:absolute;top:50.0%;left:5.61%;
+ width:88.76%;height:50.0%'>Fails</div>
+ </div>
+ <v:shape id="_x0000_s13318" type="#_x0000_t63" style='position:absolute;
+ left:555.125pt;top:167.125pt;width:164.875pt;height:1in' adj="4471,-20775"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="6" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:shape><![if !vml]><img border=0 v:shapes="_x0000_s13318"
+ src="slide0011_image089.gif" style='position:absolute;top:17.75%;left:76.96%;
+ width:23.4%;height:27.0%'><![endif]>
+ <div id="_x0000_s13318_AllText" v:shape="_x0000_s13318" class=O
+ style='position:absolute;top:33.75%;left:81.27%;width:14.79%;height:8.0%;
+ white-space:nowrap'>
+ <div style='text-align:center;position:absolute;top:0%;left:0%;width:100.0%;
+ height:50.0%'>CGAL&#13;</div>
+ <div style='text-align:center;position:absolute;top:50.0%;left:0%;width:100.0%;
+ height:50.0%'>Fails</div>
+ </div>
+ <v:shape id="_x0000_s13320" type="#_x0000_t75" style='position:absolute;
+ left:130.625pt;top:93.375pt;width:442.5pt;height:353.25pt'>
+ <v:imagedata src="slide0011_image090.png" o:title=""/>
+ <p:animation number="9" delay="0" type="object" effect="cut"
+ direction="noBlack" flag="17412"/></v:shape><![if !vml]><img border=0
+ v:shapes="_x0000_s13320" src="slide0011_image091.jpg" style='position:absolute;
+ top:17.25%;left:18.16%;width:61.42%;height:65.5%'><![endif]><v:shape id="_x0000_s13321"
+ type="#_x0000_t63" style='position:absolute;left:312.5pt;top:111.375pt;
+ width:208.625pt;height:138.875pt' adj="1372,27083" fillcolor="white [0]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="10" delay="0" type="object" effect="zoom" direction="out"
+ flag="17408"/></v:shape><![if !vml]><img border=0 v:shapes="_x0000_s13321"
+ src="slide0011_image092.gif" style='position:absolute;top:20.5%;left:43.25%;
+ width:29.4%;height:32.75%'><![endif]>
+ <div id="_x0000_s13321_AllText" v:shape="_x0000_s13321" class=O
+ style='position:absolute;top:25.25%;left:48.31%;width:19.1%;height:20.0%;
+ white-space:nowrap'>
+ <div style='text-align:center;position:absolute;top:0%;left:0%;width:100.0%;
+ height:20.0%'>Polyboolean&#13;</div>
+ <div style='text-align:center'><span style='position:absolute;top:20.0%;
+ left:0%;width:100.0%;height:20.0%'>can’t find the </span><span
+ style='position:absolute;top:40.0%;left:0%;width:100.0%;height:20.0%'>polygon
+ that </span><span style='position:absolute;top:60.0%;left:0%;width:100.0%;
+ height:20.0%'>contains this </span><span style='position:absolute;top:80.0%;
+ left:0%;width:100.0%;height:20.0%'>hole…</span></div>
+ </div>
+ <p:shaperange href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s13324"
+ type="#_x0000_m1027" style='position:absolute;left:61.25pt;top:472pt;width:617.625pt;
+ height:54.125pt' o:spt="1" path="m,l,21600r21600,l21600,xe" filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" o:detectmouseclick="f"/>
+ <v:stroke joinstyle="miter" o:forcedash="f"/>
+ <v:shadow color="gray [2]"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" text="f" grouping="t"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s13324" class=B style='position:absolute;top:88.5%;
+ left:9.55%;width:83.89%;height:6.75%'><span style='position:absolute;
+ top:0%;left:4.46%;width:95.53%;height:100.0%'><span class=BB style='position:
+ absolute;left:-4.67%'>•</span>Runtime for intersection operation</span></div>
+</p:slide></div>
+
+<p:animation number="-1767855876"/><oa:par id="TimeNode0" dur="indefinite"
+ restart="never" p:nodeType="timingRoot">
+ <oa:seq id="TimeNode1" dur="indefinite" prev="document.onpptprev"
+ next="document.onpptnext" concurrent="enabled" nextAction="seek"
+ p:nodeType="mainSeq">
+ <oa:par id="TimeNode2" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode3" begin="0.0" fill="hold">
+ <oa:par id="TimeNode4" o:presetID="ppt_53" o:presetClass="exit"
+ o:presetSubType="0x0" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animate id="TimeNode5" dur="0.5" targetElement="_x0000_s13319"
+ attributeName="ppt_w" calcmode="linear" valueType="number"
+ keyTimes="0.0;1.0" values="ppt_w;0.0"/>
+ <oa:animate id="TimeNode6" dur="0.5" targetElement="_x0000_s13319"
+ attributeName="ppt_h" calcmode="linear" valueType="number"
+ keyTimes="0.0;1.0" values="ppt_h;0.0"/>
+ <oa:animateFilter id="TimeNode7" dur="0.5" targetElement="_x0000_s13319"
+ transition="out" filter="fade"/>
+ <oa:set id="TimeNode8" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s13319" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode9" begin="0.5" fill="hold">
+ <oa:par id="TimeNode10" o:presetID="ppt_5" o:presetClass="entrance"
+ o:presetSubType="0xA" begin="0.0" fill="hold" p:nodeType="afterEffect">
+ <oa:set id="TimeNode11" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s13316" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode12" dur="0.5" targetElement="_x0000_s13316"
+ transition="in" filter="checkerboard(across)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode13" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode14" begin="0.0" fill="hold">
+ <oa:par id="TimeNode15" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="clickEffect">
+ <oa:set id="TimeNode16" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s13317" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode17" dur="0.5" targetElement="_x0000_s13317"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode18" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode19" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s13317_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode20" dur="0.5"
+ targetElement="_x0000_s13317_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ <oa:par id="TimeNode21" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode22" begin="0.0" fill="hold">
+ <oa:par id="TimeNode23" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="1"
+ p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode24" dur="0.5" targetElement="_x0000_s13317"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode25" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s13317" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode26" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode27" dur="0.5"
+ targetElement="_x0000_s13317_AllText" transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode28" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s13317_AllText" attributeName="style.visibility"
+ to="hidden"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode29" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode30" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s13318" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode31" dur="0.5" targetElement="_x0000_s13318"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode32" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode33" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s13318_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode34" dur="0.5"
+ targetElement="_x0000_s13318_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ <oa:par id="TimeNode35" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode36" begin="0.0" fill="hold">
+ <oa:par id="TimeNode37" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode38" dur="0.5" targetElement="_x0000_s13316"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode39" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s13316" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode40" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="1"
+ p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode41" dur="0.5" targetElement="_x0000_s13318"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode42" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s13318" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode43" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode44" dur="0.5"
+ targetElement="_x0000_s13318_AllText" transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode45" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s13318_AllText" attributeName="style.visibility"
+ to="hidden"/>
+ </oa:par>
+ <![endif]></oa:par>
+ <oa:par id="TimeNode46" begin="0.5" fill="hold">
+ <oa:par id="TimeNode47" o:presetID="ppt_53" o:presetClass="entrance"
+ o:presetSubType="0x0" begin="0.0" fill="hold" p:nodeType="afterEffect">
+ <oa:set id="TimeNode48" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s13320" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animate id="TimeNode49" dur="0.5" fill="hold"
+ targetElement="_x0000_s13320" attributeName="ppt_w" calcmode="linear"
+ valueType="number" keyTimes="0.0;1.0" values="0.0;#ppt_w"/>
+ <oa:animate id="TimeNode50" dur="0.5" fill="hold"
+ targetElement="_x0000_s13320" attributeName="ppt_h" calcmode="linear"
+ valueType="number" keyTimes="0.0;1.0" values="0.0;#ppt_h"/>
+ <oa:animateFilter id="TimeNode51" dur="0.5" targetElement="_x0000_s13320"
+ transition="in" filter="fade"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode52" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode53" begin="0.0" fill="hold">
+ <oa:par id="TimeNode54" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="clickEffect">
+ <oa:set id="TimeNode55" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s13321" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode56" dur="0.5" targetElement="_x0000_s13321"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode57" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode58" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s13321_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode59" dur="0.5"
+ targetElement="_x0000_s13321_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ <oa:par id="TimeNode60" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode61" begin="0.0" fill="hold">
+ <oa:par id="TimeNode62" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="1"
+ p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode63" dur="0.5" targetElement="_x0000_s13321"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode64" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s13321" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode65" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode66" dur="0.5"
+ targetElement="_x0000_s13321_AllText" transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode67" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s13321_AllText" attributeName="style.visibility"
+ to="hidden"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ </oa:seq>
+</oa:par>
+<![if ppt]>
+<oa:buildParagraph targetElement="_x0000_s13317" groupID="0" build="asAWhole"
+ buildLevel="1" alsoAnimate="background" reverse="false" buildAdvance="onclick"
+ userSetAnimBgd="false"/><oa:buildParagraph targetElement="_x0000_s13317"
+ groupID="1" build="asAWhole" buildLevel="1" alsoAnimate="background"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s13318" groupID="0" build="asAWhole" buildLevel="1"
+ alsoAnimate="background" reverse="false" buildAdvance="onclick"
+ userSetAnimBgd="false"/><oa:buildParagraph targetElement="_x0000_s13318"
+ groupID="1" build="asAWhole" buildLevel="1" alsoAnimate="background"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s13321" groupID="0" build="asAWhole" buildLevel="1"
+ alsoAnimate="background" reverse="false" buildAdvance="onclick"
+ userSetAnimBgd="false"/><oa:buildParagraph targetElement="_x0000_s13321"
+ groupID="1" build="asAWhole" buildLevel="1" alsoAnimate="background"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/>
+<![endif]>
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image084.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image085.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image086.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image087.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image088.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image089.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image090.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image091.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0011_image092.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,365 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: Large Scale Arbitrary-angle Performance Comparison">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<!--[if gte IE 5]>
+<object id=MSOANIM classid="CLSID:A4639D2F-774E-11D3-A490-00C04F6843FB"></object>
+<object id=MSOTIME classid="CLSID:A4639D29-774E-11D3-A490-00C04F6843FB"></object>
+<![endif]-->
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<style>
+<!--
+oa\:* { BEHAVIOR: url(#MSOANIM#ANIM) url(#MSOTIME#TIME) }
+oa\:par,oa\:seq,oa\:iterate { BEHAVIOR:url(#MSOTIME) }
+oa\:video,oa\:audio {BEHAVIOR:url(#MSOTIME) url(#MSOTIME#MEDIA) }
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><script><!--
+g_animItemsToHide=new Array("_x0000_s14346","_x0000_s14339_159_250","_x0000_s14345","_x0000_s14339_119_159","_x0000_s14344","_x0000_s14343","_x0000_s14339_62_119","_x0000_s14342","_x0000_s14341","_x0000_s14339_0_62");
+
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="14"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()" oa:clockstart="onstart">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>13</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s14338"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape>
+ <div v:shape="_x0000_s14338" class=T><span style='position:absolute;
+ top:4.0%;left:5.99%;width:88.2%;height:8.5%'><span style='font-size:91%'>Large
+ Scale Arbitrary-angle </span></span><span style='position:absolute;top:12.75%;
+ left:5.99%;width:88.2%;height:8.5%'><span style='font-size:91%'>Performance
+ Comparison</span></span></div>
+ <p:shaperange href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s14339"
+ type="#_x0000_m1027" style='position:absolute;left:36pt;top:126pt;width:306.375pt;
+ height:414pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/><p:animation number="2" delay="0"
+ type="object" effect="zoom" direction="out" flag="16384"/></v:shape>
+ <div v:shape="_x0000_s14339" class=B style='position:absolute;top:23.75%;
+ left:5.99%;width:46.62%;height:61.0%'>
+ <div id="_x0000_s14339_0_62" style='mso-line-spacing:"90 20 0";position:absolute;
+ top:0%;left:0%;width:91.96%;height:24.18%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:8.73%;width:86.02%;height:35.59%'><span
+ style='font-size:75%'><span style='mso-special-format:bullet;position:absolute;
+ left:-10.15%'>•</span></span><span style='font-size:75%'>One to two orders of </span></span><span
+ style='position:absolute;top:33.89%;left:8.73%;width:91.26%;height:35.59%'><span
+ style='font-size:75%'>magnitude larger than </span></span><span
+ style='position:absolute;top:66.1%;left:8.73%;width:86.02%;height:35.59%'><span
+ style='font-size:75%'>previous benchmark&#13;</span></span></div>
+ <div id="_x0000_s14339_62_119" style='mso-line-spacing:"90 20 0";position:
+ absolute;top:25.4%;left:0%;width:100.0%;height:24.18%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:8.03%;width:91.96%;height:35.59%'><span
+ style='font-size:75%'><span style='mso-special-format:bullet;position:absolute;
+ left:-8.73%'>•</span></span><span style='font-size:75%'>Though fastest for
+ small </span></span><span style='position:absolute;top:32.2%;left:8.03%;
+ width:81.92%;height:35.59%'><span style='font-size:75%'>inputs, GPC does not </span></span><span
+ style='position:absolute;top:64.4%;left:8.03%;width:79.11%;height:35.59%'><span
+ style='font-size:75%'>scale well&#13;</span></span></div>
+ <div id="_x0000_s14339_119_159" style='mso-line-spacing:"90 20 0";position:
+ absolute;top:50.81%;left:0%;width:87.55%;height:16.39%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:9.17%;width:90.36%;height:52.5%'><span
+ style='font-size:75%'><span style='mso-special-format:bullet;position:absolute;
+ left:-10.15%'>•</span></span><span style='font-size:75%'>gtlb excludes line </span></span><span
+ style='position:absolute;top:47.5%;left:9.17%;width:90.82%;height:52.5%'><span
+ style='font-size:75%'>segment intersection&#13;</span></span></div>
+ <div id="_x0000_s14339_159_250" style='mso-line-spacing:"90 20 0";position:
+ absolute;top:68.03%;left:0%;width:100.0%;height:31.96%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:8.03%;width:91.96%;height:26.92%'><span
+ style='font-size:75%'><span style='mso-special-format:bullet;position:absolute;
+ left:-8.73%'>•</span></span><span style='font-size:75%'>Core Boolean is n log
+ n, </span></span><span style='position:absolute;top:25.64%;left:8.03%;
+ width:87.55%;height:26.92%'><span style='font-size:75%'>Intel
+ micro-architecture </span></span><span style='position:absolute;top:50.0%;
+ left:8.03%;width:88.35%;height:26.92%'><span style='font-size:75%'>accelerates
+ processing </span></span><span style='position:absolute;top:74.35%;left:8.03%;
+ width:79.11%;height:26.92%'><span style='font-size:75%'>of large vectorss</span></span></div>
+ </div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s14340" type="#_x0000_t75" style='position:absolute;
+ left:336pt;top:114pt;width:345.25pt;height:414pt'>
+ <v:imagedata src="slide0012_image093.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s14340"
+ src="slide0012_image094.jpg" style='position:absolute;top:21.0%;left:46.62%;
+ width:47.94%;height:76.75%'><![endif]><v:line id="_x0000_s14341" style='position:absolute;
+ flip:y' from="360.125pt,502.125pt" to="405.375pt,502.375pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="3" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s14341"
+ src="slide0012_image095.gif" style='position:absolute;top:92.75%;left:50.0%;
+ width:6.74%;height:.75%'><![endif]><v:line id="_x0000_s14342" style='position:absolute;
+ flip:y' from="614.75pt,500.75pt" to="660pt,501pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="4" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s14342"
+ src="slide0012_image096.gif" style='position:absolute;top:92.5%;left:85.2%;
+ width:6.74%;height:.75%'><![endif]><v:line id="_x0000_s14343" style='position:absolute;
+ flip:y' from="391.375pt,148.125pt" to="664.5pt,397.125pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="8" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s14343"
+ src="slide0012_image097.gif" style='position:absolute;top:27.25%;left:54.3%;
+ width:38.38%;height:46.75%'><![endif]><v:oval id="_x0000_s14344" style='position:absolute;
+ left:645.125pt;top:212.75pt;width:37.125pt;height:37.75pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="9" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s14344"
+ src="slide0012_image098.gif" style='position:absolute;top:39.25%;left:89.51%;
+ width:5.61%;height:7.75%'><![endif]><v:line id="_x0000_s14345" style='position:absolute;
+ flip:y' from="390.75pt,376.125pt" to="654.25pt,461.75pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="13" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s14345"
+ src="slide0012_image099.gif" style='position:absolute;top:69.5%;left:54.11%;
+ width:37.07%;height:16.5%'><![endif]><v:oval id="_x0000_s14346" style='position:absolute;
+ left:620.75pt;top:423.75pt;width:37.125pt;height:37.75pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="16" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s14346"
+ src="slide0012_image100.gif" style='position:absolute;top:78.25%;left:86.14%;
+ width:5.61%;height:7.75%'><![endif]></p:slide></div>
+
+<p:animation number="-1753908804"/><oa:par id="TimeNode0" dur="indefinite"
+ restart="never" p:nodeType="timingRoot">
+ <oa:seq id="TimeNode1" dur="indefinite" prev="document.onpptprev"
+ next="document.onpptnext" concurrent="enabled" nextAction="seek"
+ p:nodeType="mainSeq">
+ <oa:par id="TimeNode2" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode3" begin="0.0" fill="hold">
+ <oa:par id="TimeNode4" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode5" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s14339_0_62" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode6" dur="0.5"
+ targetElement="_x0000_s14339_0_62" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode7" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode8" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s14341" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode9" dur="0.5" targetElement="_x0000_s14341"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode10" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode11" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s14342" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode12" dur="0.5" targetElement="_x0000_s14342"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode13" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode14" begin="0.0" fill="hold">
+ <oa:par id="TimeNode15" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode16" dur="0.5" targetElement="_x0000_s14342"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode17" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s14342" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode18" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode19" dur="0.5" targetElement="_x0000_s14341"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode20" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s14341" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode21" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode22" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s14339_62_119" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode23" dur="0.5"
+ targetElement="_x0000_s14339_62_119" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode24" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode25" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s14343" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode26" dur="0.5" targetElement="_x0000_s14343"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode27" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode28" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s14344" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode29" dur="0.5" targetElement="_x0000_s14344"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode30" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode31" begin="0.0" fill="hold">
+ <oa:par id="TimeNode32" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode33" dur="0.5" targetElement="_x0000_s14344"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode34" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s14344" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode35" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode36" dur="0.5" targetElement="_x0000_s14343"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode37" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s14343" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode38" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode39" begin="0.0" fill="hold">
+ <oa:par id="TimeNode40" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode41" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s14339_119_159" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode42" dur="0.5"
+ targetElement="_x0000_s14339_119_159" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode43" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode44" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s14345" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode45" dur="0.5" targetElement="_x0000_s14345"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode46" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode47" begin="0.0" fill="hold">
+ <oa:par id="TimeNode48" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode49" dur="0.5" targetElement="_x0000_s14345"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode50" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s14345" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode51" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode52" begin="0.0" fill="hold">
+ <oa:par id="TimeNode53" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode54" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s14339_159_250" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode55" dur="0.5"
+ targetElement="_x0000_s14339_159_250" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode56" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode57" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s14346" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode58" dur="0.5" targetElement="_x0000_s14346"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode59" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode60" begin="0.0" fill="hold">
+ <oa:par id="TimeNode61" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode62" dur="0.5" targetElement="_x0000_s14346"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode63" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s14346" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ </oa:seq>
+</oa:par>
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image093.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image094.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image095.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image096.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image097.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image098.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image099.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0012_image100.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,644 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Manhattan Benchmarking">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<!--[if gte IE 5]>
+<object id=MSOANIM classid="CLSID:A4639D2F-774E-11D3-A490-00C04F6843FB"></object>
+<object id=MSOTIME classid="CLSID:A4639D29-774E-11D3-A490-00C04F6843FB"></object>
+<![endif]-->
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<style>
+<!--
+oa\:* { BEHAVIOR: url(#MSOANIM#ANIM) url(#MSOTIME#TIME) }
+oa\:par,oa\:seq,oa\:iterate { BEHAVIOR:url(#MSOTIME) }
+oa\:video,oa\:audio {BEHAVIOR:url(#MSOTIME) url(#MSOTIME#MEDIA) }
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><script><!--
+g_animItemsToHide=new Array("_x0000_s15379","_x0000_s15380","_x0000_s15378","_x0000_s15377","_x0000_s15363_298_343","_x0000_s15375","_x0000_s15376","_x0000_s15374","_x0000_s15363_250_298","_x0000_s15372","_x0000_s15373","_x0000_s15371","_x0000_s15363_166_250","_x0000_s15370","_x0000_s15369","_x0000_s15363_119_166","_x0000_s15368","_x0000_s15367","_x0000_s15366","_x0000_s15363_86_119","_x0000_s15365","_x0000_s15363_0_86");
+
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="15"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()" oa:clockstart="onstart">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>14</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s15362"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape>
+ <div v:shape="_x0000_s15362" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Manhattan Benchmarking</div>
+ <p:shaperange href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s15363"
+ type="#_x0000_m1027" style='position:absolute;left:0;top:126pt;width:270pt;
+ height:396pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/><p:animation number="2" delay="0"
+ type="object" effect="zoom" direction="out" flag="16384"/></v:shape>
+ <div v:shape="_x0000_s15363" class=B style='position:absolute;top:23.5%;
+ left:.93%;width:40.82%;height:71.25%'>
+ <div id="_x0000_s15363_0_86" style='mso-line-spacing:"80 20 0";position:absolute;
+ top:0%;left:0%;width:96.78%;height:21.05%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:9.47%;width:90.52%;height:30.0%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-10.47%'>•</span></span><span style='font-size:63%'>100X performance
+ delta </span></span><span style='position:absolute;top:23.33%;left:9.47%;
+ width:87.67%;height:30.0%'><span style='font-size:63%'>between optimal gtl 90-</span></span><span
+ style='position:absolute;top:48.33%;left:9.47%;width:80.56%;height:30.0%'><span
+ style='font-size:63%'>degree algorithm and </span></span><span
+ style='position:absolute;top:71.66%;left:9.47%;width:80.56%;height:30.0%'><span
+ style='font-size:63%'>general algorithms&#13;</span></span></div>
+ <div id="_x0000_s15363_86_119" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:21.4%;left:0%;width:98.16%;height:11.22%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:9.34%;width:90.65%;height:56.25%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-10.3%'>•</span></span><span style='font-size:63%'>gtl 45-degree Boolean
+ is </span></span><span style='position:absolute;top:43.75%;left:9.34%;
+ width:79.43%;height:56.25%'><span style='font-size:63%'>optimal&#13;</span></span></div>
+ <div id="_x0000_s15363_119_166" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:32.63%;left:0%;width:97.24%;height:11.22%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:9.43%;width:80.18%;height:56.25%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-11.76%'>•</span></span><span style='font-size:63%'>Core arbitrary angle </span></span><span
+ style='position:absolute;top:43.75%;left:9.43%;width:90.56%;height:56.25%'><span
+ style='font-size:63%'>Boolean (gtlb) is optimal&#13;</span></span></div>
+ <div id="_x0000_s15363_166_250" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:43.85%;left:0%;width:88.99%;height:21.05%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:10.3%;width:87.62%;height:30.0%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-11.76%'>•</span></span><span style='font-size:63%'>gtl arbitrary angle </span></span><span
+ style='position:absolute;top:23.33%;left:10.3%;width:87.62%;height:30.0%'><span
+ style='font-size:63%'>Boolean is slightly </span></span><span
+ style='position:absolute;top:46.66%;left:10.3%;width:89.69%;height:30.0%'><span
+ style='font-size:63%'>suboptimal due to line </span></span><span
+ style='position:absolute;top:71.66%;left:10.3%;width:87.62%;height:30.0%'><span
+ style='font-size:63%'>segment intersection&#13;</span></span></div>
+ <div id="_x0000_s15363_250_298" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:64.91%;left:0%;width:100.0%;height:11.22%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:9.17%;width:90.82%;height:56.25%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-10.1%'>•</span></span><span style='font-size:63%'>CGAL is optimal, but
+ has </span></span><span style='position:absolute;top:46.87%;left:9.17%;
+ width:78.44%;height:56.25%'><span style='font-size:63%'>a high constant
+ factor&#13;</span></span></div>
+ <div id="_x0000_s15363_298_343" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:76.14%;left:0%;width:97.24%;height:11.22%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:9.43%;width:84.43%;height:56.25%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-11.17%'>•</span></span><span style='font-size:63%'>GPC and PolyBoolean </span></span><span
+ style='position:absolute;top:46.87%;left:9.43%;width:90.56%;height:56.25%'><span
+ style='font-size:63%'>both scale sub-optimally&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:87.36%;
+ left:0%;width:87.15%;height:6.31%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:63%;display:none'>&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:93.68%;
+ left:0%;width:87.15%;height:6.31%'><span style='position:absolute;top:0%;
+ left:10.52%;width:89.47%;height:100.0%'><span style='font-size:63%;visibility:
+ hidden'><span style='mso-special-format:bullet;position:absolute;left:-11.76%'>•</span></span><span
+ style='font-size:63%;mso-special-format:lastCR;display:none'>&#13;</span></span></div>
+ </div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s15364" type="#_x0000_t75" style='position:absolute;
+ left:264pt;top:96pt;width:456pt;height:416pt'>
+ <v:imagedata src="slide0013_image101.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s15364"
+ src="slide0013_image102.jpg" style='position:absolute;top:17.75%;left:36.7%;
+ width:63.29%;height:77.0%'><![endif]><v:line id="_x0000_s15365" style='position:absolute;
+ flip:y' from="456.5pt,208.25pt" to="456.5pt,376.375pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:stroke startarrow="open" endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="3" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s15365"
+ src="slide0013_image103.gif" style='position:absolute;top:38.5%;left:62.73%;
+ width:1.87%;height:32.0%'><![endif]><v:line id="_x0000_s15366" style='position:absolute;
+ flip:y' from="507.75pt,327.125pt" to="507.75pt,361.625pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:stroke startarrow="open" endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="6" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s15366"
+ src="slide0013_image104.gif" style='position:absolute;top:60.5%;left:69.85%;
+ width:1.87%;height:7.25%'><![endif]><v:oval id="_x0000_s15367" style='position:absolute;
+ left:677.625pt;top:289.375pt;width:42.375pt;height:41.5pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="7" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s15367"
+ src="slide0013_image105.gif" style='position:absolute;top:53.5%;left:94.0%;
+ width:6.36%;height:8.25%'><![endif]><v:line id="_x0000_s15368" style='position:absolute;
+ flip:y' from="327.5pt,287.125pt" to="635.5pt,375.75pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="8" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s15368"
+ src="slide0013_image106.gif" style='position:absolute;top:53.0%;left:45.31%;
+ width:43.25%;height:17.0%'><![endif]><v:line id="_x0000_s15369" style='position:absolute;
+ flip:y' from="335.125pt,272.375pt" to="622.375pt,339.5pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="13" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s15369"
+ src="slide0013_image107.gif" style='position:absolute;top:50.24%;left:46.44%;
+ width:40.44%;height:13.25%'><![endif]><v:oval id="_x0000_s15370" style='position:absolute;
+ left:668pt;top:236.875pt;width:40.875pt;height:40.625pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="14" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s15370"
+ src="slide0013_image108.gif" style='position:absolute;top:43.75%;left:92.69%;
+ width:6.17%;height:8.25%'><![endif]><v:line id="_x0000_s15371" style='position:absolute;
+ flip:y' from="329.25pt,182.75pt" to="625.5pt,275.75pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="18" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s15371"
+ src="slide0013_image109.gif" style='position:absolute;top:33.75%;left:45.69%;
+ width:41.76%;height:18.0%'><![endif]><v:line id="_x0000_s15372" style='position:absolute;
+ flip:y' from="536pt,210pt" to="536pt,292.75pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:stroke startarrow="open" endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="20" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s15372"
+ src="slide0013_image110.gif" style='position:absolute;top:38.75%;left:73.78%;
+ width:1.87%;height:16.0%'><![endif]><v:oval id="_x0000_s15373" style='position:absolute;
+ left:659.25pt;top:166.5pt;width:40.875pt;height:40.625pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="19" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s15373"
+ src="slide0013_image111.gif" style='position:absolute;top:30.75%;left:91.38%;
+ width:6.17%;height:8.25%'><![endif]><v:line id="_x0000_s15374" style='position:absolute;
+ flip:y' from="331.625pt,162.125pt" to="624.125pt,245.375pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="25" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s15374"
+ src="slide0013_image112.gif" style='position:absolute;top:30.0%;left:45.88%;
+ width:41.19%;height:16.0%'><![endif]><v:line id="_x0000_s15375" style='position:absolute;
+ flip:y' from="508.75pt,195.375pt" to="508.75pt,296.625pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:stroke startarrow="open" endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="27" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s15375"
+ src="slide0013_image113.gif" style='position:absolute;top:36.0%;left:69.85%;
+ width:1.87%;height:19.5%'><![endif]><v:oval id="_x0000_s15376" style='position:absolute;
+ left:668.25pt;top:142.125pt;width:40.875pt;height:40.625pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="26" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s15376"
+ src="slide0013_image114.gif" style='position:absolute;top:26.25%;left:92.69%;
+ width:6.17%;height:8.25%'><![endif]><v:line id="_x0000_s15377" style='position:absolute;
+ flip:y' from="329.625pt,148.875pt" to="625.125pt,286.25pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="32" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s15377"
+ src="slide0013_image115.gif" style='position:absolute;top:27.5%;left:45.69%;
+ width:41.57%;height:26.25%'><![endif]><v:line id="_x0000_s15378" style='position:absolute;
+ flip:y' from="335pt,117.875pt" to="626.875pt,255.25pt" strokecolor="red"
+ strokeweight="1.5pt">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="33" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s15378"
+ src="slide0013_image116.gif" style='position:absolute;top:21.75%;left:46.44%;
+ width:41.01%;height:26.25%'><![endif]><v:oval id="_x0000_s15379" style='position:absolute;
+ left:679.125pt;top:115.5pt;width:40.875pt;height:40.625pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="35" delay="0" type="object" effect="zoom" direction="out"
+ flag="17412"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s15379"
+ src="slide0013_image117.gif" style='position:absolute;top:21.25%;left:94.19%;
+ width:6.17%;height:8.25%'><![endif]><v:oval id="_x0000_s15380" style='position:absolute;
+ left:669.125pt;top:83.5pt;width:40.875pt;height:40.625pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="red"
+ strokeweight="1.25pt">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="34" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s15380"
+ src="slide0013_image118.gif" style='position:absolute;top:15.25%;left:92.88%;
+ width:6.17%;height:8.25%'><![endif]></p:slide></div>
+
+<p:animation number="105923195"/><oa:par id="TimeNode0" dur="indefinite"
+ restart="never" p:nodeType="timingRoot">
+ <oa:seq id="TimeNode1" dur="indefinite" prev="document.onpptprev"
+ next="document.onpptnext" concurrent="enabled" nextAction="seek"
+ p:nodeType="mainSeq">
+ <oa:par id="TimeNode2" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode3" begin="0.0" fill="hold">
+ <oa:par id="TimeNode4" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode5" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15363_0_86" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode6" dur="0.5"
+ targetElement="_x0000_s15363_0_86" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode7" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode8" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15365" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode9" dur="0.5" targetElement="_x0000_s15365"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode10" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode11" begin="0.0" fill="hold">
+ <oa:par id="TimeNode12" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode13" dur="0.5" targetElement="_x0000_s15365"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode14" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15365" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode15" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode16" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15363_86_119" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode17" dur="0.5"
+ targetElement="_x0000_s15363_86_119" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode18" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode19" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15366" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode20" dur="0.5" targetElement="_x0000_s15366"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode21" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode22" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15367" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode23" dur="0.5" targetElement="_x0000_s15367"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode24" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode25" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15368" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode26" dur="0.5" targetElement="_x0000_s15368"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode27" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode28" begin="0.0" fill="hold">
+ <oa:par id="TimeNode29" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode30" dur="0.5" targetElement="_x0000_s15368"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode31" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15368" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode32" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode33" dur="0.5" targetElement="_x0000_s15367"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode34" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15367" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode35" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode36" dur="0.5" targetElement="_x0000_s15366"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode37" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15366" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode38" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode39" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15363_119_166" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode40" dur="0.5"
+ targetElement="_x0000_s15363_119_166" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode41" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode42" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15369" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode43" dur="0.5" targetElement="_x0000_s15369"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode44" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode45" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15370" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode46" dur="0.5" targetElement="_x0000_s15370"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode47" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode48" begin="0.0" fill="hold">
+ <oa:par id="TimeNode49" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode50" dur="0.5" targetElement="_x0000_s15369"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode51" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15369" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode52" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode53" dur="0.5" targetElement="_x0000_s15370"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode54" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15370" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode55" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode56" begin="0.0" fill="hold">
+ <oa:par id="TimeNode57" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode58" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15363_166_250" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode59" dur="0.5"
+ targetElement="_x0000_s15363_166_250" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode60" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode61" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15371" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode62" dur="0.5" targetElement="_x0000_s15371"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode63" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode64" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15373" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode65" dur="0.5" targetElement="_x0000_s15373"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode66" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode67" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15372" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode68" dur="0.5" targetElement="_x0000_s15372"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode69" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode70" begin="0.0" fill="hold">
+ <oa:par id="TimeNode71" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode72" dur="0.5" targetElement="_x0000_s15371"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode73" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15371" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode74" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode75" dur="0.5" targetElement="_x0000_s15373"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode76" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15373" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode77" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode78" dur="0.5" targetElement="_x0000_s15372"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode79" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15372" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode80" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode81" begin="0.0" fill="hold">
+ <oa:par id="TimeNode82" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode83" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15363_250_298" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode84" dur="0.5"
+ targetElement="_x0000_s15363_250_298" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode85" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode86" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15374" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode87" dur="0.5" targetElement="_x0000_s15374"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode88" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode89" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15376" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode90" dur="0.5" targetElement="_x0000_s15376"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode91" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode92" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15375" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode93" dur="0.5" targetElement="_x0000_s15375"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode94" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode95" begin="0.0" fill="hold">
+ <oa:par id="TimeNode96" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode97" dur="0.5" targetElement="_x0000_s15374"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode98" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15374" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode99" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode100" dur="0.5" targetElement="_x0000_s15376"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode101" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15376" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode102" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode103" dur="0.5" targetElement="_x0000_s15375"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode104" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15375" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode105" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode106" begin="0.0" fill="hold">
+ <oa:par id="TimeNode107" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode108" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15363_298_343" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode109" dur="0.5"
+ targetElement="_x0000_s15363_298_343" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode110" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode111" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15377" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode112" dur="0.5" targetElement="_x0000_s15377"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode113" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode114" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15378" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode115" dur="0.5" targetElement="_x0000_s15378"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode116" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode117" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15380" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode118" dur="0.5" targetElement="_x0000_s15380"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode119" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode120" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s15379" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode121" dur="0.5" targetElement="_x0000_s15379"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode122" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode123" begin="0.0" fill="hold">
+ <oa:par id="TimeNode124" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:animateFilter id="TimeNode125" dur="0.5" targetElement="_x0000_s15378"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode126" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15378" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode127" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode128" dur="0.5" targetElement="_x0000_s15380"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode129" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15380" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode130" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode131" dur="0.5" targetElement="_x0000_s15377"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode132" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15377" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ <oa:par id="TimeNode133" o:presetID="ppt_4" o:presetClass="exit"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:animateFilter id="TimeNode134" dur="0.5" targetElement="_x0000_s15379"
+ transition="out" filter="box(in)"/>
+ <oa:set id="TimeNode135" begin="0.499" dur="0.001" fill="hold"
+ targetElement="_x0000_s15379" attributeName="style.visibility" to="hidden"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ </oa:seq>
+</oa:par>
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image101.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image102.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image103.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image104.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image105.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image106.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image107.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image108.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image109.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image110.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image111.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image112.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image113.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image114.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image115.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image116.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image117.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0013_image118.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0014.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0014.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,110 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Benchmarking Conclusions about GTL">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="16"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>15</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s16386"
+ type="#_x0000_m1026" style='position:absolute;left:17.5pt;top:21.625pt;
+ width:702.5pt;height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s16387" type="#_x0000_m1027"
+ style='position:absolute;left:0;top:104.5pt;width:10in;height:425.625pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s16386" class=T style='position:absolute;top:8.5%;
+ left:-5.8%;width:114.23%;height:8.5%'><span style='font-size:91%'>Benchmarking
+ Conclusions about GTL</span></div>
+ <div v:shape="_x0000_s16387" class=B>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:19.75%;
+ left:.93%;width:109.92%;height:6.75%'><span style='position:absolute;
+ top:0%;left:3.4%;width:96.59%;height:100.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.52%'>•</span>GTL arbitrary-angle Booleans is
+ near optimal&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:27.75%;left:4.68%;width:113.29%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.3%'>•</span>Performance of GTL
+ arbitrary-angle Booleans is </span><span style='position:absolute;top:34.0%;
+ left:4.68%;width:94.38%;height:6.75%'>middle-of-road for small inputs&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:41.75%;left:4.68%;width:113.29%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.3%'>•</span>Performance of GTL
+ arbitrary-angle Booleans is </span><span style='position:absolute;top:48.25%;
+ left:4.68%;width:94.38%;height:6.75%'>best in class for large inputs&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:56.0%;left:4.68%;width:107.86%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.47%'>•</span>Performance of GTL could be
+ improved by up </span><span style='position:absolute;top:62.5%;left:4.68%;
+ width:108.23%;height:6.75%'>to 10X with further work on the arbitrary-angle </span><span
+ style='position:absolute;top:68.75%;left:4.68%;width:94.38%;height:6.75%'>Booleans&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:76.5%;left:4.68%;width:107.67%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.47%'>•</span>If you have 45-degree or
+ Manhattan polygons </span><span style='position:absolute;top:83.0%;left:4.68%;
+ width:94.38%;height:6.75%'>gtl provides 50X and 100X performance </span><span
+ style='position:absolute;top:89.5%;left:4.68%;width:94.38%;height:6.75%'>advantage
+ over cgal</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0015.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0015.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,108 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Generic Sweep-line Algorithm">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="17"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>18</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s17410"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s17411" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:102pt;width:635.625pt;height:380.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s17410" class=T style='position:absolute;top:8.0%;
+ left:1.49%;width:97.19%;height:9.25%'>Generic Sweep-line Algorithm</div>
+ <div v:shape="_x0000_s17411" class=B>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:19.5%;left:9.73%;width:82.77%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.52%'>•</span>Sweep-line algorithms for
+ polygon </span><span style='position:absolute;top:25.75%;left:9.73%;
+ width:90.44%;height:6.75%'>clipping is a tradition that goes back to </span><span
+ style='position:absolute;top:32.25%;left:9.73%;width:82.77%;height:6.75%'>1979&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:40.0%;left:9.73%;width:96.06%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.89%'>•</span>Sweep-line is the best known
+ method for </span><span style='position:absolute;top:46.25%;left:9.73%;
+ width:82.77%;height:6.75%'>line segment intersection&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:54.25%;left:9.73%;width:97.0%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.86%'>•</span>GTL implements different sweep
+ lines for </span><span style='position:absolute;top:60.5%;left:9.73%;
+ width:94.94%;height:6.75%'>Manhattan, 45-degree and general case&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:68.25%;left:9.73%;width:82.77%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.52%'>•</span>GTL Booleans sweep-lines are </span><span
+ style='position:absolute;top:74.75%;left:9.73%;width:92.88%;height:6.75%'>parameterized
+ to allow them to perform </span><span style='position:absolute;top:81.0%;
+ left:9.73%;width:82.77%;height:6.75%'>multiple operations&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:89.0%;left:5.99%;
+ width:86.51%;height:6.75%'><span style='position:absolute;top:0%;left:4.32%;
+ width:95.67%;height:100.0%'><span style='visibility:hidden'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.52%'>•</span></span><span
+ style='mso-special-format:lastCR;display:none'>&#13;</span></span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0016.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0016.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,132 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: Observations on GPC, CGAL and PolyBoolean">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="18"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>16</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s18434"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s18435" type="#_x0000_m1027"
+ style='position:absolute;left:19.625pt;top:114.125pt;width:684pt;height:417pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s18434" class=T><span style='position:absolute;
+ top:4.0%;left:.18%;width:99.81%;height:8.5%'><span style='font-size:91%'>Observations
+ on GPC, CGAL and </span></span><span style='position:absolute;top:12.75%;
+ left:5.99%;width:88.2%;height:8.5%'><span style='font-size:91%'>PolyBoolean</span></span></div>
+ <div v:shape="_x0000_s18435" class=B>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:21.75%;
+ left:3.74%;width:95.5%;height:5.25%'><span style='position:absolute;
+ top:0%;left:3.92%;width:96.07%;height:100.0%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.08%'>•</span></span><span
+ style='font-size:75%'>We found at least two different bugs in PolyBoolean&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:27.5%;left:3.74%;
+ width:93.07%;height:5.25%'><span style='position:absolute;top:0%;left:4.02%;
+ width:95.97%;height:100.0%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.19%'>•</span></span><span
+ style='font-size:75%'>We found one bug in CGAL&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:33.25%;left:7.49%;width:97.94%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.82%'>•</span></span><span
+ style='font-size:75%'>GPC and PolyBoolean have very difficult to use C-style </span></span><span
+ style='position:absolute;top:38.25%;left:7.49%;width:89.32%;height:5.25%'><span
+ style='font-size:75%'>APIs&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:44.0%;left:7.49%;width:102.62%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.64%'>•</span></span><span
+ style='font-size:75%'>GPC and PolyBoolean cannot merge multiple overlapping </span></span><span
+ style='position:absolute;top:48.75%;left:7.49%;width:89.32%;height:5.25%'><span
+ style='font-size:75%'>polygons in one step&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:54.75%;left:7.49%;width:104.3%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.59%'>•</span></span><span
+ style='font-size:75%'>GPC and PolyBoolean both have O(n</span><span
+ style='font-size:50%;position:relative;top:-.45em;mso-text-raise:30%'>1.5</span><span
+ style='font-size:75%'>log n) line segment </span></span><span
+ style='position:absolute;top:59.5%;left:7.49%;width:104.49%;height:5.25%'><span
+ style='font-size:75%'>intersection algorithms (sort all edges that intersect
+ sweep-</span></span><span style='position:absolute;top:64.25%;left:7.49%;
+ width:89.32%;height:5.25%'><span style='font-size:75%'>line at every x)&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:70.0%;left:7.49%;width:104.49%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.58%'>•</span></span><span
+ style='font-size:75%'>PolyBoolean has O(n * m * k) algorithm to determine
+ which </span></span><span style='position:absolute;top:75.0%;left:7.49%;
+ width:106.36%;height:5.25%'><span style='font-size:75%'>polygons contain which
+ holes (n polygons, m holes, k points </span></span><span style='position:absolute;
+ top:79.75%;left:7.49%;width:89.32%;height:5.25%'><span style='font-size:75%'>per
+ polygon), which is O(n^2) in the worst case&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:85.5%;left:7.49%;width:106.17%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.52%'>•</span></span><span
+ style='font-size:75%'>CGAL requires that overlapping polygons be merged before
+ </span></span><span style='position:absolute;top:90.25%;left:7.49%;width:89.32%;
+ height:5.25%'><span style='font-size:75%'>being an input to a Boolean, but can
+ do that itself</span></span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0018.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0018.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,118 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Observations About Preconditions">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="21"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>17</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s21506"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s21507" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:9in;height:377.25pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s21506" class=T style='position:absolute;top:8.5%;
+ left:-.37%;width:100.93%;height:8.5%'><span style='font-size:91%'>Observations
+ About Preconditions</span></div>
+ <div v:shape="_x0000_s21507" class=B>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:23.75%;left:9.73%;width:98.12%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.81%'>•</span></span><span
+ style='font-size:75%'>CGAL throws an “Precondition Violated” exception if an </span></span><span
+ style='position:absolute;top:28.74%;left:9.73%;width:91.01%;height:5.25%'><span
+ style='font-size:75%'>input polygon is self intersecting/overlapping or has </span></span><span
+ style='position:absolute;top:33.5%;left:9.73%;width:84.45%;height:5.25%'><span
+ style='font-size:75%'>“closed” semantic at last vertex&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:39.25%;left:9.73%;width:97.37%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.84%'>•</span></span><span
+ style='font-size:75%'>PolyBoolean returns a “bad input polygon” error code if </span></span><span
+ style='position:absolute;top:44.0%;left:9.73%;width:100.74%;height:5.25%'><span
+ style='font-size:75%'>an input polygon is self intersecting/overlapping has
+ zero </span></span><span style='position:absolute;top:48.75%;left:9.73%;
+ width:84.45%;height:5.25%'><span style='font-size:75%'>area or is a hole with
+ no enclosing polygon&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:54.75%;left:9.73%;width:100.0%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.74%'>•</span></span><span
+ style='font-size:75%'>Both PolyBoolean and CGAL inform the user the input is </span></span><span
+ style='position:absolute;top:59.5%;left:9.73%;width:98.12%;height:5.25%'><span
+ style='font-size:75%'>bad when a bug in their algorithms leads to a fatal
+ error&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:65.25%;left:9.73%;width:99.06%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.78%'>•</span></span><span
+ style='font-size:75%'>GPC produces garbage output when input polygons are </span></span><span
+ style='position:absolute;top:70.25%;left:9.73%;width:84.45%;height:5.25%'><span
+ style='font-size:75%'>self intersecting/overlapping&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:76.0%;left:9.73%;width:101.12%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.7%'>•</span></span><span
+ style='font-size:75%'>GTL has no preconditions and produces correct output in </span></span><span
+ style='position:absolute;top:80.75%;left:9.73%;width:84.45%;height:5.25%'><span
+ style='font-size:75%'>all cases</span></span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,126 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Better Booleans through Calculus">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="22"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>19</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s22530"
+ type="#_x0000_m1026" style='position:absolute;left:23.5pt;top:0;width:675.375pt;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s22531" type="#_x0000_m1027"
+ style='position:absolute;left:12.25pt;top:74pt;width:707.75pt;height:444.5pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s22530" class=T style='position:absolute;top:4.0%;
+ left:-4.49%;width:109.55%;height:9.25%'>Better Booleans through Calculus</div>
+ <div v:shape="_x0000_s22531" class=B><span style='position:absolute;
+ top:14.75%;left:6.36%;width:109.92%;height:6.75%'><span class=BB
+ style='position:absolute;left:-3.4%'>•</span>We use the same algorithm for
+ Manhattan, 45-</span><span style='position:absolute;top:22.0%;left:6.36%;
+ width:92.69%;height:6.75%'>degree and general polygon Booleans&#13;</span>
+ <div style='position:absolute;top:30.5%;left:2.62%;width:96.44%;height:6.75%'><span
+ style='position:absolute;top:0%;left:3.88%;width:96.11%;height:100.0%'><span
+ style='visibility:hidden'><span class=BB style='position:absolute;left:-4.04%'>•</span></span>&#13;</span></div>
+ <div style='position:absolute;top:39.0%;left:2.62%;width:96.44%;height:6.75%'><span
+ style='position:absolute;top:0%;left:3.88%;width:96.11%;height:100.0%'><span
+ style='visibility:hidden'><span class=BB style='position:absolute;left:-4.04%'>•</span></span>&#13;</span></div>
+ <div style='position:absolute;top:47.5%;left:2.62%;width:96.44%;height:6.75%'><span
+ style='position:absolute;top:0%;left:3.88%;width:96.11%;height:100.0%'><span
+ style='visibility:hidden'><span class=BB style='position:absolute;left:-4.04%'>•</span></span>&#13;</span></div>
+ <span style='position:absolute;top:56.0%;left:6.36%;width:107.3%;height:6.75%'><span
+ class=BB style='position:absolute;left:-3.49%'>•</span>We will explain how it
+ works in the Manhattan </span><span style='position:absolute;top:63.0%;
+ left:6.36%;width:92.69%;height:6.75%'>case first, then how we generalize it</span></div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s22532" type="#_x0000_t75" style='position:absolute;
+ left:143.25pt;top:168.5pt;width:402.375pt;height:128.375pt'>
+ <v:imagedata src="slide0019_image119.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s22532"
+ src="slide0019_image120.jpg" style='position:absolute;top:31.25%;left:19.85%;
+ width:55.8%;height:23.75%'><![endif]><v:shape id="_x0000_s22533" type="#_x0000_t75"
+ style='position:absolute;left:138.875pt;top:381.5pt;width:394.375pt;height:158.5pt'>
+ <v:imagedata src="slide0019_image121.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s22533"
+ src="slide0019_image122.jpg" style='position:absolute;top:70.75%;left:19.28%;
+ width:54.68%;height:29.25%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019_image119.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019_image120.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019_image121.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0019_image122.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,275 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Boolean Polygon Model">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<!--[if gte IE 5]>
+<object id=MSOANIM classid="CLSID:A4639D2F-774E-11D3-A490-00C04F6843FB"></object>
+<object id=MSOTIME classid="CLSID:A4639D29-774E-11D3-A490-00C04F6843FB"></object>
+<![endif]-->
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<style>
+<!--
+oa\:* { BEHAVIOR: url(#MSOANIM#ANIM) url(#MSOTIME#TIME) }
+oa\:par,oa\:seq,oa\:iterate { BEHAVIOR:url(#MSOTIME) }
+oa\:video,oa\:audio {BEHAVIOR:url(#MSOTIME) url(#MSOTIME#MEDIA) }
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><script><!--
+g_animItemsToHide=new Array("_x0000_s23564_AllText","_x0000_s23564","_x0000_s23563_AllText","_x0000_s23563","_x0000_s23555_104_152","_x0000_s23562_AllText","_x0000_s23562","_x0000_s23555_58_104");
+
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="23"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()" oa:clockstart="onstart">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>20</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s23554"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape>
+ <div v:shape="_x0000_s23554" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Boolean Polygon Model</div>
+ <p:shaperange href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s23555"
+ type="#_x0000_m1027" style='position:absolute;left:36pt;top:126pt;width:666pt;
+ height:174pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/><p:animation number="2" delay="0"
+ type="object" effect="zoom" direction="out" flag="16384"/></v:shape>
+ <div v:shape="_x0000_s23555" style='position:absolute;top:24.5%;left:5.99%;
+ width:105.8%;height:29.0%'>
+ <div class=B><span style='position:absolute;top:0%;left:3.53%;width:94.51%;
+ height:23.27%'><span class=BB style='position:absolute;left:-3.74%'>•</span>We
+ define a polygon as a two dimensional </span><span style='position:absolute;
+ top:24.13%;left:3.53%;width:82.12%;height:23.27%'>Boolean function&#13;</span></div>
+ <div id="_x0000_s23555_58_104" class=B1 style='position:absolute;top:52.58%;
+ left:4.77%;width:90.79%;height:20.68%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:3.11%;width:96.88%;height:100.0%'><span
+ class=B1B style='position:absolute;left:-3.21%'>–</span>Function evaluates to
+ true inside the polygon&#13;</span></div>
+ <div id="_x0000_s23555_104_152" class=B1 style='position:absolute;top:78.44%;
+ left:4.77%;width:95.22%;height:20.68%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:2.97%;width:96.84%;height:100.0%'><span
+ class=B1B style='position:absolute;left:-3.07%'>–</span>Function evaluates to
+ false outside the polygon</span></div>
+ </div>
+ <v:line id="_x0000_s23556" style='position:absolute' from="336pt,348pt" to="336pt,444pt"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s23556"
+ src="slide0020_image123.gif" style='position:absolute;top:64.5%;left:46.62%;
+ width:.37%;height:18.25%'><![endif]><v:line id="_x0000_s23557" style='position:absolute'
+ from="336pt,444pt" to="414pt,444pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s23557"
+ src="slide0020_image124.gif" style='position:absolute;top:82.25%;left:46.62%;
+ width:11.23%;height:.5%'><![endif]><v:line id="_x0000_s23558" style='position:absolute'
+ from="414pt,384pt" to="414pt,444pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s23558"
+ src="slide0020_image125.gif" style='position:absolute;top:71.0%;left:57.49%;
+ width:.37%;height:11.75%'><![endif]><v:line id="_x0000_s23559" style='position:absolute'
+ from="366pt,348pt" to="366pt,384pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s23559"
+ src="slide0020_image126.gif" style='position:absolute;top:64.5%;left:50.74%;
+ width:.37%;height:7.25%'><![endif]><v:line id="_x0000_s23560" style='position:absolute'
+ from="366pt,384pt" to="414pt,384pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s23560"
+ src="slide0020_image127.gif" style='position:absolute;top:71.0%;left:50.74%;
+ width:7.11%;height:.5%'><![endif]><v:line id="_x0000_s23561" style='position:absolute'
+ from="336pt,348pt" to="366pt,348pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s23561"
+ src="slide0020_image128.gif" style='position:absolute;top:64.5%;left:46.62%;
+ width:4.49%;height:.5%'><![endif]><v:rect id="_x0000_s23562" style='position:absolute;
+ left:342pt;top:390pt;width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="3" delay="0" type="object" effect="zoom" direction="out"
+ flag="1028"/></v:rect>
+ <div id="_x0000_s23562_AllText" v:shape="_x0000_s23562" class=B
+ style='position:absolute;top:73.25%;left:48.5%;width:9.36%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>true</div>
+ </div>
+ <v:rect id="_x0000_s23563" style='position:absolute;left:450pt;top:372pt;
+ width:84pt;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="5" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s23563_AllText" v:shape="_x0000_s23563" class=B
+ style='position:absolute;top:70.0%;left:63.48%;width:11.42%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>false</div>
+ </div>
+ <v:rect id="_x0000_s23564" style='position:absolute;left:108pt;top:456pt;
+ width:438pt;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="6" delay="0" type="object" effect="zoom" direction="out"
+ flag="1028"/></v:rect>
+ <div id="_x0000_s23564_AllText" v:shape="_x0000_s23564" class=B
+ style='position:absolute;top:85.5%;left:15.91%;width:58.98%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>inside_polygon = f(x,
+ y)</div>
+ </div>
+</p:slide></div>
+
+<p:animation number="-1471987986"/><oa:par id="TimeNode0" dur="indefinite"
+ restart="never" p:nodeType="timingRoot">
+ <oa:seq id="TimeNode1" dur="indefinite" prev="document.onpptprev"
+ next="document.onpptnext" concurrent="enabled" nextAction="seek"
+ p:nodeType="mainSeq">
+ <oa:par id="TimeNode2" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode3" begin="0.0" fill="hold">
+ <oa:par id="TimeNode4" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode5" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s23555_58_104" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode6" dur="0.5"
+ targetElement="_x0000_s23555_58_104" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode7" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode8" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s23562" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode9" dur="0.5" targetElement="_x0000_s23562"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode10" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode11" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s23562_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode12" dur="0.5"
+ targetElement="_x0000_s23562_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ <oa:par id="TimeNode13" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode14" begin="0.0" fill="hold">
+ <oa:par id="TimeNode15" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode16" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s23555_104_152" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode17" dur="0.5"
+ targetElement="_x0000_s23555_104_152" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode18" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode19" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s23563" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode20" dur="0.5" targetElement="_x0000_s23563"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode21" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode22" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s23563_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode23" dur="0.5"
+ targetElement="_x0000_s23563_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode24" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode25" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s23564" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode26" dur="0.5" targetElement="_x0000_s23564"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode27" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode28" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s23564_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode29" dur="0.5"
+ targetElement="_x0000_s23564_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ </oa:seq>
+</oa:par>
+<![if ppt]>
+<oa:buildParagraph targetElement="_x0000_s23562" groupID="0" build="asAWhole"
+ buildLevel="1" reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s23563" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s23564" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/>
+<![endif]>
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image123.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image124.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image125.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image126.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image127.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0020_image128.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,977 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Math With Polygon Model">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<!--[if gte IE 5]>
+<object id=MSOANIM classid="CLSID:A4639D2F-774E-11D3-A490-00C04F6843FB"></object>
+<object id=MSOTIME classid="CLSID:A4639D29-774E-11D3-A490-00C04F6843FB"></object>
+<![endif]-->
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<style>
+<!--
+oa\:* { BEHAVIOR: url(#MSOANIM#ANIM) url(#MSOTIME#TIME) }
+oa\:par,oa\:seq,oa\:iterate { BEHAVIOR:url(#MSOTIME) }
+oa\:video,oa\:audio {BEHAVIOR:url(#MSOTIME) url(#MSOTIME#MEDIA) }
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><script><!--
+g_animItemsToHide=new Array("_x0000_s24611_AllText","_x0000_s24611","_x0000_s24613_AllText","_x0000_s24613","_x0000_s24612_AllText","_x0000_s24612","_x0000_s24610_AllText","_x0000_s24610","_x0000_s24609","_x0000_s24608","_x0000_s24607","_x0000_s24606","_x0000_s24605","_x0000_s24604","_x0000_s24579_344_478","_x0000_s24600_AllText","_x0000_s24600","_x0000_s24599_AllText","_x0000_s24599","_x0000_s24598_AllText","_x0000_s24598","_x0000_s24597","_x0000_s24596","_x0000_s24595","_x0000_s24594","_x0000_s24593","_x0000_s24579_283_344","_x0000_s24592_AllText","_x0000_s24592","_x0000_s24591_AllText","_x0000_s24591","_x0000_s24590_AllText","_x0000_s24590","_x0000_s24589_AllText","_x0000_s24589","_x0000_s24588","_x0000_s24587","_x0000_s24586","_x0000_s24585","_x0000_s24584","_x0000_s24579_205_283","_x0000_s24603_AllText","_x0000_s24603","_x0000_s24602_AllText","_x0000_s24602","_x0000_s24601_AllText","_x0000_s24601","_x0000_s24582","_x0000_s24581","_x0000_s24580","_x0000_s24583_AllText","_x0000_s24583","_x0000_s24579_86_
205","_x0000_s24579_51_86");
+
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="24"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()" oa:clockstart="onstart">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>21</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s24578"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape>
+ <div v:shape="_x0000_s24578" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Math With Polygon Model</div>
+ <p:shaperange href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s24579"
+ type="#_x0000_m1027" style='position:absolute;left:36pt;top:96pt;width:660pt;
+ height:180pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/><p:animation number="2" delay="0"
+ type="object" effect="zoom" direction="out" flag="17408"/></v:shape>
+ <div v:shape="_x0000_s24579" class=B style='position:absolute;top:18.0%;
+ left:5.99%;width:103.74%;height:30.25%'>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:0%;left:0%;
+ width:86.64%;height:13.22%'><span style='position:absolute;top:0%;left:4.16%;
+ width:95.83%;height:100.0%'><span style='font-size:56%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.34%'>•</span></span><span
+ style='font-size:56%'>Because the Polygon is now modeled mathematically…&#13;</span></span></div>
+ <div id="_x0000_s24579_51_86" style='mso-line-spacing:"80 20 0";position:absolute;
+ top:13.22%;left:0%;width:86.64%;height:13.22%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:4.16%;width:95.83%;height:100.0%'><span
+ style='font-size:56%'><span style='mso-special-format:bullet;position:absolute;
+ left:-4.34%'>•</span></span><span style='font-size:56%'>We can manipulate it
+ with calculus&#13;</span></span></div>
+ <div id="_x0000_s24579_86_205" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:26.44%;left:0%;width:94.58%;height:23.96%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:3.81%;width:96.18%;height:55.17%'><span
+ style='font-size:56%'><span style='mso-special-format:bullet;position:absolute;
+ left:-3.96%'>•</span></span><span style='font-size:56%'>The derivative with
+ respect to x of the polygon function is the change in </span></span><span
+ style='position:absolute;top:44.82%;left:3.81%;width:87.78%;height:55.17%'><span
+ style='font-size:56%'>polygon count as we cross its vertical edges&#13;</span></span></div>
+ <div id="_x0000_s24579_205_283" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:50.41%;left:0%;width:99.45%;height:13.22%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:3.62%;width:96.37%;height:100.0%'><span
+ style='font-size:56%'><span style='mso-special-format:bullet;position:absolute;
+ left:-3.76%'>•</span></span><span style='font-size:56%'>In one dimension the
+ polygon looks like a step function at its vertical edges&#13;</span></span></div>
+ <div id="_x0000_s24579_283_344" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:63.63%;left:0%;width:86.64%;height:13.22%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:4.16%;width:95.83%;height:100.0%'><span
+ style='font-size:56%'><span style='mso-special-format:bullet;position:absolute;
+ left:-4.34%'>•</span></span><span style='font-size:56%'>Derivative of a step
+ function is an impulse with area of one&#13;</span></span></div>
+ <div id="_x0000_s24579_344_478" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:76.85%;left:0%;width:100.0%;height:23.96%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:3.61%;width:96.38%;height:55.17%'><span
+ style='font-size:56%'><span style='mso-special-format:bullet;position:absolute;
+ left:-3.74%'>•</span></span><span style='font-size:56%'>Summing changes in
+ polygon count from left to right (scanline) performs an </span></span><span
+ style='position:absolute;top:44.82%;left:3.61%;width:83.03%;height:55.17%'><span
+ style='font-size:56%'>integration over the df/dx to produce the original
+ polygon</span></span></div>
+ </div>
+ <v:line id="_x0000_s24580" style='position:absolute' from="6in,330pt" to="6in,426pt"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="5" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24580"
+ src="slide0021_image129.gif" style='position:absolute;top:61.0%;left:59.92%;
+ width:.37%;height:18.25%'><![endif]><v:line id="_x0000_s24581" style='position:absolute'
+ from="510pt,366pt" to="510pt,426pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="6" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24581"
+ src="slide0021_image130.gif" style='position:absolute;top:67.75%;left:70.78%;
+ width:.37%;height:11.75%'><![endif]><v:line id="_x0000_s24582" style='position:absolute'
+ from="462pt,330pt" to="462pt,366pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="7" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24582"
+ src="slide0021_image131.gif" style='position:absolute;top:61.0%;left:64.04%;
+ width:.37%;height:7.25%'><![endif]><v:rect id="_x0000_s24583" style='position:absolute;
+ left:12pt;top:450pt;width:672pt;height:66pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="4" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24583_AllText" v:shape="_x0000_s24583" class=B
+ style='position:absolute;top:84.5%;left:2.62%;width:91.57%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>changing_polygon_count
+ = df(x, y)/dx</div>
+ </div>
+ <v:line id="_x0000_s24584" style='position:absolute' from="84pt,342pt" to="156pt,342pt"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="12" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24584"
+ src="slide0021_image132.gif" style='position:absolute;top:63.24%;left:11.61%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s24585" style='position:absolute;
+ flip:y' from="156pt,306pt" to="156pt,342pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="13" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24585"
+ src="slide0021_image133.gif" style='position:absolute;top:56.49%;left:21.53%;
+ width:.37%;height:7.25%'><![endif]><v:line id="_x0000_s24586" style='position:absolute'
+ from="156pt,306pt" to="228pt,306pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="14" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24586"
+ src="slide0021_image134.gif" style='position:absolute;top:56.49%;left:21.53%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s24587" style='position:absolute'
+ from="228pt,342pt" to="300pt,342pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="15" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24587"
+ src="slide0021_image135.gif" style='position:absolute;top:63.24%;left:31.64%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s24588" style='position:absolute;
+ flip:y' from="228pt,306pt" to="228pt,342pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="16" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24588"
+ src="slide0021_image136.gif" style='position:absolute;top:56.49%;left:31.64%;
+ width:.37%;height:7.25%'><![endif]><v:rect id="_x0000_s24589" style='position:absolute;
+ left:174pt;top:300pt;width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="17" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24589_AllText" v:shape="_x0000_s24589" class=B
+ style='position:absolute;top:56.49%;left:25.09%;width:8.23%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>1</div>
+ </div>
+ <v:rect id="_x0000_s24590" style='position:absolute;left:246pt;top:300pt;
+ width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="18" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24590_AllText" v:shape="_x0000_s24590" class=B
+ style='position:absolute;top:56.49%;left:35.2%;width:8.23%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>0</div>
+ </div>
+ <v:rect id="_x0000_s24591" style='position:absolute;left:0;top:306pt;width:132pt;
+ height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="19" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24591_AllText" v:shape="_x0000_s24591" class=B
+ style='position:absolute;top:57.49%;left:.93%;width:16.47%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>f(x, y1)</span></div>
+ </div>
+ <v:rect id="_x0000_s24592" style='position:absolute;left:90pt;top:300pt;
+ width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="20" delay="0" type="object" effect="zoom" direction="out"
+ flag="1028"/></v:rect>
+ <div id="_x0000_s24592_AllText" v:shape="_x0000_s24592" class=B
+ style='position:absolute;top:56.49%;left:13.48%;width:8.23%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>0</div>
+ </div>
+ <v:line id="_x0000_s24593" style='position:absolute' from="84pt,414pt" to="156pt,414pt"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="22" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24593"
+ src="slide0021_image137.gif" style='position:absolute;top:76.5%;left:11.61%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s24594" style='position:absolute;
+ flip:y' from="156pt,378pt" to="156pt,414pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="23" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24594"
+ src="slide0021_image138.gif" style='position:absolute;top:70.0%;left:21.53%;
+ width:.37%;height:7.25%'><![endif]><v:line id="_x0000_s24595" style='position:absolute'
+ from="156pt,414pt" to="228pt,414pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="24" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24595"
+ src="slide0021_image139.gif" style='position:absolute;top:76.5%;left:21.53%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s24596" style='position:absolute'
+ from="228pt,414pt" to="300pt,414pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="25" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24596"
+ src="slide0021_image140.gif" style='position:absolute;top:76.5%;left:31.64%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s24597" style='position:absolute;
+ flip:y' from="228pt,414pt" to="228pt,450pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="26" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24597"
+ src="slide0021_image141.gif" style='position:absolute;top:76.5%;left:31.64%;
+ width:.37%;height:7.25%'><![endif]><v:rect id="_x0000_s24598" style='position:absolute;
+ left:150pt;top:354pt;width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="27" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24598_AllText" v:shape="_x0000_s24598" class=B
+ style='position:absolute;top:66.5%;left:21.91%;width:8.23%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>1</div>
+ </div>
+ <v:rect id="_x0000_s24599" style='position:absolute;left:0;top:378pt;width:120pt;
+ height:36pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="28" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24599_AllText" v:shape="_x0000_s24599" class=B
+ style='position:absolute;top:71.0%;left:.93%;width:16.66%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>df(x, y1)/dx</span></div>
+ </div>
+ <v:rect id="_x0000_s24600" style='position:absolute;left:192pt;top:420pt;
+ width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="29" delay="0" type="object" effect="zoom" direction="out"
+ flag="1028"/></v:rect>
+ <div id="_x0000_s24600_AllText" v:shape="_x0000_s24600" class=B
+ style='position:absolute;top:78.75%;left:27.71%;width:8.23%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>-1</div>
+ </div>
+ <v:rect id="_x0000_s24601" style='position:absolute;left:408pt;top:366pt;
+ width:30pt;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="8" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24601_AllText" v:shape="_x0000_s24601" class=B
+ style='position:absolute;top:68.75%;left:57.67%;width:2.24%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>1</span></div>
+ </div>
+ <v:rect id="_x0000_s24602" style='position:absolute;left:462pt;top:330pt;
+ width:42pt;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="9" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24602_AllText" v:shape="_x0000_s24602" class=B
+ style='position:absolute;top:62.0%;left:65.16%;width:3.93%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>-1</span></div>
+ </div>
+ <v:rect id="_x0000_s24603" style='position:absolute;left:7in;top:372pt;
+ width:42pt;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="10" delay="0" type="object" effect="zoom" direction="out"
+ flag="1028"/></v:rect>
+ <div id="_x0000_s24603_AllText" v:shape="_x0000_s24603" class=B
+ style='position:absolute;top:69.75%;left:70.97%;width:3.93%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>-1</span></div>
+ </div>
+ <v:line id="_x0000_s24604" style='position:absolute' from="624pt,336pt" to="624pt,6in"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="31" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24604"
+ src="slide0021_image142.gif" style='position:absolute;top:62.25%;left:86.7%;
+ width:.37%;height:18.25%'><![endif]><v:line id="_x0000_s24605" style='position:absolute'
+ from="624pt,6in" to="702pt,6in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="32" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24605"
+ src="slide0021_image143.gif" style='position:absolute;top:80.0%;left:86.7%;
+ width:11.23%;height:.5%'><![endif]><v:line id="_x0000_s24606" style='position:absolute'
+ from="702pt,372pt" to="702pt,6in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="33" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24606"
+ src="slide0021_image144.gif" style='position:absolute;top:68.75%;left:97.37%;
+ width:.37%;height:11.75%'><![endif]><v:line id="_x0000_s24607" style='position:absolute'
+ from="654pt,336pt" to="654pt,372pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="34" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24607"
+ src="slide0021_image145.gif" style='position:absolute;top:62.25%;left:90.82%;
+ width:.37%;height:7.25%'><![endif]><v:line id="_x0000_s24608" style='position:absolute'
+ from="654pt,372pt" to="702pt,372pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="35" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24608"
+ src="slide0021_image146.gif" style='position:absolute;top:68.75%;left:90.82%;
+ width:7.11%;height:.5%'><![endif]><v:line id="_x0000_s24609" style='position:absolute'
+ from="624pt,336pt" to="654pt,336pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="36" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s24609"
+ src="slide0021_image147.gif" style='position:absolute;top:62.25%;left:86.7%;
+ width:4.49%;height:.5%'><![endif]><v:rect id="_x0000_s24610" style='position:absolute;
+ left:534pt;top:5in;width:114pt;height:48pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="37" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24610_AllText" v:shape="_x0000_s24610" class=B
+ style='position:absolute;top:67.75%;left:75.09%;width:14.04%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>dx<span
+ style='mso-spacerun:yes'>  </span>=</div>
+ </div>
+ <v:rect id="_x0000_s24611" style='position:absolute;left:366pt;top:336pt;
+ width:78pt;height:126pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="40" delay="0" type="object" effect="zoom" direction="out"
+ flag="1028"/></v:rect>
+ <div id="_x0000_s24611_AllText" v:shape="_x0000_s24611" class=B
+ style='position:absolute;top:63.74%;left:51.87%;width:8.98%;height:14.0%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:206%'>&#8747;</span><span style='font-size:41%;position:relative;
+ top:.37em;mso-text-raise:-25%'>-</span></div>
+ </div>
+ <v:rect id="_x0000_s24612" style='position:absolute;left:390pt;top:390pt;
+ width:36pt;height:30pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="38" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24612_AllText" v:shape="_x0000_s24612" class=B
+ style='position:absolute;top:73.25%;left:55.24%;width:3.18%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>&#8734;</span></div>
+ </div>
+ <v:rect id="_x0000_s24613" style='position:absolute;left:390pt;top:330pt;
+ width:36pt;height:30pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="39" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s24613_AllText" v:shape="_x0000_s24613" class=B
+ style='position:absolute;top:62.0%;left:55.24%;width:3.18%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>&#8734;</span></div>
+ </div>
+</p:slide></div>
+
+<p:animation number="-1526805175"/><oa:par id="TimeNode0" dur="indefinite"
+ restart="never" p:nodeType="timingRoot">
+ <oa:seq id="TimeNode1" dur="indefinite" prev="document.onpptprev"
+ next="document.onpptnext" concurrent="enabled" nextAction="seek"
+ p:nodeType="mainSeq">
+ <oa:par id="TimeNode2" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode3" begin="0.0" fill="hold">
+ <oa:par id="TimeNode4" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode5" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24579_51_86" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode6" dur="0.5"
+ targetElement="_x0000_s24579_51_86" transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode7" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode8" begin="0.0" fill="hold">
+ <oa:par id="TimeNode9" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode10" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24579_86_205" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode11" dur="0.5"
+ targetElement="_x0000_s24579_86_205" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode12" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode13" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24583" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode14" dur="0.5" targetElement="_x0000_s24583"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode15" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode16" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24583_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode17" dur="0.5"
+ targetElement="_x0000_s24583_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode18" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode19" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24580" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode20" dur="0.5" targetElement="_x0000_s24580"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode21" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode22" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24581" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode23" dur="0.5" targetElement="_x0000_s24581"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode24" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode25" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24582" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode26" dur="0.5" targetElement="_x0000_s24582"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode27" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode28" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24601" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode29" dur="0.5" targetElement="_x0000_s24601"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode30" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode31" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24601_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode32" dur="0.5"
+ targetElement="_x0000_s24601_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode33" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode34" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24602" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode35" dur="0.5" targetElement="_x0000_s24602"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode36" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode37" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24602_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode38" dur="0.5"
+ targetElement="_x0000_s24602_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode39" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode40" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24603" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode41" dur="0.5" targetElement="_x0000_s24603"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode42" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode43" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24603_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode44" dur="0.5"
+ targetElement="_x0000_s24603_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ <oa:par id="TimeNode45" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode46" begin="0.0" fill="hold">
+ <oa:par id="TimeNode47" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode48" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24579_205_283" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode49" dur="0.5"
+ targetElement="_x0000_s24579_205_283" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode50" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode51" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24584" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode52" dur="0.5" targetElement="_x0000_s24584"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode53" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode54" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24585" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode55" dur="0.5" targetElement="_x0000_s24585"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode56" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode57" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24586" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode58" dur="0.5" targetElement="_x0000_s24586"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode59" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode60" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24587" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode61" dur="0.5" targetElement="_x0000_s24587"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode62" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode63" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24588" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode64" dur="0.5" targetElement="_x0000_s24588"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode65" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode66" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24589" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode67" dur="0.5" targetElement="_x0000_s24589"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode68" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode69" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24589_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode70" dur="0.5"
+ targetElement="_x0000_s24589_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode71" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode72" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24590" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode73" dur="0.5" targetElement="_x0000_s24590"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode74" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode75" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24590_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode76" dur="0.5"
+ targetElement="_x0000_s24590_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode77" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode78" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24591" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode79" dur="0.5" targetElement="_x0000_s24591"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode80" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode81" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24591_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode82" dur="0.5"
+ targetElement="_x0000_s24591_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode83" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode84" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24592" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode85" dur="0.5" targetElement="_x0000_s24592"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode86" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode87" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24592_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode88" dur="0.5"
+ targetElement="_x0000_s24592_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ <oa:par id="TimeNode89" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode90" begin="0.0" fill="hold">
+ <oa:par id="TimeNode91" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode92" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24579_283_344" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode93" dur="0.5"
+ targetElement="_x0000_s24579_283_344" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode94" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode95" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24593" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode96" dur="0.5" targetElement="_x0000_s24593"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode97" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode98" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24594" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode99" dur="0.5" targetElement="_x0000_s24594"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode100" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode101" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24595" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode102" dur="0.5" targetElement="_x0000_s24595"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode103" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode104" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24596" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode105" dur="0.5" targetElement="_x0000_s24596"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode106" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode107" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24597" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode108" dur="0.5" targetElement="_x0000_s24597"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode109" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode110" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24598" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode111" dur="0.5" targetElement="_x0000_s24598"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode112" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode113" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24598_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode114" dur="0.5"
+ targetElement="_x0000_s24598_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode115" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode116" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24599" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode117" dur="0.5" targetElement="_x0000_s24599"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode118" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode119" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24599_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode120" dur="0.5"
+ targetElement="_x0000_s24599_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode121" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode122" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24600" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode123" dur="0.5" targetElement="_x0000_s24600"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode124" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode125" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24600_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode126" dur="0.5"
+ targetElement="_x0000_s24600_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ <oa:par id="TimeNode127" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode128" begin="0.0" fill="hold">
+ <oa:par id="TimeNode129" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode130" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24579_344_478" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode131" dur="0.5"
+ targetElement="_x0000_s24579_344_478" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode132" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode133" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24604" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode134" dur="0.5" targetElement="_x0000_s24604"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode135" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode136" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24605" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode137" dur="0.5" targetElement="_x0000_s24605"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode138" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode139" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24606" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode140" dur="0.5" targetElement="_x0000_s24606"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode141" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode142" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24607" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode143" dur="0.5" targetElement="_x0000_s24607"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode144" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode145" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24608" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode146" dur="0.5" targetElement="_x0000_s24608"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode147" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode148" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24609" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode149" dur="0.5" targetElement="_x0000_s24609"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode150" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode151" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24610" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode152" dur="0.5" targetElement="_x0000_s24610"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode153" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode154" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24610_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode155" dur="0.5"
+ targetElement="_x0000_s24610_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode156" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode157" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24612" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode158" dur="0.5" targetElement="_x0000_s24612"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode159" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode160" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24612_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode161" dur="0.5"
+ targetElement="_x0000_s24612_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode162" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode163" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24613" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode164" dur="0.5" targetElement="_x0000_s24613"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode165" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode166" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24613_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode167" dur="0.5"
+ targetElement="_x0000_s24613_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode168" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode169" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24611" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode170" dur="0.5" targetElement="_x0000_s24611"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode171" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode172" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s24611_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode173" dur="0.5"
+ targetElement="_x0000_s24611_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ </oa:seq>
+</oa:par>
+<![if ppt]>
+<oa:buildParagraph targetElement="_x0000_s24583" groupID="0" build="asAWhole"
+ buildLevel="1" reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24589" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24590" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24591" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24592" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24598" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24599" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24600" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24601" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24602" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24603" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24610" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24611" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24612" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s24613" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/>
+<![endif]>
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image129.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image130.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image131.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image132.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image133.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image134.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image135.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image136.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image137.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image138.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image139.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image140.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image141.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image142.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image143.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image144.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image145.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image146.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0021_image147.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,1161 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: The Great Thing About Math">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<!--[if gte IE 5]>
+<object id=MSOANIM classid="CLSID:A4639D2F-774E-11D3-A490-00C04F6843FB"></object>
+<object id=MSOTIME classid="CLSID:A4639D29-774E-11D3-A490-00C04F6843FB"></object>
+<![endif]-->
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<style>
+<!--
+oa\:* { BEHAVIOR: url(#MSOANIM#ANIM) url(#MSOTIME#TIME) }
+oa\:par,oa\:seq,oa\:iterate { BEHAVIOR:url(#MSOTIME) }
+oa\:video,oa\:audio {BEHAVIOR:url(#MSOTIME) url(#MSOTIME#MEDIA) }
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><script><!--
+g_animItemsToHide=new Array("_x0000_s25630_AllText","_x0000_s25630","_x0000_s25628_AllText","_x0000_s25628","_x0000_s25629_AllText","_x0000_s25629","_x0000_s25632_AllText","_x0000_s25632","_x0000_s25633_AllText","_x0000_s25633","_x0000_s25631_AllText","_x0000_s25631","_x0000_s25640_AllText","_x0000_s25640","_x0000_s25639","_x0000_s25638","_x0000_s25637","_x0000_s25636","_x0000_s25635","_x0000_s25634","_x0000_s25603_366_537","_x0000_s25624_AllText","_x0000_s25624","_x0000_s25626_AllText","_x0000_s25626","_x0000_s25625_AllText","_x0000_s25625","_x0000_s25623","_x0000_s25622","_x0000_s25621","_x0000_s25620","_x0000_s25619","_x0000_s25603_305_366","_x0000_s25618_AllText","_x0000_s25618","_x0000_s25617_AllText","_x0000_s25617","_x0000_s25616_AllText","_x0000_s25616","_x0000_s25615_AllText","_x0000_s25615","_x0000_s25614","_x0000_s25613","_x0000_s25612","_x0000_s25611","_x0000_s25610","_x0000_s25603_235_305","_x0000_s25627_AllText","_x0000_s25627","_x0000_s25609_AllText","_x0000_s25609","_x0000_s25608_AllText","_
x0000_s25608","_x0000_s25607_AllText","_x0000_s25607","_x0000_s25606_AllText","_x0000_s25606","_x0000_s25605_AllText","_x0000_s25605","_x0000_s25604_AllText","_x0000_s25604","_x0000_s25603_45_235","_x0000_s25603_0_45");
+
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="25"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()" oa:clockstart="onstart">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>22</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s25602"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape>
+ <div v:shape="_x0000_s25602" class=T style='position:absolute;top:8.0%;
+ left:3.55%;width:93.25%;height:9.25%'>The Great Thing About Math</div>
+ <p:shaperange href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s25603"
+ type="#_x0000_m1027" style='position:absolute;left:42pt;top:108pt;width:666pt;
+ height:222pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/><p:animation number="2" delay="0"
+ type="object" effect="zoom" direction="out" flag="17408"/></v:shape>
+ <div v:shape="_x0000_s25603" class=B style='position:absolute;top:20.25%;
+ left:6.92%;width:107.11%;height:36.5%'>
+ <div id="_x0000_s25603_0_45" style='mso-line-spacing:"80 20 0";position:absolute;
+ top:0%;left:0%;width:84.61%;height:12.32%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:4.13%;width:95.86%;height:100.0%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-4.31%'>•</span></span><span style='font-size:63%'>If it works once, it
+ will work a second time&#13;</span></span></div>
+ <div id="_x0000_s25603_45_235" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:12.32%;left:0%;width:98.77%;height:31.5%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:3.53%;width:96.46%;height:39.13%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-3.66%'>•</span></span><span style='font-size:63%'>The derivative with
+ respect to y of the d/dx of polygon function f is the </span></span><span
+ style='position:absolute;top:30.43%;left:3.53%;width:94.86%;height:39.13%'><span
+ style='font-size:63%'>change in the change in polygon count with respect to x
+ as we enter </span></span><span style='position:absolute;top:60.86%;
+ left:3.53%;width:82.12%;height:39.13%'><span style='font-size:63%'>and leave
+ its vertical edges in the y dimension&#13;</span></span></div>
+ <div id="_x0000_s25603_235_305" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:43.83%;left:0%;width:94.23%;height:12.32%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:3.71%;width:96.28%;height:100.0%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-3.85%'>•</span></span><span style='font-size:63%'>In the y dimension d
+ f/dx (vertical edges) looks like a step function&#13;</span></span></div>
+ <div id="_x0000_s25603_305_366" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:56.16%;left:0%;width:84.61%;height:12.32%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:4.13%;width:95.86%;height:100.0%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-4.31%'>•</span></span><span style='font-size:63%'>Derivative of a step
+ function is an impulse with area of one&#13;</span></span></div>
+ <div id="_x0000_s25603_366_537" style='mso-line-spacing:"80 20 0";position:
+ absolute;top:67.8%;left:0%;width:100.0%;height:31.5%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:3.49%;width:93.18%;height:39.13%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-3.75%'>•</span></span><span style='font-size:63%'>Summing changes in y
+ of changes in x from low to high y integrates </span></span><span
+ style='position:absolute;top:32.6%;left:3.49%;width:96.5%;height:39.13%'><span
+ style='font-size:63%'>the function and produces changes in x (edges) that can
+ be integrated </span></span><span style='position:absolute;top:63.04%;
+ left:3.49%;width:81.11%;height:39.13%'><span style='font-size:63%'>left to
+ right to produce polygons</span></span></div>
+ </div>
+ <v:oval id="_x0000_s25604" style='position:absolute;left:426pt;top:450pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="4" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s25604"
+ src="slide0022_image148.gif" style='position:absolute;top:83.25%;left:59.17%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div id="_x0000_s25604_AllText" v:shape="_x0000_s25604" class=O
+ style='position:absolute;top:82.25%;left:56.74%;width:5.8%;height:4.0%;
+ white-space:nowrap'>
+ <div style='text-align:center;position:absolute;top:0%;left:0%;width:100.0%;
+ height:100.0%'><b><span style='mso-spacerun:yes'>     </span></b><span
+ style='font-size:44%'><b>+1</b></span><span style='mso-special-format:lastCR;
+ display:none'><b>&#13;</b></span></div>
+ </div>
+ <v:oval id="_x0000_s25605" style='position:absolute;left:456pt;top:390pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="5" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s25605"
+ src="slide0022_image149.gif" style='position:absolute;top:72.25%;left:63.29%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div id="_x0000_s25605_AllText" v:shape="_x0000_s25605" class=O
+ style='position:absolute;top:71.0%;left:61.98%;width:3.93%;height:4.0%;
+ white-space:nowrap'>
+ <div style='text-align:center;position:absolute;top:0%;left:0%;width:100.0%;
+ height:100.0%'><b><span style='mso-spacerun:yes'>   </span></b><span
+ style='font-size:44%'><b>-1</b></span><span style='mso-special-format:lastCR;
+ display:none'><b>&#13;</b></span></div>
+ </div>
+ <v:oval id="_x0000_s25606" style='position:absolute;left:7in;top:390pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="6" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s25606"
+ src="slide0022_image150.gif" style='position:absolute;top:72.25%;left:70.03%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div id="_x0000_s25606_AllText" v:shape="_x0000_s25606" class=O
+ style='position:absolute;top:71.0%;left:67.97%;width:5.05%;height:4.0%;
+ white-space:nowrap'>
+ <div style='text-align:center;position:absolute;top:0%;left:0%;width:100.0%;
+ height:100.0%'><b><span style='mso-spacerun:yes'>    </span></b><span
+ style='font-size:44%'><b>+1</b></span><span style='mso-special-format:lastCR;
+ display:none'><b>&#13;</b></span></div>
+ </div>
+ <v:oval id="_x0000_s25607" style='position:absolute;left:7in;top:450pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="7" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s25607"
+ src="slide0022_image151.gif" style='position:absolute;top:83.25%;left:70.03%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div id="_x0000_s25607_AllText" v:shape="_x0000_s25607" class=O
+ style='position:absolute;top:82.25%;left:67.79%;width:5.61%;height:4.0%;
+ white-space:nowrap'>
+ <div style='text-align:center;position:absolute;top:0%;left:0%;width:100.0%;
+ height:100.0%'><b><span style='mso-spacerun:yes'>     </span></b><span
+ style='font-size:44%'><b>-1</b></span><span style='mso-special-format:lastCR;
+ display:none'><b>&#13;</b></span></div>
+ </div>
+ <v:oval id="_x0000_s25608" style='position:absolute;left:426pt;top:5in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="8" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s25608"
+ src="slide0022_image152.gif" style='position:absolute;top:66.5%;left:59.17%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div id="_x0000_s25608_AllText" v:shape="_x0000_s25608" class=O
+ style='position:absolute;top:65.5%;left:57.67%;width:3.93%;height:4.0%;
+ white-space:nowrap'>
+ <div style='text-align:center;position:absolute;top:0%;left:0%;width:100.0%;
+ height:100.0%'><b><span style='mso-spacerun:yes'>   </span></b><span
+ style='font-size:44%'><b>-1</b></span><span style='mso-special-format:lastCR;
+ display:none'><b>&#13;</b></span></div>
+ </div>
+ <v:oval id="_x0000_s25609" style='position:absolute;left:456pt;top:5in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="9" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:oval><![if !vml]><img border=0 v:shapes="_x0000_s25609"
+ src="slide0022_image153.gif" style='position:absolute;top:66.5%;left:63.29%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div id="_x0000_s25609_AllText" v:shape="_x0000_s25609" class=O
+ style='position:absolute;top:65.5%;left:60.86%;width:5.8%;height:4.0%;
+ white-space:nowrap'>
+ <div style='text-align:center;position:absolute;top:0%;left:0%;width:100.0%;
+ height:100.0%'><b><span style='mso-spacerun:yes'>     </span></b><span
+ style='font-size:44%'><b>+1</b></span><span style='mso-special-format:lastCR;
+ display:none'><b>&#13;</b></span></div>
+ </div>
+ <v:line id="_x0000_s25610" style='position:absolute' from="84pt,378pt" to="156pt,378pt"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="12" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25610"
+ src="slide0022_image154.gif" style='position:absolute;top:70.0%;left:11.61%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s25611" style='position:absolute;
+ flip:y' from="156pt,342pt" to="156pt,378pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="13" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25611"
+ src="slide0022_image155.gif" style='position:absolute;top:63.24%;left:21.53%;
+ width:.37%;height:7.25%'><![endif]><v:line id="_x0000_s25612" style='position:absolute'
+ from="156pt,342pt" to="228pt,342pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="14" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25612"
+ src="slide0022_image156.gif" style='position:absolute;top:63.24%;left:21.53%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s25613" style='position:absolute'
+ from="228pt,378pt" to="300pt,378pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="15" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25613"
+ src="slide0022_image157.gif" style='position:absolute;top:70.0%;left:31.64%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s25614" style='position:absolute;
+ flip:y' from="228pt,342pt" to="228pt,378pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="16" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25614"
+ src="slide0022_image158.gif" style='position:absolute;top:63.24%;left:31.64%;
+ width:.37%;height:7.25%'><![endif]><v:rect id="_x0000_s25615" style='position:absolute;
+ left:174pt;top:336pt;width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="17" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25615_AllText" v:shape="_x0000_s25615" class=B
+ style='position:absolute;top:63.24%;left:25.09%;width:8.23%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>1</div>
+ </div>
+ <v:rect id="_x0000_s25616" style='position:absolute;left:246pt;top:336pt;
+ width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="18" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25616_AllText" v:shape="_x0000_s25616" class=B
+ style='position:absolute;top:63.24%;left:35.2%;width:8.23%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>0</div>
+ </div>
+ <v:rect id="_x0000_s25617" style='position:absolute;left:12pt;top:348pt;
+ width:132pt;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="19" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25617_AllText" v:shape="_x0000_s25617" class=B
+ style='position:absolute;top:65.25%;left:2.62%;width:16.47%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>f ’(x1, y)</span></div>
+ </div>
+ <v:rect id="_x0000_s25618" style='position:absolute;left:90pt;top:336pt;
+ width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="20" delay="0" type="object" effect="zoom" direction="out"
+ flag="1028"/></v:rect>
+ <div id="_x0000_s25618_AllText" v:shape="_x0000_s25618" class=B
+ style='position:absolute;top:63.24%;left:13.48%;width:8.23%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>0</div>
+ </div>
+ <v:line id="_x0000_s25619" style='position:absolute' from="84pt,450pt" to="156pt,450pt"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="22" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25619"
+ src="slide0022_image159.gif" style='position:absolute;top:83.25%;left:11.61%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s25620" style='position:absolute;
+ flip:y' from="156pt,414pt" to="156pt,450pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="23" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25620"
+ src="slide0022_image160.gif" style='position:absolute;top:76.5%;left:21.53%;
+ width:.37%;height:7.25%'><![endif]><v:line id="_x0000_s25621" style='position:absolute'
+ from="156pt,450pt" to="228pt,450pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="24" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25621"
+ src="slide0022_image161.gif" style='position:absolute;top:83.25%;left:21.53%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s25622" style='position:absolute'
+ from="228pt,450pt" to="300pt,450pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="25" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25622"
+ src="slide0022_image162.gif" style='position:absolute;top:83.25%;left:31.64%;
+ width:10.48%;height:.5%'><![endif]><v:line id="_x0000_s25623" style='position:absolute;
+ flip:y' from="228pt,450pt" to="228pt,486pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="26" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25623"
+ src="slide0022_image163.gif" style='position:absolute;top:83.25%;left:31.64%;
+ width:.37%;height:7.25%'><![endif]><v:rect id="_x0000_s25624" style='position:absolute;
+ left:150pt;top:390pt;width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="29" delay="0" type="object" effect="zoom" direction="out"
+ flag="1028"/></v:rect>
+ <div id="_x0000_s25624_AllText" v:shape="_x0000_s25624" class=B
+ style='position:absolute;top:73.25%;left:21.91%;width:8.23%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>1</div>
+ </div>
+ <v:rect id="_x0000_s25625" style='position:absolute;left:0;top:420pt;width:168pt;
+ height:36pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="27" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25625_AllText" v:shape="_x0000_s25625" class=B
+ style='position:absolute;top:78.75%;left:.93%;width:21.53%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>df ‘(x1, y)/dy</span></div>
+ </div>
+ <v:rect id="_x0000_s25626" style='position:absolute;left:192pt;top:456pt;
+ width:1in;height:48pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="28" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25626_AllText" v:shape="_x0000_s25626" class=B
+ style='position:absolute;top:85.5%;left:27.71%;width:8.23%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>-1</div>
+ </div>
+ <v:rect id="_x0000_s25627" style='position:absolute;left:12pt;top:480pt;
+ width:672pt;height:60pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="10" delay="0" type="object" effect="zoom" direction="out"
+ flag="1028"/></v:rect>
+ <div id="_x0000_s25627_AllText" v:shape="_x0000_s25627" class=B
+ style='position:absolute;top:90.0%;left:2.62%;width:91.57%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>change_of_change =
+ df(x, y)/dxdy</div>
+ </div>
+ <v:rect id="_x0000_s25628" style='position:absolute;left:318pt;top:5in;
+ width:78pt;height:126pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="42" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25628_AllText" v:shape="_x0000_s25628" class=B
+ style='position:absolute;top:68.25%;left:45.13%;width:8.98%;height:14.0%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:206%'>&#8747;</span><span style='font-size:41%;position:relative;
+ top:.37em;mso-text-raise:-25%'>-</span></div>
+ </div>
+ <v:rect id="_x0000_s25629" style='position:absolute;left:342pt;top:414pt;
+ width:36pt;height:30pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="41" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25629_AllText" v:shape="_x0000_s25629" class=B
+ style='position:absolute;top:77.5%;left:48.5%;width:3.18%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>&#8734;</span></div>
+ </div>
+ <v:rect id="_x0000_s25630" style='position:absolute;left:342pt;top:354pt;
+ width:36pt;height:30pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="43" delay="0" type="object" effect="zoom" direction="out"
+ flag="1028"/></v:rect>
+ <div id="_x0000_s25630_AllText" v:shape="_x0000_s25630" class=B
+ style='position:absolute;top:66.5%;left:48.5%;width:3.18%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>&#8734;</span></div>
+ </div>
+ <v:rect id="_x0000_s25631" style='position:absolute;left:366pt;top:5in;
+ width:78pt;height:126pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="38" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25631_AllText" v:shape="_x0000_s25631" class=B
+ style='position:absolute;top:68.25%;left:51.87%;width:8.98%;height:14.0%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:206%'>&#8747;</span><span style='font-size:41%;position:relative;
+ top:.37em;mso-text-raise:-25%'>-</span></div>
+ </div>
+ <v:rect id="_x0000_s25632" style='position:absolute;left:384pt;top:414pt;
+ width:36pt;height:30pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="40" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25632_AllText" v:shape="_x0000_s25632" class=B
+ style='position:absolute;top:77.5%;left:54.3%;width:3.18%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>&#8734;</span></div>
+ </div>
+ <v:rect id="_x0000_s25633" style='position:absolute;left:384pt;top:354pt;
+ width:36pt;height:30pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="39" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25633_AllText" v:shape="_x0000_s25633" class=B
+ style='position:absolute;top:66.5%;left:54.3%;width:3.18%;height:4.5%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:63%'>&#8734;</span></div>
+ </div>
+ <v:line id="_x0000_s25634" style='position:absolute' from="630pt,5in" to="630pt,456pt"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="31" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25634"
+ src="slide0022_image164.gif" style='position:absolute;top:66.5%;left:87.45%;
+ width:.37%;height:18.25%'><![endif]><v:line id="_x0000_s25635" style='position:absolute'
+ from="630pt,456pt" to="708pt,456pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="32" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25635"
+ src="slide0022_image165.gif" style='position:absolute;top:84.5%;left:87.45%;
+ width:11.23%;height:.5%'><![endif]><v:line id="_x0000_s25636" style='position:absolute'
+ from="708pt,396pt" to="708pt,456pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="33" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25636"
+ src="slide0022_image166.gif" style='position:absolute;top:73.25%;left:98.31%;
+ width:.37%;height:11.75%'><![endif]><v:line id="_x0000_s25637" style='position:absolute'
+ from="660pt,5in" to="660pt,396pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="34" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25637"
+ src="slide0022_image167.gif" style='position:absolute;top:66.5%;left:91.57%;
+ width:.37%;height:7.25%'><![endif]><v:line id="_x0000_s25638" style='position:absolute'
+ from="660pt,396pt" to="708pt,396pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="35" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25638"
+ src="slide0022_image168.gif" style='position:absolute;top:73.25%;left:91.57%;
+ width:7.11%;height:.5%'><![endif]><v:line id="_x0000_s25639" style='position:absolute'
+ from="630pt,5in" to="660pt,5in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ <p:animation number="36" delay="0" type="object" effect="zoom" direction="out"
+ flag="16388"/></v:line><![if !vml]><img border=0 v:shapes="_x0000_s25639"
+ src="slide0022_image169.gif" style='position:absolute;top:66.5%;left:87.45%;
+ width:4.49%;height:.5%'><![endif]><v:rect id="_x0000_s25640" style='position:absolute;
+ left:522pt;top:384pt;width:138pt;height:48pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ <p:animation number="37" delay="0" type="object" effect="zoom" direction="out"
+ flag="4"/></v:rect>
+ <div id="_x0000_s25640_AllText" v:shape="_x0000_s25640" class=B
+ style='position:absolute;top:72.25%;left:73.59%;width:17.41%;height:6.75%;
+ white-space:nowrap'>
+ <div style='position:absolute;top:0%;left:0%;width:100.0%;height:100.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span>dxdy =</div>
+ </div>
+</p:slide></div>
+
+<p:animation number="1423318258"/><oa:par id="TimeNode0" dur="indefinite"
+ restart="never" p:nodeType="timingRoot">
+ <oa:seq id="TimeNode1" dur="indefinite" prev="document.onpptprev"
+ next="document.onpptnext" concurrent="enabled" nextAction="seek"
+ p:nodeType="mainSeq">
+ <oa:par id="TimeNode2" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode3" begin="0.0" fill="hold">
+ <oa:par id="TimeNode4" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode5" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25603_0_45" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode6" dur="0.5"
+ targetElement="_x0000_s25603_0_45" transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode7" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode8" begin="0.0" fill="hold">
+ <oa:par id="TimeNode9" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode10" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25603_45_235" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode11" dur="0.5"
+ targetElement="_x0000_s25603_45_235" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode12" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode13" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25604" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode14" dur="0.5" targetElement="_x0000_s25604"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode15" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode16" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25604_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode17" dur="0.5"
+ targetElement="_x0000_s25604_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode18" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode19" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25605" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode20" dur="0.5" targetElement="_x0000_s25605"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode21" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode22" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25605_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode23" dur="0.5"
+ targetElement="_x0000_s25605_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode24" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode25" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25606" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode26" dur="0.5" targetElement="_x0000_s25606"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode27" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode28" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25606_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode29" dur="0.5"
+ targetElement="_x0000_s25606_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode30" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode31" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25607" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode32" dur="0.5" targetElement="_x0000_s25607"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode33" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode34" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25607_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode35" dur="0.5"
+ targetElement="_x0000_s25607_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode36" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode37" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25608" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode38" dur="0.5" targetElement="_x0000_s25608"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode39" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode40" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25608_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode41" dur="0.5"
+ targetElement="_x0000_s25608_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode42" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode43" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25609" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode44" dur="0.5" targetElement="_x0000_s25609"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode45" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode46" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25609_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode47" dur="0.5"
+ targetElement="_x0000_s25609_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode48" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode49" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25627" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode50" dur="0.5" targetElement="_x0000_s25627"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode51" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode52" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25627_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode53" dur="0.5"
+ targetElement="_x0000_s25627_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ <oa:par id="TimeNode54" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode55" begin="0.0" fill="hold">
+ <oa:par id="TimeNode56" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode57" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25603_235_305" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode58" dur="0.5"
+ targetElement="_x0000_s25603_235_305" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode59" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode60" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25610" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode61" dur="0.5" targetElement="_x0000_s25610"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode62" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode63" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25611" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode64" dur="0.5" targetElement="_x0000_s25611"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode65" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode66" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25612" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode67" dur="0.5" targetElement="_x0000_s25612"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode68" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode69" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25613" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode70" dur="0.5" targetElement="_x0000_s25613"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode71" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode72" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25614" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode73" dur="0.5" targetElement="_x0000_s25614"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode74" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode75" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25615" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode76" dur="0.5" targetElement="_x0000_s25615"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode77" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode78" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25615_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode79" dur="0.5"
+ targetElement="_x0000_s25615_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode80" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode81" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25616" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode82" dur="0.5" targetElement="_x0000_s25616"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode83" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode84" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25616_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode85" dur="0.5"
+ targetElement="_x0000_s25616_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode86" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode87" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25617" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode88" dur="0.5" targetElement="_x0000_s25617"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode89" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode90" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25617_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode91" dur="0.5"
+ targetElement="_x0000_s25617_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode92" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode93" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25618" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode94" dur="0.5" targetElement="_x0000_s25618"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode95" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode96" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25618_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode97" dur="0.5"
+ targetElement="_x0000_s25618_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ <oa:par id="TimeNode98" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode99" begin="0.0" fill="hold">
+ <oa:par id="TimeNode100" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode101" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25603_305_366" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode102" dur="0.5"
+ targetElement="_x0000_s25603_305_366" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode103" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode104" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25619" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode105" dur="0.5" targetElement="_x0000_s25619"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode106" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode107" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25620" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode108" dur="0.5" targetElement="_x0000_s25620"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode109" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode110" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25621" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode111" dur="0.5" targetElement="_x0000_s25621"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode112" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode113" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25622" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode114" dur="0.5" targetElement="_x0000_s25622"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode115" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode116" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25623" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode117" dur="0.5" targetElement="_x0000_s25623"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode118" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode119" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25625" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode120" dur="0.5" targetElement="_x0000_s25625"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode121" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode122" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25625_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode123" dur="0.5"
+ targetElement="_x0000_s25625_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode124" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode125" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25626" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode126" dur="0.5" targetElement="_x0000_s25626"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode127" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode128" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25626_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode129" dur="0.5"
+ targetElement="_x0000_s25626_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode130" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode131" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25624" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode132" dur="0.5" targetElement="_x0000_s25624"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode133" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode134" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25624_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode135" dur="0.5"
+ targetElement="_x0000_s25624_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ <oa:par id="TimeNode136" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode137" begin="0.0" fill="hold">
+ <oa:par id="TimeNode138" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode139" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25603_366_537" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode140" dur="0.5"
+ targetElement="_x0000_s25603_366_537" transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode141" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode142" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25634" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode143" dur="0.5" targetElement="_x0000_s25634"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode144" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode145" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25635" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode146" dur="0.5" targetElement="_x0000_s25635"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode147" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode148" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25636" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode149" dur="0.5" targetElement="_x0000_s25636"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode150" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode151" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25637" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode152" dur="0.5" targetElement="_x0000_s25637"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode153" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode154" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25638" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode155" dur="0.5" targetElement="_x0000_s25638"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode156" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="withEffect">
+ <oa:set id="TimeNode157" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25639" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode158" dur="0.5" targetElement="_x0000_s25639"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <oa:par id="TimeNode159" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode160" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25640" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode161" dur="0.5" targetElement="_x0000_s25640"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode162" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode163" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25640_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode164" dur="0.5"
+ targetElement="_x0000_s25640_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode165" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode166" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25631" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode167" dur="0.5" targetElement="_x0000_s25631"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode168" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode169" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25631_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode170" dur="0.5"
+ targetElement="_x0000_s25631_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode171" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode172" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25633" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode173" dur="0.5" targetElement="_x0000_s25633"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode174" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode175" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25633_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode176" dur="0.5"
+ targetElement="_x0000_s25633_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode177" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode178" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25632" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode179" dur="0.5" targetElement="_x0000_s25632"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode180" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode181" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25632_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode182" dur="0.5"
+ targetElement="_x0000_s25632_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode183" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode184" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25629" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode185" dur="0.5" targetElement="_x0000_s25629"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode186" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode187" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25629_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode188" dur="0.5"
+ targetElement="_x0000_s25629_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode189" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode190" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25628" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode191" dur="0.5" targetElement="_x0000_s25628"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode192" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode193" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25628_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode194" dur="0.5"
+ targetElement="_x0000_s25628_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]><oa:par id="TimeNode195" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" o:groupID="0"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode196" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25630" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode197" dur="0.5" targetElement="_x0000_s25630"
+ transition="in" filter="box(in)"/>
+ </oa:par>
+ <![if !ppt]><oa:par id="TimeNode198" o:presetID="ppt_4"
+ o:presetClass="entrance" o:presetSubType="0x10" begin="0.0" fill="hold"
+ p:nodeType="withEffect">
+ <oa:set id="TimeNode199" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s25630_AllText" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode200" dur="0.5"
+ targetElement="_x0000_s25630_AllText" transition="in" filter="box(in)"/>
+ </oa:par>
+ <![endif]></oa:par>
+ </oa:par>
+ </oa:seq>
+</oa:par>
+<![if ppt]>
+<oa:buildParagraph targetElement="_x0000_s25604" groupID="0" build="asAWhole"
+ buildLevel="1" alsoAnimate="background" reverse="false" buildAdvance="onclick"
+ userSetAnimBgd="false"/><oa:buildParagraph targetElement="_x0000_s25605"
+ groupID="0" build="asAWhole" buildLevel="1" alsoAnimate="background"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25606" groupID="0" build="asAWhole" buildLevel="1"
+ alsoAnimate="background" reverse="false" buildAdvance="onclick"
+ userSetAnimBgd="false"/><oa:buildParagraph targetElement="_x0000_s25607"
+ groupID="0" build="asAWhole" buildLevel="1" alsoAnimate="background"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25608" groupID="0" build="asAWhole" buildLevel="1"
+ alsoAnimate="background" reverse="false" buildAdvance="onclick"
+ userSetAnimBgd="false"/><oa:buildParagraph targetElement="_x0000_s25609"
+ groupID="0" build="asAWhole" buildLevel="1" alsoAnimate="background"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25615" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25616" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25617" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25618" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25624" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25625" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25626" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25627" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25628" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25629" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25630" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25631" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25632" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25633" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/><oa:buildParagraph
+ targetElement="_x0000_s25640" groupID="0" build="asAWhole" buildLevel="1"
+ reverse="false" buildAdvance="onclick" userSetAnimBgd="false"/>
+<![endif]>
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image148.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image149.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image150.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image151.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image152.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image153.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image154.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image155.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image156.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image157.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image158.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image159.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image160.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image161.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image162.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image163.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image164.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image165.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image166.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image167.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image168.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0022_image169.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,526 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: 1D Boolean OR Operation Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<!--[if gte IE 5]>
+<object id=MSOANIM classid="CLSID:A4639D2F-774E-11D3-A490-00C04F6843FB"></object>
+<object id=MSOTIME classid="CLSID:A4639D29-774E-11D3-A490-00C04F6843FB"></object>
+<![endif]-->
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<style>
+<!--
+oa\:* { BEHAVIOR: url(#MSOANIM#ANIM) url(#MSOTIME#TIME) }
+oa\:par,oa\:seq,oa\:iterate { BEHAVIOR:url(#MSOTIME) }
+oa\:video,oa\:audio {BEHAVIOR:url(#MSOTIME) url(#MSOTIME#MEDIA) }
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><script><!--
+g_animItemsToHide=new Array("_x0000_s26627_478_608","_x0000_s26627_397_478","_x0000_s26627_333_397","_x0000_s26627_251_333","_x0000_s26627_204_251","_x0000_s26627_139_204","_x0000_s26627_0_139");
+
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="26"/>
+ <o:regrouptable v:ext="edit">
+ <o:entry new="1" old="0"/>
+ </o:regrouptable>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()" oa:clockstart="onstart">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>23</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s26626"
+ type="#_x0000_m1026" style='position:absolute;left:0;top:21.625pt;width:10in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape>
+ <div v:shape="_x0000_s26626" class=T style='position:absolute;top:8.0%;
+ left:-8.05%;width:116.47%;height:9.25%'>1D Boolean OR Operation Example</div>
+ <p:shaperange href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s26627"
+ type="#_x0000_m1027" style='position:absolute;left:12pt;top:108pt;width:708pt;
+ height:258pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/><p:animation number="2" delay="0"
+ type="object" effect="zoom" direction="out" flag="17408"/></v:shape>
+ <div v:shape="_x0000_s26627" style='position:absolute;top:20.25%;left:2.62%;
+ width:113.67%;height:42.75%'>
+ <div id="_x0000_s26627_0_139" class=B style='mso-line-spacing:"80 20 0";
+ position:absolute;top:0%;left:0%;width:97.52%;height:18.71%;white-space:nowrap'><span
+ style='position:absolute;top:0%;left:3.37%;width:96.62%;height:56.25%'><span
+ style='font-size:63%'><span style='mso-special-format:bullet;position:absolute;
+ left:-3.49%'>•</span></span><span style='font-size:63%'>We want a data model
+ for polygons that can provide the input for sweep-</span></span><span
+ style='position:absolute;top:43.75%;left:3.37%;width:87.66%;height:56.25%'><span
+ style='font-size:63%'>line and be constructed from n polygon verticies in O(n
+ log n) time&#13;</span></span></div>
+ <div id="_x0000_s26627_139_204" class=B style='mso-line-spacing:"80 20 0";
+ position:absolute;top:18.71%;left:0%;width:84.84%;height:10.52%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:3.88%;width:96.11%;
+ height:100.0%'><span style='font-size:63%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.04%'>•</span></span><span style='font-size:
+ 63%'>If you want to sum two piece-wise linear functions (continuous) &#13;</span></span></div>
+ <div id="_x0000_s26627_204_251" class=B1 style='mso-line-spacing:"80 20 0";
+ position:absolute;top:29.23%;left:4.44%;width:80.56%;height:9.35%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:3.47%;width:96.52%;
+ height:100.0%'><span style='font-size:64%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.6%'>–</span></span><span style='font-size:
+ 64%'>you can take the derivative of each (discreet)&#13;</span></span></div>
+ <div id="_x0000_s26627_251_333" class=B1 style='mso-line-spacing:"80 20 0";
+ position:absolute;top:38.59%;left:4.44%;width:87.47%;height:16.95%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:3.2%;width:96.98%;
+ height:55.17%'><span style='font-size:64%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.3%'>–</span></span><span style='font-size:
+ 64%'>combine their derivatives in linear time by merging (sum any overlapping </span></span><span
+ style='position:absolute;top:41.37%;left:3.2%;width:88.88%;height:55.17%'><span
+ style='font-size:64%'>values) &#13;</span></span></div>
+ <div id="_x0000_s26627_333_397" class=B1 style='mso-line-spacing:"80 20 0";
+ position:absolute;top:54.97%;left:4.44%;width:80.56%;height:9.35%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:3.47%;width:96.52%;
+ height:100.0%'><span style='font-size:64%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.6%'>–</span></span><span style='font-size:
+ 64%'>and then integrate by summing from low to high (in linear time)&#13;</span></span></div>
+ <div id="_x0000_s26627_397_478" class=B style='mso-line-spacing:"80 20 0";
+ position:absolute;top:64.32%;left:0%;width:94.56%;height:18.71%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:3.48%;width:96.51%;
+ height:56.25%'><span style='font-size:63%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.61%'>•</span></span><span style='font-size:
+ 63%'>The math is what allows the boolean algorithm to achieve optimal time </span></span><span
+ style='position:absolute;top:46.87%;left:3.48%;width:86.23%;height:56.25%'><span
+ style='font-size:63%'>complexity&#13;</span></span></div>
+ <div id="_x0000_s26627_478_608" class=B1 style='mso-line-spacing:"80 20 0";
+ position:absolute;top:83.04%;left:4.44%;width:95.55%;height:16.95%;white-space:
+ nowrap'><span style='position:absolute;top:0%;left:2.93%;width:97.24%;
+ height:55.17%'><span style='font-size:64%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.01%'>–</span></span><span style='font-size:
+ 64%'>All we do is sort vertices, but you have to carry the dxdy values along
+ with them </span></span><span style='position:absolute;top:44.82%;left:2.93%;
+ width:81.37%;height:55.17%'><span style='font-size:64%'>so that the meaning of
+ the vertices is retained</span></span></div>
+ </div>
+ <v:line id="_x0000_s26628" style='position:absolute' from="6pt,398.625pt"
+ to="33.375pt,398.625pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26628"
+ src="slide0023_image170.gif" style='position:absolute;top:73.75%;left:.74%;
+ width:4.3%;height:.5%'><![endif]><v:line id="_x0000_s26629" style='position:absolute;
+ flip:y' from="33.375pt,372pt" to="33.375pt,398.625pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26629"
+ src="slide0023_image171.gif" style='position:absolute;top:68.75%;left:4.49%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26630" style='position:absolute'
+ from="33.375pt,372pt" to="88.125pt,372pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26630"
+ src="slide0023_image172.gif" style='position:absolute;top:68.75%;left:4.49%;
+ width:8.05%;height:.5%'><![endif]><v:line id="_x0000_s26631" style='position:absolute'
+ from="88.125pt,398.625pt" to="124.625pt,398.625pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26631"
+ src="slide0023_image173.gif" style='position:absolute;top:73.75%;left:12.17%;
+ width:5.43%;height:.5%'><![endif]><v:line id="_x0000_s26632" style='position:absolute;
+ flip:y' from="88.125pt,372pt" to="88.125pt,398.625pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26632"
+ src="slide0023_image174.gif" style='position:absolute;top:68.75%;left:12.17%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26633" style='position:absolute'
+ from="6pt,460.5pt" to="51.625pt,460.5pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26633"
+ src="slide0023_image175.gif" style='position:absolute;top:85.25%;left:.74%;
+ width:6.74%;height:.5%'><![endif]><v:line id="_x0000_s26634" style='position:absolute;
+ flip:y' from="51.625pt,434pt" to="51.625pt,460.5pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26634"
+ src="slide0023_image176.gif" style='position:absolute;top:80.25%;left:7.11%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26635" style='position:absolute'
+ from="51.625pt,434pt" to="106.375pt,434pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26635"
+ src="slide0023_image177.gif" style='position:absolute;top:80.25%;left:7.11%;
+ width:8.05%;height:.5%'><![endif]><v:line id="_x0000_s26636" style='position:absolute'
+ from="106.375pt,460.5pt" to="124.625pt,460.5pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26636"
+ src="slide0023_image178.gif" style='position:absolute;top:85.25%;left:14.79%;
+ width:2.99%;height:.5%'><![endif]><v:line id="_x0000_s26637" style='position:absolute;
+ flip:y' from="106.375pt,434pt" to="106.375pt,460.5pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s26638" style='position:absolute;left:47pt;top:403pt;
+ width:54.75pt;height:35.375pt' o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s26639" style='position:absolute;left:115.5pt;
+ top:403pt;width:54.75pt;height:35.375pt' o:regroupid="1" filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s26637"
+ src="slide0023_image179.gif" style='position:absolute;top:80.25%;left:14.79%;
+ width:.37%;height:5.5%'><![endif]>
+ <div v:shape="_x0000_s26638" class=B style='position:absolute;top:75.75%;
+ left:7.49%;width:5.8%;height:6.75%'><span style='mso-special-format:nobullet;
+ display:none'>•</span>+</div>
+ <div v:shape="_x0000_s26639" class=B style='position:absolute;top:75.75%;
+ left:17.04%;width:6.36%;height:6.75%'><span style='mso-special-format:nobullet;
+ display:none'>•</span>=&gt;</div>
+ <v:line id="_x0000_s26640" style='position:absolute' from="142.875pt,398.625pt"
+ to="161.125pt,398.625pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26640"
+ src="slide0023_image180.gif" style='position:absolute;top:73.75%;left:19.85%;
+ width:2.99%;height:.5%'><![endif]><v:line id="_x0000_s26641" style='position:absolute;
+ flip:y' from="161.125pt,372pt" to="161.125pt,398.625pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26641"
+ src="slide0023_image181.gif" style='position:absolute;top:68.75%;left:22.28%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26642" style='position:absolute'
+ from="161.125pt,398.625pt" to="215.75pt,398.625pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s26643" style='position:absolute' from="215.75pt,398.625pt"
+ to="247.75pt,398.625pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26642,_x0000_s26643"
+ src="slide0023_image182.gif" style='position:absolute;top:73.75%;left:22.28%;
+ width:12.35%;height:.5%'><![endif]><v:line id="_x0000_s26644" style='position:absolute;
+ flip:y' from="215.75pt,398.625pt" to="215.75pt,425.125pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26644"
+ src="slide0023_image183.gif" style='position:absolute;top:73.75%;left:29.96%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26645" style='position:absolute'
+ from="142.875pt,460.5pt" to="179.25pt,460.5pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26645"
+ src="slide0023_image184.gif" style='position:absolute;top:85.25%;left:19.85%;
+ width:5.43%;height:.5%'><![endif]><v:line id="_x0000_s26646" style='position:absolute;
+ flip:y' from="179.25pt,434pt" to="179.25pt,460.5pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26646"
+ src="slide0023_image185.gif" style='position:absolute;top:80.25%;left:24.9%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26647" style='position:absolute'
+ from="179.25pt,460.5pt" to="234pt,460.5pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s26648" style='position:absolute' from="234pt,460.5pt"
+ to="247.75pt,460.5pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26647,_x0000_s26648"
+ src="slide0023_image186.gif" style='position:absolute;top:85.25%;left:24.9%;
+ width:9.92%;height:.5%'><![endif]><v:line id="_x0000_s26649" style='position:absolute;
+ flip:y' from="234pt,460.5pt" to="234pt,487.125pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s26650" style='position:absolute;left:179.25pt;
+ top:407.375pt;width:54.75pt;height:35.5pt' o:regroupid="1" filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s26649"
+ src="slide0023_image187.gif" style='position:absolute;top:85.25%;left:32.39%;
+ width:.37%;height:5.5%'><![endif]>
+ <div v:shape="_x0000_s26650" class=B style='position:absolute;top:76.5%;
+ left:25.84%;width:5.8%;height:6.75%'><span style='mso-special-format:nobullet;
+ display:none'>•</span>+</div>
+ <v:line id="_x0000_s26651" style='position:absolute' from="266pt,416.25pt"
+ to="302.5pt,416.25pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26651"
+ src="slide0023_image188.gif" style='position:absolute;top:77.0%;left:36.89%;
+ width:5.43%;height:.5%'><![endif]><v:line id="_x0000_s26652" style='position:absolute;
+ flip:y' from="284.25pt,389.75pt" to="284.25pt,416.25pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26652"
+ src="slide0023_image189.gif" style='position:absolute;top:72.0%;left:39.51%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26653" style='position:absolute'
+ from="302.5pt,416.25pt" to="357.125pt,416.25pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s26654" style='position:absolute' from="357.125pt,416.25pt"
+ to="370.875pt,416.25pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26653,_x0000_s26654"
+ src="slide0023_image190.gif" style='position:absolute;top:77.0%;left:41.94%;
+ width:9.92%;height:.5%'><![endif]><v:line id="_x0000_s26655" style='position:absolute;
+ flip:y' from="357.125pt,416.25pt" to="357.125pt,442.875pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s26656" style='position:absolute;left:229.5pt;
+ top:403pt;width:54.75pt;height:35.375pt' o:regroupid="1" filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s26655"
+ src="slide0023_image191.gif" style='position:absolute;top:77.0%;left:49.62%;
+ width:.37%;height:5.5%'><![endif]>
+ <div v:shape="_x0000_s26656" class=B style='position:absolute;top:75.75%;
+ left:32.95%;width:6.36%;height:6.75%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='mso-spacerun:yes'>  </span>=</div>
+ <v:line id="_x0000_s26657" style='position:absolute;flip:y' from="302.5pt,389.75pt"
+ to="302.5pt,416.25pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26657"
+ src="slide0023_image192.gif" style='position:absolute;top:72.0%;left:41.94%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26658" style='position:absolute;
+ flip:y' from="339pt,416.25pt" to="339pt,442.875pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26658"
+ src="slide0023_image193.gif" style='position:absolute;top:77.0%;left:47.0%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26659" style='position:absolute'
+ from="416.5pt,438.375pt" to="434.75pt,438.375pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26659"
+ src="slide0023_image194.gif" style='position:absolute;top:81.0%;left:57.86%;
+ width:2.99%;height:.5%'><![endif]><v:line id="_x0000_s26660" style='position:absolute;
+ flip:y' from="434.75pt,411.875pt" to="434.75pt,438.375pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26660"
+ src="slide0023_image195.gif" style='position:absolute;top:76.25%;left:60.29%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26661" style='position:absolute'
+ from="434.75pt,411.875pt" to="453pt,411.875pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26661"
+ src="slide0023_image196.gif" style='position:absolute;top:76.25%;left:60.29%;
+ width:2.99%;height:.5%'><![endif]><v:line id="_x0000_s26662" style='position:absolute'
+ from="507.75pt,438.375pt" to="521.375pt,438.375pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26662"
+ src="slide0023_image197.gif" style='position:absolute;top:81.0%;left:70.41%;
+ width:2.24%;height:.5%'><![endif]><v:line id="_x0000_s26663" style='position:absolute;
+ flip:y' from="507.75pt,411.875pt" to="507.75pt,438.375pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26663"
+ src="slide0023_image198.gif" style='position:absolute;top:76.25%;left:70.41%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26664" style='position:absolute;
+ flip:y' from="489.5pt,385.25pt" to="489.5pt,411.875pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26664"
+ src="slide0023_image199.gif" style='position:absolute;top:71.25%;left:67.97%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26665" style='position:absolute;
+ flip:x y' from="489.5pt,411.875pt" to="507.75pt,411.875pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s26666" style='position:absolute;left:370.875pt;
+ top:398.625pt;width:54.75pt;height:35.375pt' o:regroupid="1" filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s26665"
+ src="slide0023_image200.gif" style='position:absolute;top:76.25%;left:67.97%;
+ width:2.99%;height:.5%'><![endif]>
+ <div v:shape="_x0000_s26666" class=B style='position:absolute;top:75.0%;
+ left:52.43%;width:6.36%;height:6.75%'><span style='mso-special-format:nobullet;
+ display:none'>•</span>=&gt;</div>
+ <v:line id="_x0000_s26667" style='position:absolute;flip:x y' from="453pt,385.25pt"
+ to="489.5pt,385.25pt" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26667"
+ src="slide0023_image201.gif" style='position:absolute;top:71.25%;left:62.92%;
+ width:5.43%;height:.5%'><![endif]><v:line id="_x0000_s26668" style='position:absolute;
+ flip:y' from="453pt,385.25pt" to="453pt,411.875pt" o:regroupid="1"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26668"
+ src="slide0023_image202.gif" style='position:absolute;top:71.25%;left:62.92%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26670" style='position:absolute'
+ from="568pt,440.625pt" to="586.25pt,440.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26670"
+ src="slide0023_image203.gif" style='position:absolute;top:81.5%;left:78.83%;
+ width:2.99%;height:.5%'><![endif]><v:line id="_x0000_s26671" style='position:absolute;
+ flip:y' from="586.25pt,414.125pt" to="586.25pt,440.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26671"
+ src="slide0023_image204.gif" style='position:absolute;top:76.5%;left:81.46%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26672" style='position:absolute'
+ from="586.25pt,414.125pt" to="604.5pt,414.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26672"
+ src="slide0023_image205.gif" style='position:absolute;top:76.5%;left:81.46%;
+ width:2.99%;height:.5%'><![endif]><v:line id="_x0000_s26673" style='position:absolute'
+ from="659.25pt,440.625pt" to="672.875pt,440.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26673"
+ src="slide0023_image206.gif" style='position:absolute;top:81.5%;left:91.57%;
+ width:2.24%;height:.5%'><![endif]><v:line id="_x0000_s26674" style='position:absolute;
+ flip:y' from="659.25pt,414.125pt" to="659.25pt,440.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26674"
+ src="slide0023_image207.gif" style='position:absolute;top:76.5%;left:91.57%;
+ width:.37%;height:5.5%'><![endif]><v:line id="_x0000_s26676" style='position:absolute;
+ flip:x y' from="641pt,414.125pt" to="659.25pt,414.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s26677" style='position:absolute;left:522.375pt;
+ top:400.875pt;width:54.75pt;height:35.375pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s26678" style='position:absolute;flip:x y' from="604.5pt,414pt"
+ to="641pt,414pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s26676,_x0000_s26678"
+ src="slide0023_image208.gif" style='position:absolute;top:76.5%;left:83.89%;
+ width:8.05%;height:.5%'><![endif]>
+ <div v:shape="_x0000_s26677" class=B style='position:absolute;top:75.25%;
+ left:73.59%;width:6.36%;height:6.75%'><span style='mso-special-format:nobullet;
+ display:none'>•</span>=&gt;</div>
+</p:slide></div>
+
+<p:animation number="1491581727"/><oa:par id="TimeNode0" dur="indefinite"
+ restart="never" p:nodeType="timingRoot">
+ <oa:seq id="TimeNode1" dur="indefinite" prev="document.onpptprev"
+ next="document.onpptnext" concurrent="enabled" nextAction="seek"
+ p:nodeType="mainSeq">
+ <oa:par id="TimeNode2" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode3" begin="0.0" fill="hold">
+ <oa:par id="TimeNode4" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode5" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s26627_0_139" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode6" dur="0.5"
+ targetElement="_x0000_s26627_0_139" transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode7" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode8" begin="0.0" fill="hold">
+ <oa:par id="TimeNode9" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode10" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s26627_139_204" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode11" dur="0.5"
+ targetElement="_x0000_s26627_139_204" transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode12" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode13" begin="0.0" fill="hold">
+ <oa:par id="TimeNode14" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode15" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s26627_204_251" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode16" dur="0.5"
+ targetElement="_x0000_s26627_204_251" transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode17" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode18" begin="0.0" fill="hold">
+ <oa:par id="TimeNode19" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode20" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s26627_251_333" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode21" dur="0.5"
+ targetElement="_x0000_s26627_251_333" transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode22" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode23" begin="0.0" fill="hold">
+ <oa:par id="TimeNode24" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode25" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s26627_333_397" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode26" dur="0.5"
+ targetElement="_x0000_s26627_333_397" transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode27" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode28" begin="0.0" fill="hold">
+ <oa:par id="TimeNode29" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode30" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s26627_397_478" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode31" dur="0.5"
+ targetElement="_x0000_s26627_397_478" transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ <oa:par id="TimeNode32" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode33" begin="0.0" fill="hold">
+ <oa:par id="TimeNode34" o:presetID="ppt_4" o:presetClass="entrance"
+ o:presetSubType="0x10" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode35" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s26627_478_608" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode36" dur="0.5"
+ targetElement="_x0000_s26627_478_608" transition="in" filter="box(in)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ </oa:seq>
+</oa:par>
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image170.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image171.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image172.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image173.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image174.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image175.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image176.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image177.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image178.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image179.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image180.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image181.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image182.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image183.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image184.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image185.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image186.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image187.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image188.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image189.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image190.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image191.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image192.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image193.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image194.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image195.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image196.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image197.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image198.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image199.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image200.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image201.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image202.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image203.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image204.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image205.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image206.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image207.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0023_image208.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,224 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: 2D, Two Layer Boolean XOR Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="30"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>24</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s30722"
+ type="#_x0000_m1026" style='position:absolute;left:0;top:21.625pt;width:10in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s30723" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:270pt;width:9in;height:212.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:line id="_x0000_s30724"
+ style='position:absolute' from="126pt,2in" to="126pt,3in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30724"
+ src="slide0027_image209.gif" style='position:absolute;top:26.5%;left:17.41%;
+ width:.37%;height:14.0%'><![endif]>
+ <div v:shape="_x0000_s30722" class=T style='position:absolute;top:8.5%;
+ left:-6.92%;width:114.04%;height:8.5%'><span style='font-size:91%'>2D, Two
+ Layer Boolean XOR Example</span></div>
+ <div v:shape="_x0000_s30723" class=B style='position:absolute;top:51.0%;
+ left:5.99%;width:88.2%;height:6.75%'><span style='position:absolute;
+ top:0%;left:4.24%;width:95.75%;height:100.0%'><span class=BB style='position:
+ absolute;left:-4.43%'>•</span>XOR an L shape with a rectangle</span></div>
+ <v:line id="_x0000_s30725" style='position:absolute' from="126pt,3in" to="150pt,3in"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30725"
+ src="slide0027_image210.gif" style='position:absolute;top:40.0%;left:17.41%;
+ width:3.74%;height:.5%'><![endif]><v:line id="_x0000_s30726" style='position:absolute'
+ from="150pt,174pt" to="150pt,3in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30726"
+ src="slide0027_image211.gif" style='position:absolute;top:32.25%;left:20.78%;
+ width:.37%;height:8.25%'><![endif]><v:line id="_x0000_s30727" style='position:absolute;
+ flip:x' from="138pt,174pt" to="150pt,174pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30727"
+ src="slide0027_image212.gif" style='position:absolute;top:32.25%;left:19.1%;
+ width:2.05%;height:.5%'><![endif]><v:line id="_x0000_s30728" style='position:absolute'
+ from="138pt,2in" to="138pt,174pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30728"
+ src="slide0027_image213.gif" style='position:absolute;top:26.5%;left:19.1%;
+ width:.37%;height:6.0%'><![endif]><v:line id="_x0000_s30729" style='position:absolute;
+ flip:x' from="126pt,2in" to="138pt,2in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s30730" style='position:absolute;left:174pt;top:174pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s30729"
+ src="slide0027_image214.gif" style='position:absolute;top:26.5%;left:17.41%;
+ width:2.05%;height:.5%'><![endif]>
+ <div v:shape="_x0000_s30730" class=B style='position:absolute;top:33.0%;
+ left:25.09%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>XOR</span></div>
+ <v:rect id="_x0000_s30731" style='position:absolute;left:228pt;top:162pt;
+ width:36pt;height:42pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s30731"
+ src="slide0027_image215.gif" style='position:absolute;top:30.0%;left:31.64%;
+ width:5.43%;height:8.25%'><![endif]><v:line id="_x0000_s30732" style='position:absolute'
+ from="336pt,2in" to="336pt,3in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30732"
+ src="slide0027_image216.gif" style='position:absolute;top:26.5%;left:46.62%;
+ width:.37%;height:14.0%'><![endif]><v:line id="_x0000_s30733" style='position:absolute'
+ from="336pt,3in" to="5in,3in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30733"
+ src="slide0027_image217.gif" style='position:absolute;top:40.0%;left:46.62%;
+ width:3.74%;height:.5%'><![endif]><v:line id="_x0000_s30734" style='position:absolute'
+ from="5in,174pt" to="5in,3in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30734"
+ src="slide0027_image218.gif" style='position:absolute;top:32.25%;left:50.0%;
+ width:.37%;height:8.25%'><![endif]><v:line id="_x0000_s30735" style='position:absolute;
+ flip:x' from="348pt,174pt" to="5in,174pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30735"
+ src="slide0027_image219.gif" style='position:absolute;top:32.25%;left:48.31%;
+ width:2.05%;height:.5%'><![endif]><v:line id="_x0000_s30736" style='position:absolute'
+ from="348pt,2in" to="348pt,174pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30736"
+ src="slide0027_image220.gif" style='position:absolute;top:26.5%;left:48.31%;
+ width:.37%;height:6.0%'><![endif]><v:line id="_x0000_s30737" style='position:absolute;
+ flip:x' from="336pt,2in" to="348pt,2in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s30738" style='position:absolute;left:348pt;top:162pt;
+ width:36pt;height:42pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s30737,_x0000_s30738"
+ src="slide0027_image221.gif" style='position:absolute;top:26.5%;left:46.62%;
+ width:7.11%;height:11.75%'><![endif]><v:line id="_x0000_s30739" style='position:absolute'
+ from="426pt,2in" to="426pt,3in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30739"
+ src="slide0027_image222.gif" style='position:absolute;top:26.5%;left:59.17%;
+ width:.37%;height:14.0%'><![endif]><v:line id="_x0000_s30740" style='position:absolute'
+ from="426pt,3in" to="450pt,3in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30740"
+ src="slide0027_image223.gif" style='position:absolute;top:40.0%;left:59.17%;
+ width:3.74%;height:.5%'><![endif]><v:line id="_x0000_s30741" style='position:absolute'
+ from="450pt,174pt" to="450pt,3in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30741"
+ src="slide0027_image224.gif" style='position:absolute;top:32.25%;left:62.35%;
+ width:.37%;height:8.25%'><![endif]><v:line id="_x0000_s30742" style='position:absolute;
+ flip:x' from="438pt,174pt" to="450pt,174pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30742"
+ src="slide0027_image225.gif" style='position:absolute;top:32.25%;left:60.86%;
+ width:2.05%;height:.5%'><![endif]><v:line id="_x0000_s30743" style='position:absolute'
+ from="438pt,2in" to="438pt,162pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30743"
+ src="slide0027_image226.gif" style='position:absolute;top:26.5%;left:60.86%;
+ width:.37%;height:4.0%'><![endif]><v:line id="_x0000_s30744" style='position:absolute;
+ flip:x' from="426pt,2in" to="438pt,2in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s30745" style='position:absolute;left:384pt;top:168pt;
+ width:42pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s30744"
+ src="slide0027_image227.gif" style='position:absolute;top:26.5%;left:59.17%;
+ width:2.05%;height:.5%'><![endif]>
+ <div v:shape="_x0000_s30745" class=B style='position:absolute;top:32.0%;
+ left:54.3%;width:3.93%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>=</span></div>
+ <v:line id="_x0000_s30746" style='position:absolute;flip:x' from="438pt,162pt"
+ to="474pt,162pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30746"
+ src="slide0027_image228.gif" style='position:absolute;top:30.0%;left:60.86%;
+ width:5.43%;height:.5%'><![endif]><v:line id="_x0000_s30747" style='position:absolute;
+ flip:x' from="438pt,204pt" to="474pt,204pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30747"
+ src="slide0027_image229.gif" style='position:absolute;top:37.75%;left:60.86%;
+ width:5.43%;height:.5%'><![endif]><v:line id="_x0000_s30748" style='position:absolute;
+ flip:x y' from="438pt,174pt" to="438pt,204pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30748"
+ src="slide0027_image230.gif" style='position:absolute;top:32.25%;left:60.86%;
+ width:.37%;height:6.0%'><![endif]><v:line id="_x0000_s30749" style='position:absolute'
+ from="474pt,162pt" to="474pt,204pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s30749"
+ src="slide0027_image231.gif" style='position:absolute;top:30.0%;left:65.73%;
+ width:.37%;height:8.25%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image209.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image210.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image211.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image212.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image213.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image214.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image215.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image216.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image217.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image218.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image219.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image220.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image221.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image222.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image223.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image224.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image225.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image226.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image227.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image228.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image229.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image230.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0027_image231.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,487 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: XOR Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="31"/>
+ <o:rules v:ext="edit">
+ <o:r id="V:Rule1" type="connector" idref="#_x0000_s31756">
+ <o:proxy end="" idref="#_x0000_s31755" connectloc="1"/>
+ </o:r>
+ <o:r id="V:Rule2" type="connector" idref="#_x0000_s31757"/>
+ <o:r id="V:Rule3" type="connector" idref="#_x0000_s31759">
+ <o:proxy end="" idref="#_x0000_s31758" connectloc="1"/>
+ </o:r>
+ <o:r id="V:Rule4" type="connector" idref="#_x0000_s31760"/>
+ <o:r id="V:Rule5" type="connector" idref="#_x0000_s31762">
+ <o:proxy end="" idref="#_x0000_s31761" connectloc="1"/>
+ </o:r>
+ <o:r id="V:Rule6" type="connector" idref="#_x0000_s31763"/>
+ </o:rules>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>25</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s31746"
+ type="#_x0000_m1026" style='position:absolute;left:48pt;top:18pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s31747" type="#_x0000_m1027"
+ style='position:absolute;left:30pt;top:270pt;width:9in;height:212.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:line id="_x0000_s31748"
+ style='position:absolute' from="150pt,114pt" to="150pt,186pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s31748"
+ src="slide0028_image232.gif" style='position:absolute;top:21.0%;left:20.78%;
+ width:.37%;height:14.0%'><![endif]>
+ <div v:shape="_x0000_s31746" class=T style='position:absolute;top:7.24%;
+ left:7.67%;width:88.2%;height:9.25%'>XOR Example</div>
+ <div v:shape="_x0000_s31747" class=B><span style='position:absolute;
+ top:51.0%;left:8.98%;width:98.5%;height:6.75%'><span class=BB
+ style='position:absolute;left:-3.8%'>•</span>Preprocess input polygons into a
+ merged, </span><span style='position:absolute;top:58.25%;left:8.98%;
+ width:100.74%;height:6.75%'>sorted sequence of change on y of change </span><span
+ style='position:absolute;top:65.25%;left:8.98%;width:84.45%;height:6.75%'>on x
+ of polygon intersection count&#13;</span><span style='position:absolute;
+ top:73.75%;left:8.98%;width:91.38%;height:6.75%'><span class=BB
+ style='position:absolute;left:-4.09%'>•</span>Decomposition is linear, sort is
+ n log n, </span><span style='position:absolute;top:81.0%;left:8.98%;
+ width:84.45%;height:6.75%'>merge is linear</span></div>
+ <v:line id="_x0000_s31749" style='position:absolute' from="150pt,186pt" to="174pt,186pt"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s31749"
+ src="slide0028_image233.gif" style='position:absolute;top:34.5%;left:20.78%;
+ width:3.74%;height:.5%'><![endif]><v:line id="_x0000_s31750" style='position:absolute'
+ from="174pt,2in" to="174pt,186pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s31750"
+ src="slide0028_image234.gif" style='position:absolute;top:26.5%;left:24.15%;
+ width:.37%;height:8.25%'><![endif]><v:line id="_x0000_s31751" style='position:absolute;
+ flip:x' from="162pt,2in" to="174pt,2in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s31751"
+ src="slide0028_image235.gif" style='position:absolute;top:26.5%;left:22.47%;
+ width:2.05%;height:.5%'><![endif]><v:line id="_x0000_s31752" style='position:absolute'
+ from="162pt,114pt" to="162pt,2in" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s31752"
+ src="slide0028_image236.gif" style='position:absolute;top:21.0%;left:22.47%;
+ width:.37%;height:6.0%'><![endif]><v:line id="_x0000_s31753" style='position:absolute;
+ flip:x' from="150pt,114pt" to="162pt,114pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s31753"
+ src="slide0028_image237.gif" style='position:absolute;top:21.0%;left:20.78%;
+ width:2.05%;height:.5%'><![endif]><v:rect id="_x0000_s31754" style='position:absolute;
+ left:138pt;top:222pt;width:36pt;height:42pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s31754"
+ src="slide0028_image238.gif" style='position:absolute;top:41.0%;left:19.1%;
+ width:5.43%;height:8.25%'><![endif]><v:shapetype id="_x0000_t13" coordsize="21600,21600"
+ o:spt="13" adj="16200,5400" path="m_at_0,l_at_0@1,0_at_1,0_at_2@0_at_2@0,21600,21600,10800xe">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="val #0"/>
+ <v:f eqn="val #1"/>
+ <v:f eqn="sum height 0 #1"/>
+ <v:f eqn="sum 10800 0 #1"/>
+ <v:f eqn="sum width 0 #0"/>
+ <v:f eqn="prod @4 @3 10800"/>
+ <v:f eqn="sum width 0 @5"/>
+ </v:formulas>
+ <v:path o:connecttype="custom" o:connectlocs="@0,0;0,10800;@0,21600;21600,10800"
+ o:connectangles="270,180,90,0" textboxrect="0,@1,@6,@2"/>
+ <v:handles>
+ <v:h position="#0,#1" xrange="0,21600" yrange="0,10800"/>
+ </v:handles>
+ </v:shapetype><v:shape id="_x0000_s31755" type="#_x0000_t13" style='position:absolute;
+ left:198pt;top:120pt;width:84pt;height:66pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s31755"
+ src="slide0028_image239.gif" style='position:absolute;top:22.0%;left:27.52%;
+ width:12.17%;height:13.0%'><![endif]>
+ <div v:shape="_x0000_s31755" class=O>
+ <div style='text-align:center;position:absolute;top:26.25%;left:27.71%;
+ width:10.11%;height:2.25%'><span style='font-size:56%'><b>Decompose &#13;</b></span></div>
+ <div style='text-align:center;position:absolute;top:28.49%;left:28.65%;
+ width:8.42%;height:2.25%'><span style='font-size:56%;mso-special-format:lastCR;
+ display:none'><b>&#13;</b></span></div>
+ </div>
+ <v:shapetype id="_x0000_t32" coordsize="21600,21600" o:spt="32" o:oned="t"
+ path="m,l21600,21600e" filled="f">
+ <v:path arrowok="t" fillok="f" o:connecttype="none"/>
+ <o:lock v:ext="edit" shapetype="t"/>
+ </v:shapetype><v:shape id="_x0000_s31756" type="#_x0000_t32" style='position:absolute;
+ left:186pt;top:153pt;width:12pt;height:3pt;flip:y' o:connectortype="straight"
+ strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s31756"
+ src="slide0028_image240.gif" style='position:absolute;top:27.75%;left:25.84%;
+ width:2.24%;height:1.75%'><![endif]><v:shape id="_x0000_s31757" type="#_x0000_t32"
+ style='position:absolute;left:282pt;top:153pt;width:12pt;height:3pt'
+ o:connectortype="straight" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><v:shape id="_x0000_s31758" type="#_x0000_t13" style='position:absolute;
+ left:198pt;top:204pt;width:84pt;height:66pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s31757,_x0000_s31758"
+ src="slide0028_image241.gif" style='position:absolute;top:28.24%;left:27.52%;
+ width:13.85%;height:22.25%'><![endif]>
+ <div v:shape="_x0000_s31758" class=O>
+ <div style='text-align:center;position:absolute;top:41.75%;left:27.71%;
+ width:10.11%;height:2.25%'><span style='font-size:56%'><b>Decompose &#13;</b></span></div>
+ <div style='text-align:center;position:absolute;top:44.0%;left:28.65%;
+ width:8.42%;height:2.25%'><span style='font-size:56%;mso-special-format:lastCR;
+ display:none'><b>&#13;</b></span></div>
+ </div>
+ <v:shape id="_x0000_s31759" type="#_x0000_t32" style='position:absolute;
+ left:186pt;top:237pt;width:12pt;height:3pt;flip:y' o:connectortype="straight"
+ strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s31759"
+ src="slide0028_image242.gif" style='position:absolute;top:43.25%;left:25.84%;
+ width:2.24%;height:1.75%'><![endif]><v:shape id="_x0000_s31760" type="#_x0000_t32"
+ style='position:absolute;left:282pt;top:237pt;width:12pt;height:3pt'
+ o:connectortype="straight" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s31760"
+ src="slide0028_image243.gif" style='position:absolute;top:43.75%;left:39.13%;
+ width:2.24%;height:1.75%'><![endif]><v:shape id="_x0000_s31761" type="#_x0000_t13"
+ style='position:absolute;left:366pt;top:162pt;width:84pt;height:66pt;
+ mso-wrap-style:none;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s31761"
+ src="slide0028_image244.gif" style='position:absolute;top:29.75%;left:50.74%;
+ width:12.17%;height:13.0%'><![endif]>
+ <div v:shape="_x0000_s31761" class=O>
+ <div style='text-align:center;position:absolute;top:34.0%;left:51.12%;
+ width:10.11%;height:2.25%'><span style='font-size:56%'><b>Merge Input &#13;</b></span></div>
+ <div style='text-align:center;position:absolute;top:36.25%;left:51.87%;
+ width:8.61%;height:2.25%'><span style='font-size:56%'><b>Vertices</b></span></div>
+ </div>
+ <v:shape id="_x0000_s31762" type="#_x0000_t32" style='position:absolute;
+ left:354pt;top:195pt;width:12pt;height:3pt;flip:y' o:connectortype="straight"
+ strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s31762"
+ src="slide0028_image245.gif" style='position:absolute;top:35.5%;left:49.06%;
+ width:2.24%;height:1.75%'><![endif]><v:shape id="_x0000_s31763" type="#_x0000_t32"
+ style='position:absolute;left:450pt;top:195pt;width:12pt;height:3pt'
+ o:connectortype="straight" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s31763"
+ src="slide0028_image246.gif" style='position:absolute;top:36.0%;left:62.35%;
+ width:2.24%;height:1.75%'><![endif]><v:oval id="_x0000_s31764" style='position:absolute;
+ left:300pt;top:114pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31764"
+ src="slide0028_image247.gif" style='position:absolute;top:21.0%;left:41.57%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31764" class=O style='text-align:center;position:absolute;
+ top:20.0%;left:39.32%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31765" style='position:absolute;left:318pt;top:114pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31765"
+ src="slide0028_image248.gif" style='position:absolute;top:21.0%;left:44.19%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31765" class=O style='text-align:center;position:absolute;
+ top:20.0%;left:41.94%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31766" style='position:absolute;left:318pt;top:2in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31766"
+ src="slide0028_image249.gif" style='position:absolute;top:26.5%;left:44.19%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31766" class=O style='text-align:center;position:absolute;
+ top:25.5%;left:41.76%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31767" style='position:absolute;left:336pt;top:2in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31767"
+ src="slide0028_image250.gif" style='position:absolute;top:26.5%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31767" class=O style='text-align:center;position:absolute;
+ top:25.5%;left:44.19%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31768" style='position:absolute;left:300pt;top:174pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31768"
+ src="slide0028_image251.gif" style='position:absolute;top:32.25%;left:41.57%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31768" class=O style='text-align:center;position:absolute;
+ top:31.0%;left:39.32%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31769" style='position:absolute;left:336pt;top:174pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31769"
+ src="slide0028_image252.gif" style='position:absolute;top:32.25%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31769" class=O style='text-align:center;position:absolute;
+ top:31.0%;left:44.38%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31770" style='position:absolute;left:516pt;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31770"
+ src="slide0028_image253.gif" style='position:absolute;top:30.0%;left:71.53%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31770" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:68.91%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31771" style='position:absolute;left:516pt;top:3in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31771"
+ src="slide0028_image254.gif" style='position:absolute;top:40.0%;left:71.53%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31771" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:68.72%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31772" style='position:absolute;left:570pt;top:3in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31772"
+ src="slide0028_image255.gif" style='position:absolute;top:40.0%;left:79.02%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31772" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:76.4%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31773" style='position:absolute;left:570pt;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31773"
+ src="slide0028_image256.gif" style='position:absolute;top:30.0%;left:79.02%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31773" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:76.21%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31774" style='position:absolute;left:474pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31774"
+ src="slide0028_image257.gif" style='position:absolute;top:24.5%;left:65.73%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31774" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:62.92%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31775" style='position:absolute;left:516pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31775"
+ src="slide0028_image258.gif" style='position:absolute;top:24.5%;left:71.53%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31775" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:68.72%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31776" style='position:absolute;left:516pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31776"
+ src="slide0028_image259.gif" style='position:absolute;top:35.5%;left:71.53%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31776" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:68.91%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31777" style='position:absolute;left:540pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31777"
+ src="slide0028_image260.gif" style='position:absolute;top:35.5%;left:74.9%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31777" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:72.09%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31778" style='position:absolute;left:474pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31778"
+ src="slide0028_image261.gif" style='position:absolute;top:42.25%;left:65.73%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31778" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:62.92%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31779" style='position:absolute;left:540pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31779"
+ src="slide0028_image262.gif" style='position:absolute;top:42.25%;left:74.9%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31779" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:72.09%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31780" style='position:absolute;left:306pt;top:210pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31780"
+ src="slide0028_image263.gif" style='position:absolute;top:38.75%;left:42.5%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31780" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:40.26%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31781" style='position:absolute;left:306pt;top:258pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31781"
+ src="slide0028_image264.gif" style='position:absolute;top:47.75%;left:42.5%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31781" class=O style='text-align:center;position:absolute;
+ top:46.5%;left:40.07%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31782" style='position:absolute;left:342pt;top:258pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31782"
+ src="slide0028_image265.gif" style='position:absolute;top:47.75%;left:47.37%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31782" class=O style='text-align:center;position:absolute;
+ top:46.5%;left:45.31%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s31783" style='position:absolute;left:342pt;top:210pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s31783"
+ src="slide0028_image266.gif" style='position:absolute;top:38.75%;left:47.37%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s31783" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:45.13%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image232.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image233.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image234.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image235.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image236.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image237.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image238.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image239.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image240.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image241.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image242.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image243.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image244.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image245.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image246.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image247.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image248.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image249.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image250.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image251.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image252.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image253.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image254.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image255.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image256.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image257.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image258.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image259.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image260.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image261.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image262.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image263.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image264.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image265.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0028_image266.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,221 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: XOR Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="32"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>26</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s32770"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:18pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s32771" type="#_x0000_m1027"
+ style='position:absolute;left:30pt;top:270pt;width:9in;height:212.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:line id="_x0000_s32772"
+ style='position:absolute' from="180pt,108pt" to="180pt,264pt" strokecolor="#9c0">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s32773" style='position:absolute;left:186pt;top:234pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s32772"
+ src="slide0029_image267.gif" style='position:absolute;top:19.25%;left:24.53%;
+ width:1.31%;height:30.5%'><![endif]>
+ <div v:shape="_x0000_s32770" class=T style='position:absolute;top:7.24%;
+ left:5.99%;width:88.2%;height:9.25%'>XOR Example</div>
+ <div v:shape="_x0000_s32771" class=B><span style='position:absolute;
+ top:51.0%;left:8.98%;width:94.38%;height:6.75%'><span class=BB
+ style='position:absolute;left:-3.96%'>•</span>Sweep-line data structure
+ initialized to a </span><span style='position:absolute;top:58.25%;left:8.98%;
+ width:99.81%;height:6.75%'>single interval from -infinity to +infinity with </span><span
+ style='position:absolute;top:65.25%;left:8.98%;width:93.44%;height:6.75%'>intersection
+ count of zero for each input </span><span style='position:absolute;top:72.5%;
+ left:8.98%;width:84.45%;height:6.75%'>layer</span></div>
+ <div v:shape="_x0000_s32773" class=B style='position:absolute;top:44.25%;
+ left:26.77%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <v:oval id="_x0000_s32774" style='position:absolute;left:378pt;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s32774"
+ src="slide0029_image268.gif" style='position:absolute;top:30.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s32774" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s32775" style='position:absolute;left:378pt;top:3in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s32775"
+ src="slide0029_image269.gif" style='position:absolute;top:40.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s32775" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s32776" style='position:absolute;left:6in;top:3in;width:6pt;
+ height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s32776"
+ src="slide0029_image270.gif" style='position:absolute;top:40.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s32776" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:57.11%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s32777" style='position:absolute;left:6in;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s32777"
+ src="slide0029_image271.gif" style='position:absolute;top:30.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s32777" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:56.92%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s32778" style='position:absolute;left:336pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s32778"
+ src="slide0029_image272.gif" style='position:absolute;top:24.5%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s32778" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:43.82%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s32779" style='position:absolute;left:402pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s32779"
+ src="slide0029_image273.gif" style='position:absolute;top:35.5%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s32779" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:52.8%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s32780" style='position:absolute;left:336pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s32780"
+ src="slide0029_image274.gif" style='position:absolute;top:42.25%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s32780" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:43.63%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s32781" style='position:absolute;left:402pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s32781"
+ src="slide0029_image275.gif" style='position:absolute;top:42.25%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s32781" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:52.99%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s32782" style='position:absolute;left:378pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s32782"
+ src="slide0029_image276.gif" style='position:absolute;top:24.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s32782" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s32783" style='position:absolute;left:378pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s32783"
+ src="slide0029_image277.gif" style='position:absolute;top:35.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s32783" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image267.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image268.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image269.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image270.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image271.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image272.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image273.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image274.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image275.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image276.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0029_image277.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,310 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: XOR Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="33"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>27</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s33794"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:24pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s33795" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:270pt;width:9in;height:212.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:line id="_x0000_s33796"
+ style='position:absolute' from="180pt,108pt" to="180pt,264pt" strokecolor="#9c0">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s33797" style='position:absolute;left:186pt;top:234pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s33798" style='position:absolute' from="180pt,138pt"
+ to="180pt,240pt" strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s33799" style='position:absolute;left:186pt;top:198pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s33800" style='position:absolute;left:540pt;top:126pt;
+ width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s33801" style='position:absolute;left:186pt;top:120pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s33796,_x0000_s33798"
+ src="slide0030_image278.gif" style='position:absolute;top:19.25%;left:24.53%;
+ width:1.49%;height:30.5%'><![endif]>
+ <div v:shape="_x0000_s33794" class=T style='position:absolute;top:8.5%;
+ left:5.99%;width:88.2%;height:9.25%'>XOR Example</div>
+ <div v:shape="_x0000_s33795" class=B>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:50.5%;left:9.73%;width:98.12%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.81%'>•</span></span><span
+ style='font-size:75%'>Intersect first input interval of intersection count
+ change </span></span><span style='position:absolute;top:55.25%;left:9.73%;
+ width:93.63%;height:5.25%'><span style='font-size:75%'>on x against sweep-line
+ data structure of intersection </span></span><span style='position:absolute;
+ top:60.0%;left:9.73%;width:84.45%;height:5.25%'><span style='font-size:75%'>count
+ intervals&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:66.0%;left:9.73%;width:95.88%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.9%'>•</span></span><span
+ style='font-size:75%'>Intersection count changes from zero to one on layer1 </span></span><span
+ style='position:absolute;top:70.75%;left:9.73%;width:84.45%;height:5.25%'><span
+ style='font-size:75%'>on that interval&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:76.5%;left:9.73%;width:100.74%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.71%'>•</span></span><span
+ style='font-size:75%'>0 xor 0 = false, 1 xor 0 = true, output a left edge
+ because </span></span><span style='position:absolute;top:81.5%;left:9.73%;
+ width:84.45%;height:5.25%'><span style='font-size:75%'>Boolean logic changed
+ from false to true</span></span></div>
+ </div>
+ <div v:shape="_x0000_s33797" class=B style='position:absolute;top:44.25%;
+ left:26.77%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <div v:shape="_x0000_s33799" class=B style='position:absolute;top:37.5%;
+ left:26.77%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1,0</span></div>
+ <div v:shape="_x0000_s33800" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <div v:shape="_x0000_s33801" class=B style='position:absolute;top:23.0%;
+ left:26.77%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <v:oval id="_x0000_s33802" style='position:absolute;left:378pt;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33802"
+ src="slide0030_image279.gif" style='position:absolute;top:30.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33802" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s33803" style='position:absolute;left:378pt;top:3in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33803"
+ src="slide0030_image280.gif" style='position:absolute;top:40.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33803" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s33804" style='position:absolute;left:6in;top:3in;width:6pt;
+ height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33804"
+ src="slide0030_image281.gif" style='position:absolute;top:40.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33804" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:57.11%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s33805" style='position:absolute;left:6in;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33805"
+ src="slide0030_image282.gif" style='position:absolute;top:30.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33805" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:56.92%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s33806" style='position:absolute;left:336pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33806"
+ src="slide0030_image283.gif" style='position:absolute;top:24.5%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33806" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:43.82%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s33807" style='position:absolute;left:402pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33807"
+ src="slide0030_image284.gif" style='position:absolute;top:35.5%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33807" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:52.8%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s33808" style='position:absolute;left:336pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33808"
+ src="slide0030_image285.gif" style='position:absolute;top:42.25%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33808" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:43.63%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s33809" style='position:absolute;left:402pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33809"
+ src="slide0030_image286.gif" style='position:absolute;top:42.25%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33809" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:52.99%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s33810" style='position:absolute;left:558pt;top:150pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33810"
+ src="slide0030_image287.gif" style='position:absolute;top:27.75%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33810" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:75.28%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s33811" style='position:absolute;left:558pt;top:246pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33811"
+ src="slide0030_image288.gif" style='position:absolute;top:45.5%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33811" class=O style='text-align:center;position:absolute;
+ top:44.25%;left:75.09%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s33812" style='position:absolute' from="336pt,132pt" to="336pt,234pt"
+ strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s33813" style='position:absolute;left:300pt;top:168pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s33812"
+ src="slide0030_image289.gif" style='position:absolute;top:23.75%;left:46.06%;
+ width:1.49%;height:20.75%'><![endif]>
+ <div v:shape="_x0000_s33813" class=B style='position:absolute;top:32.0%;
+ left:42.69%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1,0</span></div>
+ <v:oval id="_x0000_s33814" style='position:absolute;left:378pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33814"
+ src="slide0030_image290.gif" style='position:absolute;top:24.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33814" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s33815" style='position:absolute;left:378pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s33815"
+ src="slide0030_image291.gif" style='position:absolute;top:35.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s33815" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s33816" style='position:absolute' from="558pt,150pt" to="558pt,252pt"
+ strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s33816"
+ src="slide0030_image292.gif" style='position:absolute;top:27.0%;left:76.96%;
+ width:1.49%;height:20.75%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image278.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image279.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image280.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image281.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image282.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image283.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image284.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image285.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image286.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image287.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image288.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image289.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image290.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image291.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0030_image292.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,364 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: XOR Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="34"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>28</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s34818"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s34819" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:270pt;width:9in;height:212.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:line id="_x0000_s34820"
+ style='position:absolute' from="180pt,108pt" to="180pt,264pt" strokecolor="#9c0">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s34821" style='position:absolute;left:180pt;top:246pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s34822" style='position:absolute' from="180pt,132pt"
+ to="180pt,240pt" strokecolor="#9c0">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s34823" style='position:absolute;left:180pt;top:222pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s34824" style='position:absolute;left:540pt;top:126pt;
+ width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s34825" style='position:absolute' from="180pt,198pt"
+ to="180pt,222pt" strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s34826" style='position:absolute;left:180pt;top:2in;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s34827" style='position:absolute;left:180pt;top:198pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s34828" style='position:absolute;left:180pt;top:108pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s34829" style='position:absolute;left:540pt;top:126pt;
+ width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0
+ v:shapes="_x0000_s34820,_x0000_s34822,_x0000_s34825"
+ src="slide0031_image293.gif" style='position:absolute;top:19.25%;left:24.53%;
+ width:1.49%;height:30.5%'><![endif]>
+ <div v:shape="_x0000_s34818" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>XOR Example</div>
+ <div v:shape="_x0000_s34819" class=B>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:50.0%;left:9.73%;width:95.13%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.93%'>•</span></span><span
+ style='font-size:88%'>Intersect second input interval against sweep-</span></span><span
+ style='position:absolute;top:55.0%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>line data structure&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:61.25%;left:9.73%;width:98.12%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.81%'>•</span></span><span
+ style='font-size:88%'>Intersection count changes from zero to one for </span></span><span
+ style='position:absolute;top:66.25%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>layer2 on that interval&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:72.5%;left:9.73%;width:96.06%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.89%'>•</span></span><span
+ style='font-size:88%'>1 xor 0 = true, 1 xor 1 = false, so output a right </span></span><span
+ style='position:absolute;top:77.5%;left:9.73%;width:97.75%;height:6.0%'><span
+ style='font-size:88%'>edge because Boolean logic has changed from </span></span><span
+ style='position:absolute;top:82.25%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>true to false</span></span></div>
+ </div>
+ <div v:shape="_x0000_s34821" class=B style='position:absolute;top:46.5%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <div v:shape="_x0000_s34823" class=B style='position:absolute;top:42.0%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1,0</span></div>
+ <div v:shape="_x0000_s34824" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <div v:shape="_x0000_s34826" class=B style='position:absolute;top:27.5%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1,0</span></div>
+ <div v:shape="_x0000_s34827" class=B style='position:absolute;top:37.5%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1,1</span></div>
+ <div v:shape="_x0000_s34828" class=B style='position:absolute;top:20.75%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <div v:shape="_x0000_s34829" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <v:oval id="_x0000_s34830" style='position:absolute;left:378pt;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34830"
+ src="slide0031_image294.gif" style='position:absolute;top:30.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34830" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34831" style='position:absolute;left:378pt;top:3in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34831"
+ src="slide0031_image295.gif" style='position:absolute;top:40.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34831" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34832" style='position:absolute;left:6in;top:3in;width:6pt;
+ height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34832"
+ src="slide0031_image296.gif" style='position:absolute;top:40.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34832" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:57.11%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34833" style='position:absolute;left:6in;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34833"
+ src="slide0031_image297.gif" style='position:absolute;top:30.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34833" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:56.92%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34834" style='position:absolute;left:336pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34834"
+ src="slide0031_image298.gif" style='position:absolute;top:24.5%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34834" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:43.82%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34835" style='position:absolute;left:402pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34835"
+ src="slide0031_image299.gif" style='position:absolute;top:35.5%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34835" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:52.8%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34836" style='position:absolute;left:336pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34836"
+ src="slide0031_image300.gif" style='position:absolute;top:42.25%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34836" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:43.63%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34837" style='position:absolute;left:402pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34837"
+ src="slide0031_image301.gif" style='position:absolute;top:42.25%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34837" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:52.99%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34838" style='position:absolute;left:582pt;top:210pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s34839" style='position:absolute;left:582pt;top:234pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34838,_x0000_s34839"
+ src="slide0031_image302.gif" style='position:absolute;top:38.75%;left:80.71%;
+ width:1.31%;height:6.0%'><![endif]>
+ <div v:shape="_x0000_s34838" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:78.46%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s34839" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:78.65%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34840" style='position:absolute;left:558pt;top:150pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34840"
+ src="slide0031_image303.gif" style='position:absolute;top:27.75%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34840" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:75.28%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34841" style='position:absolute;left:558pt;top:246pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34841"
+ src="slide0031_image304.gif" style='position:absolute;top:45.5%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34841" class=O style='text-align:center;position:absolute;
+ top:44.25%;left:75.09%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s34842" style='position:absolute' from="378pt,192pt" to="378pt,222pt"
+ strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s34843" style='position:absolute;left:348pt;top:192pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s34842"
+ src="slide0031_image305.gif" style='position:absolute;top:34.75%;left:51.87%;
+ width:1.49%;height:7.5%'><![endif]>
+ <div v:shape="_x0000_s34843" class=B style='position:absolute;top:36.5%;
+ left:49.25%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,1</span></div>
+ <v:oval id="_x0000_s34844" style='position:absolute;left:378pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34844"
+ src="slide0031_image306.gif" style='position:absolute;top:24.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34844" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s34845" style='position:absolute;left:378pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s34845"
+ src="slide0031_image307.gif" style='position:absolute;top:35.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s34845" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s34846" style='position:absolute' from="582pt,210pt" to="582pt,240pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s34846"
+ src="slide0031_image308.gif" style='position:absolute;top:38.25%;left:80.33%;
+ width:1.49%;height:7.5%'><![endif]><v:line id="_x0000_s34847" style='position:absolute'
+ from="558pt,150pt" to="558pt,252pt" strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s34847"
+ src="slide0031_image309.gif" style='position:absolute;top:27.0%;left:76.96%;
+ width:1.49%;height:20.75%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image293.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image294.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image295.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image296.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image297.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image298.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image299.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image300.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image301.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image302.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image303.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image304.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image305.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image306.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image307.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image308.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0031_image309.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,373 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: XOR Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="35"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>29</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s35842"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:24pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s35843" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:270pt;width:9in;height:212.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:rect id="_x0000_s35844"
+ style='position:absolute;left:540pt;top:126pt;width:1in;height:24pt'
+ filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s35845" style='position:absolute;left:540pt;top:126pt;
+ width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:oval id="_x0000_s35846" style='position:absolute;left:378pt;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35846"
+ src="slide0032_image310.gif" style='position:absolute;top:30.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35842" class=T style='position:absolute;top:8.5%;
+ left:5.99%;width:88.2%;height:9.25%'>XOR Example</div>
+ <div v:shape="_x0000_s35843" class=B><span style='position:absolute;
+ top:51.0%;left:9.73%;width:96.44%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-3.88%'>•</span></span><span
+ style='font-size:88%'>Intersect third input interval against sweep-line </span></span><span
+ style='position:absolute;top:57.25%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>data structure&#13;</span></span><span style='position:
+ absolute;top:64.75%;left:9.73%;width:98.12%;height:6.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-3.81%'>•</span></span><span
+ style='font-size:88%'>Intersection count changes from one to zero for </span></span><span
+ style='position:absolute;top:71.0%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>layer1 on that interval&#13;</span></span>
+ <div style='position:absolute;top:78.5%;left:5.99%;width:93.82%;height:6.0%'><span
+ style='position:absolute;top:0%;left:3.99%;width:96.0%;height:100.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-4.15%'>•</span></span><span
+ style='font-size:88%'>1 xor 0 = false, 0 xor 1 = false, so no output</span></span></div>
+ </div>
+ <div v:shape="_x0000_s35844" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <div v:shape="_x0000_s35845" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <div v:shape="_x0000_s35846" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35847" style='position:absolute;left:378pt;top:3in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35847"
+ src="slide0032_image311.gif" style='position:absolute;top:40.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35847" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35848" style='position:absolute;left:6in;top:3in;width:6pt;
+ height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35848"
+ src="slide0032_image312.gif" style='position:absolute;top:40.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35848" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:57.11%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35849" style='position:absolute;left:6in;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35849"
+ src="slide0032_image313.gif" style='position:absolute;top:30.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35849" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:56.92%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35850" style='position:absolute;left:336pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35850"
+ src="slide0032_image314.gif" style='position:absolute;top:24.5%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35850" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:43.82%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35851" style='position:absolute;left:402pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35851"
+ src="slide0032_image315.gif" style='position:absolute;top:35.5%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35851" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:52.8%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35852" style='position:absolute;left:336pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35852"
+ src="slide0032_image316.gif" style='position:absolute;top:42.25%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35852" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:43.63%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35853" style='position:absolute;left:402pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35853"
+ src="slide0032_image317.gif" style='position:absolute;top:42.25%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35853" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:52.99%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35854" style='position:absolute;left:582pt;top:210pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s35855" style='position:absolute;left:582pt;top:234pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35854,_x0000_s35855"
+ src="slide0032_image318.gif" style='position:absolute;top:38.75%;left:80.71%;
+ width:1.31%;height:6.0%'><![endif]>
+ <div v:shape="_x0000_s35854" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:78.65%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s35855" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:78.46%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35856" style='position:absolute;left:558pt;top:150pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35856"
+ src="slide0032_image319.gif" style='position:absolute;top:27.75%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35856" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:75.28%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35857" style='position:absolute;left:558pt;top:246pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35857"
+ src="slide0032_image320.gif" style='position:absolute;top:45.5%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35857" class=O style='text-align:center;position:absolute;
+ top:44.25%;left:75.09%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s35858" style='position:absolute' from="180pt,108pt" to="180pt,264pt"
+ strokecolor="#9c0">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s35859" style='position:absolute;left:180pt;top:246pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s35860" style='position:absolute' from="180pt,132pt"
+ to="180pt,240pt" strokecolor="#9c0">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s35861" style='position:absolute;left:180pt;top:222pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s35862" style='position:absolute' from="180pt,198pt"
+ to="180pt,228pt" strokecolor="#9c0" strokeweight="1pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s35863" style='position:absolute;left:180pt;top:204pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s35864" style='position:absolute;left:180pt;top:108pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0
+ v:shapes="_x0000_s35858,_x0000_s35860,_x0000_s35862"
+ src="slide0032_image321.gif" style='position:absolute;top:19.25%;left:24.53%;
+ width:1.31%;height:30.5%'><![endif]>
+ <div v:shape="_x0000_s35859" class=B style='position:absolute;top:46.5%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <div v:shape="_x0000_s35861" class=B style='position:absolute;top:42.0%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1,0</span></div>
+ <div v:shape="_x0000_s35863" class=B style='position:absolute;top:38.5%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1,1</span></div>
+ <div v:shape="_x0000_s35864" class=B style='position:absolute;top:20.75%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <v:oval id="_x0000_s35865" style='position:absolute;left:378pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35865"
+ src="slide0032_image322.gif" style='position:absolute;top:24.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35865" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s35866" style='position:absolute;left:378pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s35866"
+ src="slide0032_image323.gif" style='position:absolute;top:35.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s35866" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s35867" style='position:absolute' from="582pt,210pt" to="582pt,240pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s35867"
+ src="slide0032_image324.gif" style='position:absolute;top:38.25%;left:80.33%;
+ width:1.49%;height:7.5%'><![endif]><v:line id="_x0000_s35868" style='position:absolute'
+ from="558pt,150pt" to="558pt,252pt" strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s35868"
+ src="slide0032_image325.gif" style='position:absolute;top:27.0%;left:76.96%;
+ width:1.49%;height:20.75%'><![endif]><v:line id="_x0000_s35869" style='position:absolute'
+ from="378pt,168pt" to="378pt,198pt" strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s35870" style='position:absolute;left:348pt;top:168pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s35869"
+ src="slide0032_image326.gif" style='position:absolute;top:30.25%;left:51.87%;
+ width:1.49%;height:7.5%'><![endif]>
+ <div v:shape="_x0000_s35870" class=B style='position:absolute;top:32.0%;
+ left:49.25%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>-1,1</span></div>
+ <v:line id="_x0000_s35871" style='position:absolute' from="180pt,168pt" to="180pt,198pt"
+ strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s35872" style='position:absolute;left:180pt;top:2in;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s35873" style='position:absolute;left:180pt;top:174pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s35871"
+ src="slide0032_image327.gif" style='position:absolute;top:30.25%;left:24.53%;
+ width:1.49%;height:7.5%'><![endif]>
+ <div v:shape="_x0000_s35872" class=B style='position:absolute;top:27.5%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1,0</span></div>
+ <div v:shape="_x0000_s35873" class=B style='position:absolute;top:33.0%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,1</span></div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image310.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image311.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image312.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image313.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image314.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image315.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image316.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image317.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image318.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image319.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image320.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image321.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image322.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image323.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image324.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image325.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image326.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0032_image327.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,391 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: XOR Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="36"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>30</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s36866"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s36867" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:270pt;width:9in;height:212.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:rect id="_x0000_s36868"
+ style='position:absolute;left:540pt;top:126pt;width:1in;height:24pt'
+ filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s36869" style='position:absolute;left:540pt;top:126pt;
+ width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:oval id="_x0000_s36870" style='position:absolute;left:378pt;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36870"
+ src="slide0033_image328.gif" style='position:absolute;top:30.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36866" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>XOR Example</div>
+ <div v:shape="_x0000_s36867" class=B>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:50.0%;left:9.73%;width:99.25%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.77%'>•</span></span><span
+ style='font-size:88%'>Intersect fourth input interval against sweep-line </span></span><span
+ style='position:absolute;top:55.0%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>data structure&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:61.25%;left:9.73%;width:98.12%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.81%'>•</span></span><span
+ style='font-size:88%'>Intersection count changes from one to zero for </span></span><span
+ style='position:absolute;top:66.25%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>layer1 on one interval&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:72.5%;left:9.73%;width:96.06%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.89%'>•</span></span><span
+ style='font-size:88%'>1 xor 0 = true, 0 xor 0 = false, so output a right </span></span><span
+ style='position:absolute;top:77.5%;left:9.73%;width:97.75%;height:6.0%'><span
+ style='font-size:88%'>edge because Boolean logic has changed from </span></span><span
+ style='position:absolute;top:82.25%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>true to false</span></span></div>
+ </div>
+ <div v:shape="_x0000_s36868" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <div v:shape="_x0000_s36869" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <div v:shape="_x0000_s36870" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36871" style='position:absolute;left:378pt;top:3in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36871"
+ src="slide0033_image329.gif" style='position:absolute;top:40.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36871" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36872" style='position:absolute;left:6in;top:3in;width:6pt;
+ height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36872"
+ src="slide0033_image330.gif" style='position:absolute;top:40.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36872" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:57.11%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36873" style='position:absolute;left:6in;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36873"
+ src="slide0033_image331.gif" style='position:absolute;top:30.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36873" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:56.92%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36874" style='position:absolute;left:336pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36874"
+ src="slide0033_image332.gif" style='position:absolute;top:24.5%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36874" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:43.82%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36875" style='position:absolute;left:402pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36875"
+ src="slide0033_image333.gif" style='position:absolute;top:35.5%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36875" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:52.8%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36876" style='position:absolute;left:336pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36876"
+ src="slide0033_image334.gif" style='position:absolute;top:42.25%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36876" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:43.63%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36877" style='position:absolute;left:402pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36877"
+ src="slide0033_image335.gif" style='position:absolute;top:42.25%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36877" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:52.99%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36878" style='position:absolute;left:582pt;top:210pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s36879" style='position:absolute;left:582pt;top:234pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36878,_x0000_s36879"
+ src="slide0033_image336.gif" style='position:absolute;top:38.75%;left:80.71%;
+ width:1.31%;height:6.0%'><![endif]>
+ <div v:shape="_x0000_s36878" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:78.46%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s36879" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:78.65%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36880" style='position:absolute;left:558pt;top:150pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36880"
+ src="slide0033_image337.gif" style='position:absolute;top:27.75%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36880" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:75.28%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36881" style='position:absolute;left:558pt;top:246pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36881"
+ src="slide0033_image338.gif" style='position:absolute;top:45.5%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36881" class=O style='text-align:center;position:absolute;
+ top:44.25%;left:75.09%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s36882" style='position:absolute' from="180pt,108pt" to="180pt,264pt"
+ strokecolor="#9c0">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s36883" style='position:absolute;left:180pt;top:246pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s36884" style='position:absolute' from="180pt,168pt"
+ to="180pt,240pt" strokecolor="#9c0">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s36885" style='position:absolute;left:180pt;top:222pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s36886" style='position:absolute' from="180pt,198pt"
+ to="180pt,228pt" strokecolor="#9c0" strokeweight="1pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s36887" style='position:absolute;left:180pt;top:204pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s36888" style='position:absolute;left:180pt;top:108pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0
+ v:shapes="_x0000_s36882,_x0000_s36884,_x0000_s36886"
+ src="slide0033_image339.gif" style='position:absolute;top:19.25%;left:24.53%;
+ width:1.31%;height:30.5%'><![endif]>
+ <div v:shape="_x0000_s36883" class=B style='position:absolute;top:46.5%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <div v:shape="_x0000_s36885" class=B style='position:absolute;top:42.0%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1,0</span></div>
+ <div v:shape="_x0000_s36887" class=B style='position:absolute;top:38.5%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1,1</span></div>
+ <div v:shape="_x0000_s36888" class=B style='position:absolute;top:20.75%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <v:oval id="_x0000_s36889" style='position:absolute;left:378pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36889"
+ src="slide0033_image340.gif" style='position:absolute;top:24.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36889" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s36890" style='position:absolute;left:378pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36890"
+ src="slide0033_image341.gif" style='position:absolute;top:35.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s36890" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s36891" style='position:absolute' from="582pt,210pt" to="582pt,240pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s36891"
+ src="slide0033_image342.gif" style='position:absolute;top:38.25%;left:80.33%;
+ width:1.49%;height:7.5%'><![endif]><v:line id="_x0000_s36892" style='position:absolute'
+ from="558pt,150pt" to="558pt,252pt" strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s36892"
+ src="slide0033_image343.gif" style='position:absolute;top:27.0%;left:76.96%;
+ width:1.49%;height:20.75%'><![endif]><v:line id="_x0000_s36893" style='position:absolute'
+ from="378pt,138pt" to="378pt,168pt" strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s36894" style='position:absolute;left:348pt;top:138pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s36895" style='position:absolute;left:180pt;top:174pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s36893"
+ src="slide0033_image344.gif" style='position:absolute;top:24.75%;left:51.87%;
+ width:1.49%;height:7.5%'><![endif]>
+ <div v:shape="_x0000_s36894" class=B style='position:absolute;top:26.5%;
+ left:49.25%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>-1,0</span></div>
+ <div v:shape="_x0000_s36895" class=B style='position:absolute;top:33.0%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,1</span></div>
+ <v:oval id="_x0000_s36896" style='position:absolute;left:582pt;top:150pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s36897" style='position:absolute;left:582pt;top:174pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s36896,_x0000_s36897"
+ src="slide0033_image345.gif" style='position:absolute;top:27.75%;left:80.71%;
+ width:1.31%;height:6.0%'><![endif]>
+ <div v:shape="_x0000_s36896" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:78.46%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s36897" class=O style='text-align:center;position:absolute;
+ top:31.0%;left:78.65%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s36898" style='position:absolute' from="582pt,150pt" to="582pt,180pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s36898"
+ src="slide0033_image346.gif" style='position:absolute;top:27.0%;left:80.33%;
+ width:1.49%;height:7.5%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image328.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image329.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image330.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image331.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image332.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image333.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image334.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image335.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image336.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image337.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image338.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image339.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image340.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image341.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image342.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image343.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image344.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image345.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0033_image346.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,428 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: XOR Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="37"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>31</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s37890"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s37891" type="#_x0000_m1027"
+ style='position:absolute;left:42pt;top:270pt;width:9in;height:212.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:rect id="_x0000_s37892"
+ style='position:absolute;left:540pt;top:126pt;width:1in;height:24pt'
+ filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s37893" style='position:absolute;left:540pt;top:126pt;
+ width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:oval id="_x0000_s37894" style='position:absolute;left:378pt;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37894"
+ src="slide0034_image347.gif" style='position:absolute;top:30.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37890" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>XOR Example</div>
+ <div v:shape="_x0000_s37891" class=B>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:50.0%;left:10.67%;width:90.07%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.15%'>•</span></span><span
+ style='font-size:75%'>Intersect fifth input interval against sweep-line data </span></span><span
+ style='position:absolute;top:54.25%;left:10.67%;width:84.45%;height:5.25%'><span
+ style='font-size:75%'>structure&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:59.75%;left:10.67%;width:96.06%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.89%'>•</span></span><span
+ style='font-size:75%'>Intersection count changes from one to zero for layer1 </span></span><span
+ style='position:absolute;top:64.0%;left:10.67%;width:84.45%;height:5.25%'><span
+ style='font-size:75%'>on two intervals&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:69.25%;left:10.67%;width:97.94%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.82%'>•</span></span><span
+ style='font-size:75%'>1 xor 0 = true, 0 xor 0 = false, so output a right edge
+ for </span></span><span style='position:absolute;top:73.5%;left:10.67%;
+ width:84.45%;height:5.25%'><span style='font-size:75%'>the first interval&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:78.75%;left:10.67%;width:95.5%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.92%'>•</span></span><span
+ style='font-size:75%'>1 xor 1 = false, 0 xor 1 = true, so output a left edge
+ for </span></span><span style='position:absolute;top:83.0%;left:10.67%;
+ width:84.45%;height:5.25%'><span style='font-size:75%'>the second
+ interval&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:88.5%;left:6.92%;
+ width:88.2%;height:5.25%'><span style='position:absolute;top:0%;left:4.24%;
+ width:95.75%;height:100.0%'><span style='font-size:75%;visibility:hidden'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.43%'>•</span></span><span
+ style='font-size:75%;mso-special-format:lastCR;display:none'>&#13;</span></span></div>
+ </div>
+ <div v:shape="_x0000_s37892" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <div v:shape="_x0000_s37893" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <div v:shape="_x0000_s37894" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37895" style='position:absolute;left:378pt;top:3in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37895"
+ src="slide0034_image348.gif" style='position:absolute;top:40.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37895" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37896" style='position:absolute;left:6in;top:3in;width:6pt;
+ height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37896"
+ src="slide0034_image349.gif" style='position:absolute;top:40.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37896" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:57.11%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37897" style='position:absolute;left:6in;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37897"
+ src="slide0034_image350.gif" style='position:absolute;top:30.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37897" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:56.92%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37898" style='position:absolute;left:336pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37898"
+ src="slide0034_image351.gif" style='position:absolute;top:24.5%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37898" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:43.82%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37899" style='position:absolute;left:402pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37899"
+ src="slide0034_image352.gif" style='position:absolute;top:35.5%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37899" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:52.8%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37900" style='position:absolute;left:336pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37900"
+ src="slide0034_image353.gif" style='position:absolute;top:42.25%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37900" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:43.63%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37901" style='position:absolute;left:402pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37901"
+ src="slide0034_image354.gif" style='position:absolute;top:42.25%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37901" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:52.99%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37902" style='position:absolute;left:558pt;top:150pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37902"
+ src="slide0034_image355.gif" style='position:absolute;top:27.75%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37902" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:75.28%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37903" style='position:absolute;left:558pt;top:246pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37903"
+ src="slide0034_image356.gif" style='position:absolute;top:45.5%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37903" class=O style='text-align:center;position:absolute;
+ top:44.25%;left:75.09%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s37904" style='position:absolute' from="180pt,108pt" to="180pt,264pt"
+ strokecolor="#9c0">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s37905" style='position:absolute;left:180pt;top:246pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s37906" style='position:absolute' from="180pt,162pt"
+ to="180pt,228pt" strokecolor="#9c0" strokeweight="1pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s37907" style='position:absolute;left:180pt;top:186pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s37908" style='position:absolute;left:180pt;top:108pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s37904,_x0000_s37906"
+ src="slide0034_image357.gif" style='position:absolute;top:19.25%;left:24.53%;
+ width:1.31%;height:30.5%'><![endif]>
+ <div v:shape="_x0000_s37905" class=B style='position:absolute;top:46.5%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <div v:shape="_x0000_s37907" class=B style='position:absolute;top:35.25%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,1</span></div>
+ <div v:shape="_x0000_s37908" class=B style='position:absolute;top:20.75%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <v:oval id="_x0000_s37909" style='position:absolute;left:378pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37909"
+ src="slide0034_image358.gif" style='position:absolute;top:24.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37909" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37910" style='position:absolute;left:378pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37910"
+ src="slide0034_image359.gif" style='position:absolute;top:35.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37910" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s37911" style='position:absolute' from="558pt,150pt" to="558pt,252pt"
+ strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s37911"
+ src="slide0034_image360.gif" style='position:absolute;top:27.0%;left:76.96%;
+ width:1.49%;height:20.75%'><![endif]><v:line id="_x0000_s37912" style='position:absolute'
+ from="402pt,192pt" to="402pt,234pt" strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s37913" style='position:absolute;left:372pt;top:240pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s37912"
+ src="slide0034_image361.gif" style='position:absolute;top:34.75%;left:55.24%;
+ width:1.49%;height:9.75%'><![endif]>
+ <div v:shape="_x0000_s37913" class=B style='position:absolute;top:45.25%;
+ left:52.62%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>-1,0</span></div>
+ <v:oval id="_x0000_s37914" style='position:absolute;left:606pt;top:234pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37914"
+ src="slide0034_image362.gif" style='position:absolute;top:43.25%;left:84.08%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37914" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:81.64%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+2</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s37915" style='position:absolute;left:606pt;top:246pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37915"
+ src="slide0034_image363.gif" style='position:absolute;top:45.5%;left:84.08%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37915" class=O style='text-align:center;position:absolute;
+ top:44.25%;left:81.83%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s37916" style='position:absolute' from="606pt,240pt" to="606pt,252pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s37916"
+ src="slide0034_image364.gif" style='position:absolute;top:43.75%;left:83.52%;
+ width:1.49%;height:4.0%'><![endif]><v:oval id="_x0000_s37917" style='position:absolute;
+ left:606pt;top:210pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37917"
+ src="slide0034_image365.gif" style='position:absolute;top:38.75%;left:84.08%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s37917" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:81.83%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s37918" style='position:absolute' from="606pt,210pt" to="606pt,240pt"
+ strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s37918"
+ src="slide0034_image366.gif" style='position:absolute;top:38.25%;left:83.52%;
+ width:1.49%;height:7.5%'><![endif]><v:oval id="_x0000_s37919" style='position:absolute;
+ left:582pt;top:210pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s37920" style='position:absolute;left:582pt;top:234pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37919,_x0000_s37920"
+ src="slide0034_image367.gif" style='position:absolute;top:38.75%;left:80.71%;
+ width:1.31%;height:6.0%'><![endif]>
+ <div v:shape="_x0000_s37919" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:78.46%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s37920" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:78.65%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s37921" style='position:absolute' from="582pt,210pt" to="582pt,240pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s37921"
+ src="slide0034_image368.gif" style='position:absolute;top:38.25%;left:80.33%;
+ width:1.49%;height:7.5%'><![endif]><v:oval id="_x0000_s37922" style='position:absolute;
+ left:582pt;top:150pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s37923" style='position:absolute;left:582pt;top:174pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s37922,_x0000_s37923"
+ src="slide0034_image369.gif" style='position:absolute;top:27.75%;left:80.71%;
+ width:1.31%;height:6.0%'><![endif]>
+ <div v:shape="_x0000_s37922" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:78.46%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s37923" class=O style='text-align:center;position:absolute;
+ top:31.0%;left:78.65%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s37924" style='position:absolute' from="582pt,150pt" to="582pt,180pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s37924"
+ src="slide0034_image370.gif" style='position:absolute;top:27.0%;left:80.33%;
+ width:1.49%;height:7.5%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image347.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image348.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image349.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image350.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image351.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image352.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image353.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image354.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image355.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image356.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image357.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image358.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image359.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image360.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image361.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image362.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image363.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image364.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image365.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image366.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image367.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image368.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image369.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0034_image370.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,434 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: XOR Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="38"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>32</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s38914"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s38915" type="#_x0000_m1027"
+ style='position:absolute;left:42pt;top:270pt;width:9in;height:212.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:rect id="_x0000_s38916"
+ style='position:absolute;left:540pt;top:126pt;width:1in;height:24pt'
+ filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s38917" style='position:absolute;left:540pt;top:126pt;
+ width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:oval id="_x0000_s38918" style='position:absolute;left:378pt;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38918"
+ src="slide0035_image371.gif" style='position:absolute;top:30.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38914" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>XOR Example</div>
+ <div v:shape="_x0000_s38915" class=B>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:50.5%;left:10.67%;width:96.81%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.86%'>•</span></span><span
+ style='font-size:88%'>Intersect sixth input interval against sweep-line </span></span><span
+ style='position:absolute;top:56.0%;left:10.67%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>data structure&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:63.0%;left:10.67%;width:98.12%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.81%'>•</span></span><span
+ style='font-size:88%'>Intersection count changes from one to zero for </span></span><span
+ style='position:absolute;top:68.5%;left:10.67%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>layer2 on one interval&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:75.5%;left:10.67%;width:96.06%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.89%'>•</span></span><span
+ style='font-size:88%'>0 xor 1 = true, 0 xor 0 = false, so output a right </span></span><span
+ style='position:absolute;top:81.0%;left:10.67%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>edge</span></span></div>
+ </div>
+ <div v:shape="_x0000_s38916" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <div v:shape="_x0000_s38917" class=B style='position:absolute;top:24.25%;
+ left:76.02%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output</span></div>
+ <div v:shape="_x0000_s38918" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38919" style='position:absolute;left:378pt;top:3in;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38919"
+ src="slide0035_image372.gif" style='position:absolute;top:40.0%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38919" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38920" style='position:absolute;left:6in;top:3in;width:6pt;
+ height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38920"
+ src="slide0035_image373.gif" style='position:absolute;top:40.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38920" class=O style='text-align:center;position:absolute;
+ top:38.75%;left:57.11%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38921" style='position:absolute;left:6in;top:162pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38921"
+ src="slide0035_image374.gif" style='position:absolute;top:30.0%;left:59.92%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38921" class=O style='text-align:center;position:absolute;
+ top:28.74%;left:56.92%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>0,+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38922" style='position:absolute;left:336pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38922"
+ src="slide0035_image375.gif" style='position:absolute;top:24.5%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38922" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:43.82%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38923" style='position:absolute;left:402pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38923"
+ src="slide0035_image376.gif" style='position:absolute;top:35.5%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38923" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:52.8%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38924" style='position:absolute;left:336pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38924"
+ src="slide0035_image377.gif" style='position:absolute;top:42.25%;left:46.62%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38924" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:43.63%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38925" style='position:absolute;left:402pt;top:228pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38925"
+ src="slide0035_image378.gif" style='position:absolute;top:42.25%;left:55.8%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38925" class=O style='text-align:center;position:absolute;
+ top:41.0%;left:52.99%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38926" style='position:absolute;left:558pt;top:150pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38926"
+ src="slide0035_image379.gif" style='position:absolute;top:27.75%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38926" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:75.28%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38927" style='position:absolute;left:558pt;top:246pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38927"
+ src="slide0035_image380.gif" style='position:absolute;top:45.5%;left:77.52%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38927" class=O style='text-align:center;position:absolute;
+ top:44.25%;left:75.09%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s38928" style='position:absolute' from="180pt,108pt" to="180pt,264pt"
+ strokecolor="#9c0">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s38929" style='position:absolute;left:180pt;top:246pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s38930" style='position:absolute;left:180pt;top:108pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s38928"
+ src="slide0035_image381.gif" style='position:absolute;top:19.25%;left:24.53%;
+ width:1.31%;height:30.5%'><![endif]>
+ <div v:shape="_x0000_s38929" class=B style='position:absolute;top:46.5%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <div v:shape="_x0000_s38930" class=B style='position:absolute;top:20.75%;
+ left:26.02%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,0</span></div>
+ <v:oval id="_x0000_s38931" style='position:absolute;left:378pt;top:132pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38931"
+ src="slide0035_image382.gif" style='position:absolute;top:24.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38931" class=O style='text-align:center;position:absolute;
+ top:23.25%;left:49.43%;width:6.92%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38932" style='position:absolute;left:378pt;top:192pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38932"
+ src="slide0035_image383.gif" style='position:absolute;top:35.5%;left:52.43%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38932" class=O style='text-align:center;position:absolute;
+ top:34.25%;left:49.62%;width:6.74%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1,0</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s38933" style='position:absolute' from="558pt,150pt" to="558pt,252pt"
+ strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s38933"
+ src="slide0035_image384.gif" style='position:absolute;top:27.0%;left:76.96%;
+ width:1.49%;height:20.75%'><![endif]><v:line id="_x0000_s38934" style='position:absolute'
+ from="6in,162pt" to="6in,222pt" strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s38935" style='position:absolute;left:414pt;top:138pt;
+ width:54pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s38934"
+ src="slide0035_image385.gif" style='position:absolute;top:29.25%;left:59.36%;
+ width:1.49%;height:13.0%'><![endif]>
+ <div v:shape="_x0000_s38935" class=B style='position:absolute;top:26.5%;
+ left:58.42%;width:5.61%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0,-1</span></div>
+ <v:oval id="_x0000_s38936" style='position:absolute;left:642pt;top:186pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38936"
+ src="slide0035_image386.gif" style='position:absolute;top:34.5%;left:89.13%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38936" class=O style='text-align:center;position:absolute;
+ top:33.25%;left:86.7%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38937" style='position:absolute;left:642pt;top:234pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38937"
+ src="slide0035_image387.gif" style='position:absolute;top:43.25%;left:89.13%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38937" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:86.89%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s38938" style='position:absolute' from="642pt,186pt" to="642pt,240pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s38938"
+ src="slide0035_image388.gif" style='position:absolute;top:33.75%;left:88.57%;
+ width:1.49%;height:12.0%'><![endif]><v:oval id="_x0000_s38939" style='position:absolute;
+ left:582pt;top:210pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s38940" style='position:absolute;left:582pt;top:234pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38939,_x0000_s38940"
+ src="slide0035_image389.gif" style='position:absolute;top:38.75%;left:80.71%;
+ width:1.31%;height:6.0%'><![endif]>
+ <div v:shape="_x0000_s38939" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:78.46%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s38940" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:78.65%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s38941" style='position:absolute' from="582pt,210pt" to="582pt,240pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s38941"
+ src="slide0035_image390.gif" style='position:absolute;top:38.25%;left:80.33%;
+ width:1.49%;height:7.5%'><![endif]><v:oval id="_x0000_s38942" style='position:absolute;
+ left:582pt;top:150pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s38943" style='position:absolute;left:582pt;top:174pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38942,_x0000_s38943"
+ src="slide0035_image391.gif" style='position:absolute;top:27.75%;left:80.71%;
+ width:1.31%;height:6.0%'><![endif]>
+ <div v:shape="_x0000_s38942" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:78.46%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s38943" class=O style='text-align:center;position:absolute;
+ top:31.0%;left:78.65%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s38944" style='position:absolute' from="582pt,150pt" to="582pt,180pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s38944"
+ src="slide0035_image392.gif" style='position:absolute;top:27.0%;left:80.33%;
+ width:1.49%;height:7.5%'><![endif]><v:oval id="_x0000_s38945" style='position:absolute;
+ left:606pt;top:234pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38945"
+ src="slide0035_image393.gif" style='position:absolute;top:43.25%;left:84.08%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38945" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:81.64%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+2</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s38946" style='position:absolute;left:606pt;top:246pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38946"
+ src="slide0035_image394.gif" style='position:absolute;top:45.5%;left:84.08%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38946" class=O style='text-align:center;position:absolute;
+ top:44.25%;left:81.83%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s38947" style='position:absolute' from="606pt,240pt" to="606pt,252pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s38947"
+ src="slide0035_image395.gif" style='position:absolute;top:43.75%;left:83.52%;
+ width:1.49%;height:4.0%'><![endif]><v:oval id="_x0000_s38948" style='position:absolute;
+ left:606pt;top:210pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s38948"
+ src="slide0035_image396.gif" style='position:absolute;top:38.75%;left:84.08%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s38948" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:81.83%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s38949" style='position:absolute' from="606pt,210pt" to="606pt,240pt"
+ strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s38949"
+ src="slide0035_image397.gif" style='position:absolute;top:38.25%;left:83.52%;
+ width:1.49%;height:7.5%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image371.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image372.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image373.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image374.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image375.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image376.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image377.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image378.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image379.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image380.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image381.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image382.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image383.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image384.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image385.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image386.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image387.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image388.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image389.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image390.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image391.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image392.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image393.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image394.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image395.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image396.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0035_image397.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,349 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: XOR Example">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="39"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>33</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s39938"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s39939" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:270pt;width:663pt;height:212.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:rect id="_x0000_s39940"
+ style='position:absolute;left:198pt;top:132pt;width:1in;height:24pt'
+ filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s39941" style='position:absolute' from="391.5pt,162.75pt"
+ to="391.5pt,234.75pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39941"
+ src="slide0036_image398.gif" style='position:absolute;top:30.0%;left:54.3%;
+ width:.37%;height:14.0%'><![endif]>
+ <div v:shape="_x0000_s39938" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>XOR Example</div>
+ <div v:shape="_x0000_s39939" class=B>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:50.5%;left:9.73%;width:96.06%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.89%'>•</span>Sweep-line Polygon Formation
+ produces </span><span style='position:absolute;top:56.99%;left:9.73%;
+ width:86.51%;height:6.75%'>output polygon&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:64.75%;
+ left:5.99%;width:105.24%;height:6.75%'><span style='position:absolute;
+ top:0%;left:3.55%;width:96.44%;height:100.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.69%'>•</span>Could be done in the same pass
+ as the xor&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:72.5%;left:9.73%;width:90.26%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.14%'>•</span>Leaving it in the derivative
+ form allows </span><span style='position:absolute;top:78.75%;left:9.73%;
+ width:86.7%;height:6.75%'>direct input to a subsequent Boolean</span></div>
+ </div>
+ <div v:shape="_x0000_s39940" class=B style='position:absolute;top:25.25%;
+ left:28.46%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Input</span></div>
+ <v:line id="_x0000_s39942" style='position:absolute' from="391.5pt,234.75pt"
+ to="415.5pt,234.75pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39942"
+ src="slide0036_image399.gif" style='position:absolute;top:43.5%;left:54.3%;
+ width:3.74%;height:.5%'><![endif]><v:line id="_x0000_s39943" style='position:absolute'
+ from="415.5pt,192.75pt" to="415.5pt,234.75pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39943"
+ src="slide0036_image400.gif" style='position:absolute;top:35.75%;left:57.67%;
+ width:.37%;height:8.25%'><![endif]><v:line id="_x0000_s39944" style='position:absolute;
+ flip:x' from="403.5pt,192.75pt" to="415.5pt,192.75pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39944"
+ src="slide0036_image401.gif" style='position:absolute;top:35.75%;left:55.99%;
+ width:2.05%;height:.5%'><![endif]><v:line id="_x0000_s39945" style='position:absolute'
+ from="403.5pt,162.75pt" to="403.5pt,180.75pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39945"
+ src="slide0036_image402.gif" style='position:absolute;top:30.0%;left:55.99%;
+ width:.37%;height:4.0%'><![endif]><v:line id="_x0000_s39946" style='position:absolute;
+ flip:x' from="391.5pt,162.75pt" to="403.5pt,162.75pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39946"
+ src="slide0036_image403.gif" style='position:absolute;top:30.0%;left:54.3%;
+ width:2.05%;height:.5%'><![endif]><v:line id="_x0000_s39947" style='position:absolute;
+ flip:x' from="403.5pt,180.75pt" to="439.5pt,180.75pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39947"
+ src="slide0036_image404.gif" style='position:absolute;top:33.5%;left:55.99%;
+ width:5.43%;height:.5%'><![endif]><v:line id="_x0000_s39948" style='position:absolute;
+ flip:x' from="403.5pt,222.75pt" to="439.5pt,222.75pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39948"
+ src="slide0036_image405.gif" style='position:absolute;top:41.25%;left:55.99%;
+ width:5.43%;height:.5%'><![endif]><v:line id="_x0000_s39949" style='position:absolute;
+ flip:x y' from="403.5pt,192.75pt" to="403.5pt,222.75pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39949"
+ src="slide0036_image406.gif" style='position:absolute;top:35.75%;left:55.99%;
+ width:.37%;height:6.0%'><![endif]><v:line id="_x0000_s39950" style='position:absolute'
+ from="439.5pt,180.75pt" to="439.5pt,222.75pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s39951" style='position:absolute;left:385.5pt;
+ top:138.75pt;width:120pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:shapetype id="_x0000_t13" coordsize="21600,21600" o:spt="13"
+ adj="16200,5400" path="m_at_0,l_at_0@1,0_at_1,0_at_2@0_at_2@0,21600,21600,10800xe">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="val #0"/>
+ <v:f eqn="val #1"/>
+ <v:f eqn="sum height 0 #1"/>
+ <v:f eqn="sum 10800 0 #1"/>
+ <v:f eqn="sum width 0 #0"/>
+ <v:f eqn="prod @4 @3 10800"/>
+ <v:f eqn="sum width 0 @5"/>
+ </v:formulas>
+ <v:path o:connecttype="custom" o:connectlocs="@0,0;0,10800;@0,21600;21600,10800"
+ o:connectangles="270,180,90,0" textboxrect="0,@1,@6,@2"/>
+ <v:handles>
+ <v:h position="#0,#1" xrange="0,21600" yrange="0,10800"/>
+ </v:handles>
+ </v:shapetype><v:shape id="_x0000_s39952" type="#_x0000_t13" style='position:absolute;
+ left:273.875pt;top:162.75pt;width:112.5pt;height:68.25pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><v:oval id="_x0000_s39953" style='position:absolute;left:168pt;
+ top:150pt;width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s39954" style='position:absolute;left:168pt;top:246pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0
+ v:shapes="_x0000_s39950,_x0000_s39952,_x0000_s39953,_x0000_s39954"
+ src="slide0036_image407.gif" style='position:absolute;top:27.75%;left:23.22%;
+ width:38.2%;height:19.5%'><![endif]>
+ <div v:shape="_x0000_s39951" class=B style='position:absolute;top:26.5%;
+ left:54.49%;width:16.29%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Output Polygon</span></div>
+ <div v:shape="_x0000_s39952" class=O>
+ <div style='text-align:center;position:absolute;top:34.5%;left:36.89%;
+ width:16.29%;height:2.25%'><span style='font-size:56%'><b>Sweep-line Polygon
+ &#13;</b></span></div>
+ <div style='text-align:center;position:absolute;top:36.5%;left:39.13%;
+ width:11.98%;height:2.25%'><span style='font-size:56%'><b>Formation</b></span></div>
+ </div>
+ <div v:shape="_x0000_s39953" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:21.16%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s39954" class=O style='text-align:center;position:absolute;
+ top:44.25%;left:20.97%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s39955" style='position:absolute' from="168pt,150pt" to="168pt,252pt"
+ strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39955"
+ src="slide0036_image408.gif" style='position:absolute;top:27.0%;left:22.84%;
+ width:1.49%;height:20.75%'><![endif]><v:oval id="_x0000_s39956" style='position:absolute;
+ left:252pt;top:186pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s39956"
+ src="slide0036_image409.gif" style='position:absolute;top:34.5%;left:35.01%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s39956" class=O style='text-align:center;position:absolute;
+ top:33.25%;left:32.58%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s39957" style='position:absolute;left:252pt;top:234pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s39957"
+ src="slide0036_image410.gif" style='position:absolute;top:43.25%;left:35.01%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s39957" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:32.77%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s39958" style='position:absolute' from="252pt,186pt" to="252pt,240pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39958"
+ src="slide0036_image411.gif" style='position:absolute;top:33.75%;left:34.45%;
+ width:1.49%;height:12.0%'><![endif]><v:oval id="_x0000_s39959" style='position:absolute;
+ left:192pt;top:210pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s39960" style='position:absolute;left:192pt;top:234pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s39959,_x0000_s39960"
+ src="slide0036_image412.gif" style='position:absolute;top:38.75%;left:26.59%;
+ width:1.31%;height:6.0%'><![endif]>
+ <div v:shape="_x0000_s39959" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:24.15%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s39960" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:24.34%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s39961" style='position:absolute' from="192pt,210pt" to="192pt,240pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39961"
+ src="slide0036_image413.gif" style='position:absolute;top:38.25%;left:26.02%;
+ width:1.49%;height:7.5%'><![endif]><v:oval id="_x0000_s39962" style='position:absolute;
+ left:192pt;top:150pt;width:6pt;height:6pt;mso-wrap-style:none;
+ v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s39963" style='position:absolute;left:192pt;top:174pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s39962,_x0000_s39963"
+ src="slide0036_image414.gif" style='position:absolute;top:27.75%;left:26.59%;
+ width:1.31%;height:6.0%'><![endif]>
+ <div v:shape="_x0000_s39962" class=O style='text-align:center;position:absolute;
+ top:26.5%;left:24.15%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <div v:shape="_x0000_s39963" class=O style='text-align:center;position:absolute;
+ top:31.0%;left:24.34%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s39964" style='position:absolute' from="192pt,150pt" to="192pt,180pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39964"
+ src="slide0036_image415.gif" style='position:absolute;top:27.0%;left:26.02%;
+ width:1.49%;height:7.5%'><![endif]><v:oval id="_x0000_s39965" style='position:absolute;
+ left:3in;top:234pt;width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s39965"
+ src="slide0036_image416.gif" style='position:absolute;top:43.25%;left:29.96%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s39965" class=O style='text-align:center;position:absolute;
+ top:42.25%;left:27.52%;width:5.8%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>+2</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:oval id="_x0000_s39966" style='position:absolute;left:3in;top:246pt;
+ width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s39966"
+ src="slide0036_image417.gif" style='position:absolute;top:45.5%;left:29.96%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s39966" class=O style='text-align:center;position:absolute;
+ top:44.25%;left:27.71%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s39967" style='position:absolute' from="3in,240pt" to="3in,252pt"
+ strokecolor="red" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39967"
+ src="slide0036_image418.gif" style='position:absolute;top:43.75%;left:29.4%;
+ width:1.49%;height:4.0%'><![endif]><v:oval id="_x0000_s39968" style='position:absolute;
+ left:3in;top:210pt;width:6pt;height:6pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s39968"
+ src="slide0036_image419.gif" style='position:absolute;top:38.75%;left:29.96%;
+ width:1.31%;height:1.75%'><![endif]>
+ <div v:shape="_x0000_s39968" class=O style='text-align:center;position:absolute;
+ top:37.75%;left:27.71%;width:5.61%;height:4.0%'><b><span
+ style='mso-spacerun:yes'>     </span></b><span style='font-size:44%'><b>-1</b></span><span
+ style='mso-special-format:lastCR;display:none'><b>&#13;</b></span></div>
+ <v:line id="_x0000_s39969" style='position:absolute' from="3in,210pt" to="3in,240pt"
+ strokecolor="#9c0" strokeweight="1.75pt">
+ <v:stroke startarrow="diamond" endarrow="diamond"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s39969"
+ src="slide0036_image420.gif" style='position:absolute;top:38.25%;left:29.4%;
+ width:1.49%;height:7.5%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image398.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image399.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image400.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image401.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image402.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image403.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image404.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image405.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image406.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image407.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image408.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image409.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image410.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image411.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image412.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image413.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image414.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image415.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image416.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image417.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image418.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image419.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0036_image420.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,319 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Generalizing The Algorithm">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="40"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>34</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s40962"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s40963" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:653.125pt;height:380.875pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s40962" class=T style='position:absolute;top:8.0%;
+ left:5.61%;width:89.13%;height:9.25%'>Generalizing The Algorithm</div>
+ <div v:shape="_x0000_s40963" class=B>
+ <div style='position:absolute;top:24.5%;left:5.99%;width:91.01%;height:6.75%'><span
+ style='position:absolute;top:0%;left:4.11%;width:95.88%;height:100.0%'><span
+ class=BB style='position:absolute;left:-4.29%'>•</span>We want the derivative
+ of this vertex:&#13;</span></div>
+ <div style='position:absolute;top:33.0%;left:5.99%;width:88.95%;height:6.75%'><span
+ style='position:absolute;top:0%;left:4.21%;width:95.78%;height:100.0%'><span
+ class=BB style='position:absolute;left:-4.39%'>•</span>We apply d/dx and
+ d/dy&#13;</span></div>
+ <div style='position:absolute;top:41.5%;left:5.99%;width:88.95%;height:6.75%'><span
+ style='position:absolute;top:0%;left:4.21%;width:95.78%;height:100.0%'><span
+ class=BB style='position:absolute;left:-4.39%'>•</span>To get a result in
+ terms of <span lang=EL>&#952;</span>: &#13;</span></div>
+ <div style='position:absolute;top:50.0%;left:5.99%;width:88.95%;height:6.75%'><span
+ style='position:absolute;top:0%;left:4.21%;width:95.78%;height:100.0%'><span
+ class=BB style='position:absolute;left:-4.39%'>•</span>We sweep the <span
+ lang=EL>&#952;</span> from low to high:&#13;</span></div>
+ <div style='position:absolute;top:58.5%;left:5.99%;width:88.95%;height:6.75%'><span
+ style='position:absolute;top:0%;left:4.21%;width:95.78%;height:100.0%'><span
+ class=BB style='position:absolute;left:-4.39%'>•</span>As we integrate wrt.
+ y:&#13;</span></div>
+ <div style='position:absolute;top:67.0%;left:5.99%;width:88.95%;height:6.75%'><span
+ style='position:absolute;top:0%;left:4.21%;width:95.78%;height:100.0%'><span
+ class=BB style='position:absolute;left:-4.39%'>•</span>And finally integrate
+ wrt. x:&#13;</span></div>
+ <span style='position:absolute;top:75.5%;left:9.73%;width:90.26%;height:6.75%'><span
+ class=BB style='position:absolute;left:-4.14%'>•</span>To which we assign
+ counter clockwise </span><span style='position:absolute;top:82.5%;left:9.73%;
+ width:85.2%;height:6.75%'>winding and output partial polygon:&#13;</span>
+ <div style='position:absolute;top:91.25%;left:5.99%;width:88.95%;height:6.75%'><span
+ style='position:absolute;top:0%;left:4.21%;width:95.78%;height:100.0%'><span
+ style='visibility:hidden'><span class=BB style='position:absolute;left:-4.39%'>•</span></span><span
+ style='mso-special-format:lastCR;display:none'>&#13;</span></span></div>
+ </div>
+ <v:line id="_x0000_s40964" style='position:absolute;flip:y' from="585.625pt,141.75pt"
+ to="629.5pt,168.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s40965" style='position:absolute' from="630.25pt,142.375pt"
+ to="664.375pt,166.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s40966" style='position:absolute;left:607.625pt;
+ top:151.875pt;width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:shape id="_x0000_s40968" style='position:absolute;left:602pt;
+ top:127pt;width:57.875pt;height:20.75pt' coordsize="463,166" path="m463,166c388,88,314,10,237,5,160,,39,114,,136e"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ <v:path arrowok="t"/>
+ </v:shape><![if !vml]><img border=0
+ v:shapes="_x0000_s40964,_x0000_s40965,_x0000_s40968"
+ src="slide0037_image421.gif" style='position:absolute;top:23.5%;left:81.27%;
+ width:11.42%;height:8.25%'><![endif]>
+ <div v:shape="_x0000_s40966" class=B style='position:absolute;top:28.99%;
+ left:85.39%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>solid</span></div>
+ <v:line id="_x0000_s40970" style='position:absolute;flip:y' from="472.25pt,214.5pt"
+ to="516.125pt,241.125pt" strokecolor="black [1]">
+ <v:stroke endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s40971" style='position:absolute' from="472.375pt,241.125pt"
+ to="506.5pt,265.625pt" strokecolor="black [1]">
+ <v:stroke endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s40974" style='position:absolute;left:509.125pt;
+ top:253pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s40975" style='position:absolute;left:520.375pt;
+ top:200.875pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s40970,_x0000_s40971"
+ src="slide0037_image422.gif" style='position:absolute;top:39.0%;left:65.54%;
+ width:6.92%;height:11.5%'><![endif]>
+ <div v:shape="_x0000_s40974" class=B style='position:absolute;top:47.75%;
+ left:71.72%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>-1</span></div>
+ <div v:shape="_x0000_s40975" class=B style='position:absolute;top:38.0%;
+ left:73.22%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1</span></div>
+ <v:line id="_x0000_s40976" style='position:absolute;flip:y' from="581.5pt,261.375pt"
+ to="625.375pt,4in" strokecolor="black [1]">
+ <v:stroke endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s40977" style='position:absolute' from="581.625pt,4in"
+ to="615.75pt,312.5pt" strokecolor="black [1]">
+ <v:stroke endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s40978" style='position:absolute;left:600.5pt;
+ top:277.625pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s40979" style='position:absolute;left:582.875pt;
+ top:250.875pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s40980" style='position:absolute;left:581.625pt;
+ top:302.375pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s40976,_x0000_s40977"
+ src="slide0037_image423.gif" style='position:absolute;top:47.5%;left:80.71%;
+ width:6.92%;height:11.5%'><![endif]>
+ <div v:shape="_x0000_s40978" class=B style='position:absolute;top:52.25%;
+ left:84.45%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>-1</span></div>
+ <div v:shape="_x0000_s40979" class=B style='position:absolute;top:47.25%;
+ left:82.02%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0</span></div>
+ <div v:shape="_x0000_s40980" class=B style='position:absolute;top:56.75%;
+ left:81.83%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0</span></div>
+ <v:line id="_x0000_s40981" style='position:absolute;flip:y' from="417.375pt,314.875pt"
+ to="461.25pt,341.5pt" strokecolor="black [1]">
+ <v:stroke endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s40982" style='position:absolute' from="417.5pt,341.5pt"
+ to="451.625pt,366pt" strokecolor="black [1]">
+ <v:stroke endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s40983" style='position:absolute;left:424.5pt;
+ top:328.875pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s40984" style='position:absolute;left:416.625pt;
+ top:309.625pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s40985" style='position:absolute;left:413.875pt;
+ top:344.625pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s40981,_x0000_s40982"
+ src="slide0037_image424.gif" style='position:absolute;top:57.49%;left:57.86%;
+ width:6.92%;height:11.5%'><![endif]>
+ <div v:shape="_x0000_s40983" class=B style='position:absolute;top:61.75%;
+ left:59.92%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0</span></div>
+ <div v:shape="_x0000_s40984" class=B style='position:absolute;top:58.25%;
+ left:58.8%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1</span></div>
+ <div v:shape="_x0000_s40985" class=B style='position:absolute;top:64.75%;
+ left:58.42%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1</span></div>
+ <v:line id="_x0000_s40986" style='position:absolute;flip:y' from="475.75pt,376.75pt"
+ to="519.625pt,403.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s40987" style='position:absolute' from="520.375pt,377.375pt"
+ to="554.5pt,401.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s40988" style='position:absolute;left:510.25pt;
+ top:378.75pt;width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s40989" style='position:absolute;left:482.25pt;
+ top:370.625pt;width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s40986,_x0000_s40987"
+ src="slide0037_image425.gif" style='position:absolute;top:69.75%;left:66.1%;
+ width:11.42%;height:5.5%'><![endif]>
+ <div v:shape="_x0000_s40988" class=B style='position:absolute;top:71.0%;
+ left:71.91%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>1</span></div>
+ <div v:shape="_x0000_s40989" class=B style='position:absolute;top:69.5%;
+ left:67.97%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0</span></div>
+ <v:line id="_x0000_s40990" style='position:absolute;flip:y' from="580.625pt,474.375pt"
+ to="624.5pt,501pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s40991" style='position:absolute' from="625.25pt,475pt"
+ to="659.375pt,499.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s40992" style='position:absolute;left:602.625pt;
+ top:484.5pt;width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:shape id="_x0000_s40993" style='position:absolute;left:597pt;
+ top:459.625pt;width:57.875pt;height:20.75pt' coordsize="463,166" path="m463,166c388,88,314,10,237,5,160,,39,114,,136e"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ <v:path arrowok="t"/>
+ </v:shape><v:rect id="_x0000_s40994" style='position:absolute;left:563.375pt;
+ top:439.375pt;width:137.375pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s40995" style='position:absolute;left:534.375pt;
+ top:371.375pt;width:1in;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0
+ v:shapes="_x0000_s40990,_x0000_s40991,_x0000_s40993"
+ src="slide0037_image426.gif" style='position:absolute;top:85.0%;left:80.52%;
+ width:11.42%;height:8.25%'><![endif]>
+ <div v:shape="_x0000_s40992" class=B style='position:absolute;top:90.5%;
+ left:84.64%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>solid</span></div>
+ <div v:shape="_x0000_s40994" class=B style='position:absolute;top:82.25%;
+ left:79.21%;width:17.6%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>winding direction</span></div>
+ <div v:shape="_x0000_s40995" class=B style='position:absolute;top:69.5%;
+ left:75.28%;width:8.23%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>0</span></div>
+ <v:shape id="_x0000_s40996" style='position:absolute;left:611.875pt;top:275.5pt;
+ width:57.875pt;height:20.75pt;rotation:5620915fd' coordsize="463,166" path="m463,166c388,88,314,10,237,5,160,,39,114,,136e"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke endarrow="open"/>
+ <v:shadow color="gray [2]"/>
+ <v:path arrowok="t"/>
+ </v:shape><v:rect id="_x0000_s40997" style='position:absolute;left:579.75pt;
+ top:103.25pt;width:122.5pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s40996"
+ src="slide0037_image427.gif" style='position:absolute;top:47.0%;left:87.26%;
+ width:3.55%;height:11.75%'><![endif]>
+ <div v:shape="_x0000_s40997" class=B style='position:absolute;top:20.0%;
+ left:81.46%;width:17.6%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>winding direction</span></div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image421.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image422.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image423.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image424.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image425.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image426.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0037_image427.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0038.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0038.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,162 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: The Algorithm Requires No Preconditions">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<!--[if gte IE 5]>
+<object id=MSOANIM classid="CLSID:A4639D2F-774E-11D3-A490-00C04F6843FB"></object>
+<object id=MSOTIME classid="CLSID:A4639D29-774E-11D3-A490-00C04F6843FB"></object>
+<![endif]-->
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<style>
+<!--
+oa\:* { BEHAVIOR: url(#MSOANIM#ANIM) url(#MSOTIME#TIME) }
+oa\:par,oa\:seq,oa\:iterate { BEHAVIOR:url(#MSOTIME) }
+oa\:video,oa\:audio {BEHAVIOR:url(#MSOTIME) url(#MSOTIME#MEDIA) }
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><script><!--
+g_animItemsToHide=new Array("_x0000_s41989");
+
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="41"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()" oa:clockstart="onstart">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>35</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s41986"
+ type="#_x0000_m1026" style='position:absolute;left:2.625pt;top:21.625pt;
+ width:714pt;height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s41987" type="#_x0000_m1027"
+ style='position:absolute;left:7.75pt;top:108.125pt;width:366pt;height:415.875pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s41986" class=T><span style='position:absolute;
+ top:4.0%;left:1.31%;width:97.37%;height:8.5%'><span style='font-size:91%'>The
+ Algorithm Requires No </span></span><span style='position:absolute;top:12.75%;
+ left:1.31%;width:97.37%;height:8.5%'><span style='font-size:91%'>Preconditions</span></span></div>
+ <div v:shape="_x0000_s41987" class=B><span style='position:absolute;
+ top:21.0%;left:5.8%;width:50.74%;height:6.75%'><span class=BB
+ style='position:absolute;left:-7.38%'>•</span>The great thing about </span><span
+ style='position:absolute;top:28.24%;left:5.8%;width:45.31%;height:6.75%'>math
+ is that it’s </span><span style='position:absolute;top:35.25%;left:5.8%;
+ width:45.31%;height:6.75%'>general&#13;</span><span style='position:absolute;
+ top:43.75%;left:5.8%;width:50.0%;height:6.75%'><span class=BB
+ style='position:absolute;left:-7.49%'>•</span>Every special case is </span><span
+ style='position:absolute;top:51.0%;left:5.8%;width:49.25%;height:6.75%'>just
+ another instance </span><span style='position:absolute;top:57.99%;left:5.8%;
+ width:45.5%;height:6.75%'>of the general case&#13;</span><span
+ style='position:absolute;top:66.5%;left:5.8%;width:45.31%;height:6.75%'><span
+ class=BB style='position:absolute;left:-8.26%'>•</span>Every case that </span><span
+ style='position:absolute;top:73.75%;left:5.8%;width:45.31%;height:6.75%'>breaks
+ other </span><span style='position:absolute;top:80.75%;left:5.8%;width:50.56%;
+ height:6.75%'>algorithms is handled </span><span style='position:absolute;
+ top:87.75%;left:5.8%;width:52.24%;height:6.75%'>implicitly and correctly</span></div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s41988" type="#_x0000_t75" style='position:absolute;
+ left:381.75pt;top:108pt;width:314.375pt;height:414pt'>
+ <v:imagedata src="slide0004_image014.png" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s41988"
+ src="slide0038_image428.gif" style='position:absolute;top:20.0%;left:52.99%;
+ width:43.63%;height:76.75%'><![endif]><v:shape id="_x0000_s41989" type="#_x0000_t75"
+ style='position:absolute;left:382pt;top:110.75pt;width:310.625pt;height:410pt'>
+ <v:imagedata src="slide0004_image016.png" o:title=""/>
+ <p:animation number="2" delay="0" type="object" effect="wipe"
+ direction="right" flag="17408"/></v:shape><![if !vml]><img border=0
+ v:shapes="_x0000_s41989" src="slide0038_image429.gif" style='position:absolute;
+ top:20.5%;left:52.99%;width:43.07%;height:76.0%'><![endif]></p:slide></div>
+
+<p:animation number="-1050189366"/><oa:par id="TimeNode0" dur="indefinite"
+ restart="never" p:nodeType="timingRoot">
+ <oa:seq id="TimeNode1" dur="indefinite" prev="document.onpptprev"
+ next="document.onpptnext" concurrent="enabled" nextAction="seek"
+ p:nodeType="mainSeq">
+ <oa:par id="TimeNode2" begin="indefinite" fill="hold">
+ <oa:par id="TimeNode3" begin="0.0" fill="hold">
+ <oa:par id="TimeNode4" o:presetID="ppt_22" o:presetClass="entrance"
+ o:presetSubType="0x8" begin="0.0" fill="hold" p:nodeType="clickEffect">
+ <oa:set id="TimeNode5" begin="0.0" dur="0.001" fill="hold"
+ targetElement="_x0000_s41989" attributeName="style.visibility"
+ to="visible"/>
+ <oa:animateFilter id="TimeNode6" dur="0.5" targetElement="_x0000_s41989"
+ transition="in" filter="wipe(left)"/>
+ </oa:par>
+ </oa:par>
+ </oa:par>
+ </oa:seq>
+</oa:par>
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0038_image428.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0038_image429.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0039.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0039.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,104 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Robustness">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="42"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>37</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s43010"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s43011" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:9in;height:380.25pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s43010" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Robustness</div>
+ <div v:shape="_x0000_s43011">
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:23.75%;left:9.73%;width:98.5%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.8%'>•</span>Strategies employed by GTL are
+ provably </span><span style='position:absolute;top:30.25%;left:9.73%;
+ width:84.45%;height:6.75%'>robust for all cases&#13;</span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:37.75%;left:14.04%;width:93.63%;height:6.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.2%'>–</span>100% robust--not just “works for
+ all the cases </span><span style='position:absolute;top:43.5%;left:14.04%;
+ width:79.96%;height:6.0%'>we’ve tried”&#13;</span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:50.5%;left:9.73%;width:85.2%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.39%'>•</span>A firm guarantee of 100%
+ numerical </span><span style='position:absolute;top:56.75%;left:9.73%;
+ width:91.94%;height:6.75%'>robustness is a very comforting feature&#13;</span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:64.75%;left:9.73%;width:90.26%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.14%'>•</span>PolyBoolean fails to find
+ polygons that </span><span style='position:absolute;top:71.0%;left:9.73%;
+ width:96.44%;height:6.75%'>enclose some holes because its point-in-</span><span
+ style='position:absolute;top:77.5%;left:9.73%;width:88.2%;height:6.75%'>polygon
+ calculation is not numerically </span><span style='position:absolute;
+ top:83.75%;left:9.73%;width:84.45%;height:6.75%'>robust</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0040.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0040.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,156 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Robust Comparison of Slope">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="43"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>39</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s44034"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s44035" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:665.125pt;height:405.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s44034" class=T style='position:absolute;top:8.0%;
+ left:2.99%;width:94.0%;height:9.25%'>Robust Comparison of Slope</div>
+ <div v:shape="_x0000_s44035">
+ <div class=B style='position:absolute;top:24.25%;left:5.99%;width:90.44%;
+ height:3.5%'><span style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:50%'><span style='mso-tab-count:2;width:11.05%'> </span>Segment
+ 1: (x11,y11) to (x12, y12)&#13;</span></div>
+ <div class=B style='position:absolute;top:28.49%;left:5.99%;width:90.44%;
+ height:3.5%'><span style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:50%'><span style='mso-tab-count:2;width:11.05%'> </span>Segment
+ 2: (x21,y21) to (x22, y22)&#13;</span></div>
+ <div class=B style='position:absolute;top:32.75%;left:5.99%;width:90.44%;
+ height:3.5%'><span style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:50%'><span style='mso-tab-count:2;width:11.05%'> </span>Slope1:
+ (y12 - y11) / (x12 - x11)&#13;</span></div>
+ <div class=B style='position:absolute;top:37.0%;left:5.99%;width:90.44%;
+ height:3.5%'><span style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:50%'><span style='mso-tab-count:2;width:11.05%'> </span>Slope2:
+ (y22 - y21) / (x22 - x21)&#13;</span></div>
+ <div class=B style='position:absolute;top:41.25%;left:5.99%;width:90.44%;
+ height:3.5%'><span style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:50%'><span style='mso-tab-count:2;width:11.05%'> </span>Slope1
+ &lt; Slope2 iff (y12 - y11)(x22 - x21) &lt; (x12 - x11)(y22 - y21)&#13;</span></div>
+ <div class=B><span style='position:absolute;top:46.5%;left:9.73%;width:86.7%;
+ height:6.75%'><span class=BB style='position:absolute;left:-4.31%'>•</span>Cross
+ multiplication avoids integer </span><span style='position:absolute;
+ top:53.5%;left:9.73%;width:86.7%;height:6.75%'>truncation of division&#13;</span></div>
+ <div class=B><span style='position:absolute;top:62.25%;left:9.73%;width:95.69%;
+ height:6.75%'><span class=BB style='position:absolute;left:-3.91%'>•</span>Requires
+ 65 bits for signed 32 bit integer </span><span style='position:absolute;
+ top:69.25%;left:9.73%;width:86.7%;height:6.75%'>coordinates&#13;</span></div>
+ <div class=B1><span style='position:absolute;top:77.5%;left:14.04%;width:90.44%;
+ height:6.0%'><span class=B1B style='position:absolute;left:-3.31%'>–</span>Use
+ long double, multi-precision, SSE quad </span><span style='position:absolute;
+ top:83.75%;left:14.04%;width:85.2%;height:6.0%'>word, or unsigned 64 bit
+ integer with sign </span><span style='position:absolute;top:90.0%;left:14.04%;
+ width:82.39%;height:6.0%'>computed separately<span style='font-size:50%;
+ mso-special-format:lastCR;display:none'>&#13;</span></span></div>
+ </div>
+ <v:line id="_x0000_s44037" style='position:absolute;flip:y' from="581.25pt,149.25pt"
+ to="642.125pt,175.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s44038" style='position:absolute;flip:y' from="588.625pt,161.75pt"
+ to="643pt,183.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s44040" style='position:absolute;left:606pt;top:173pt;
+ width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s44041" style='position:absolute;left:587.5pt;
+ top:143.375pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s44042" style='position:absolute;left:652.625pt;
+ top:159.625pt;width:56.375pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s44037,_x0000_s44038"
+ src="slide0040_image439.gif" style='position:absolute;top:27.5%;left:80.71%;
+ width:8.98%;height:7.0%'><![endif]>
+ <div v:shape="_x0000_s44040" class=B style='position:absolute;top:32.75%;
+ left:85.2%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>b</span></div>
+ <div v:shape="_x0000_s44041" class=B style='position:absolute;top:27.5%;
+ left:82.58%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a</span></div>
+ <div v:shape="_x0000_s44042" class=B style='position:absolute;top:30.5%;
+ left:91.57%;width:6.74%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a &lt; b?</span></div>
+ <v:roundrect id="_x0000_s44043" style='position:absolute;left:567.875pt;top:129.875pt;
+ width:141.75pt;height:77.25pt;mso-wrap-style:none;v-text-anchor:middle'
+ arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><![if !vml]><img border=0 v:shapes="_x0000_s44043"
+ src="slide0040_image440.gif" style='position:absolute;top:24.0%;left:78.83%;
+ width:20.03%;height:14.75%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0040_image439.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0040_image440.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0041.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0041.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,120 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Taking Things One Step Further">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="44"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>36</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s45058"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s45059" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:9in;height:228.75pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s45058" class=T style='position:absolute;top:8.0%;
+ left:-2.43%;width:105.05%;height:9.25%'>Taking Things One Step Further</div>
+ <div v:shape="_x0000_s45059" class=B>
+ <div style='position:absolute;top:24.25%;left:5.99%;width:89.13%;height:6.0%'><span
+ style='position:absolute;top:0%;left:4.2%;width:95.79%;height:100.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-4.38%'>•</span></span><span
+ style='font-size:88%'>The Booleans algorithm is parameterized&#13;</span></span></div>
+ <span style='position:absolute;top:31.75%;left:9.73%;width:87.82%;height:6.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-4.26%'>•</span></span><span
+ style='font-size:88%'>N layer operations are implemented with a </span></span><span
+ style='position:absolute;top:38.0%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>single pass of the same algorithm&#13;</span></span><span
+ style='position:absolute;top:45.5%;left:9.73%;width:86.89%;height:6.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-4.31%'>•</span></span><span
+ style='font-size:88%'>Is used to provide connectivity extraction / </span></span><span
+ style='position:absolute;top:51.74%;left:9.73%;width:87.82%;height:6.0%'><span
+ style='font-size:88%'>spatial map join and property merge / map </span></span><span
+ style='position:absolute;top:57.99%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>overlay</span></span></div>
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s45060" type="#_x0000_t75" style='position:absolute;
+ left:14.125pt;top:354.75pt;width:706.625pt;height:185.25pt'>
+ <v:imagedata src="slide0010_image083.gif" o:title=""/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s45060"
+ src="slide0010_image083.gif" style='position:absolute;top:65.75%;left:1.87%;
+ width:98.12%;height:34.25%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,176 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: Robust Comparison Of Point and Line Segment">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="45"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>40</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s46082"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s46083" type="#_x0000_m1027"
+ style='position:absolute;left:19pt;top:257.5pt;width:690.25pt;height:224.875pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:line id="_x0000_s46086"
+ style='position:absolute;flip:y' from="363.125pt,137.5pt" to="424pt,163.5pt"
+ strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s46087" style='position:absolute;left:220.25pt;
+ top:139.5pt;width:135.125pt;height:46.375pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s46088" style='position:absolute;left:414.625pt;
+ top:124.125pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s46089" style='position:absolute;left:369.375pt;
+ top:131.625pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s46090" style='position:absolute;left:429.25pt;
+ top:122.625pt;width:63.875pt;height:70.875pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s46086"
+ src="slide0042_image441.gif" style='position:absolute;top:25.5%;left:50.37%;
+ width:8.8%;height:5.25%'><![endif]>
+ <div v:shape="_x0000_s46082" class=T><span style='position:absolute;
+ top:4.0%;left:1.12%;width:98.12%;height:8.5%'><span style='font-size:91%'>Robust
+ Comparison Of Point and </span></span><span style='position:absolute;
+ top:12.75%;left:5.99%;width:88.2%;height:8.5%'><span style='font-size:91%'>Line
+ Segment</span></span></div>
+ <div v:shape="_x0000_s46083" class=B><span style='position:absolute;
+ top:48.75%;left:7.3%;width:95.5%;height:6.75%'><span class=BB
+ style='position:absolute;left:-3.92%'>•</span>Make a 2<span style='font-size:
+ 66%;position:relative;top:-.45em;mso-text-raise:30%'>nd</span><span
+ style='mso-spacerun:yes'> </span>segment from one end of the </span><span
+ style='position:absolute;top:55.75%;left:7.3%;width:90.26%;height:6.75%'>segment
+ to the point&#13;</span>
+ <div style='position:absolute;top:64.5%;left:3.55%;width:94.0%;height:6.75%'><span
+ style='position:absolute;top:0%;left:3.98%;width:96.01%;height:100.0%'><span
+ class=BB style='position:absolute;left:-4.14%'>•</span>Compare slopes</span></div>
+ </div>
+ <div v:shape="_x0000_s46087" class=B>
+ <div style='position:absolute;top:26.75%;left:31.64%;width:16.85%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>Point On Above &#13;</span></div>
+ <div style='position:absolute;top:30.5%;left:31.64%;width:19.28%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>or Below Segment</span></div>
+ </div>
+ <div v:shape="_x0000_s46088" class=B style='position:absolute;top:23.75%;
+ left:58.61%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>b</span></div>
+ <div v:shape="_x0000_s46089" class=B style='position:absolute;top:25.25%;
+ left:52.24%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a</span></div>
+ <div v:shape="_x0000_s46090" class=B>
+ <div style='position:absolute;top:23.5%;left:60.67%;width:7.11%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>a &lt; b?&#13;</span></div>
+ <div style='position:absolute;top:27.25%;left:60.67%;width:8.05%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>a == b?&#13;</span></div>
+ <div style='position:absolute;top:31.0%;left:60.67%;width:7.11%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>a &gt; b?&#13;</span></div>
+ <div style='position:absolute;top:34.75%;left:60.67%;width:7.11%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <v:roundrect id="_x0000_s46091" style='position:absolute;left:349.75pt;top:118.125pt;
+ width:141.75pt;height:77.25pt;mso-wrap-style:none;v-text-anchor:middle'
+ arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><![if !vml]><img border=0 v:shapes="_x0000_s46091"
+ src="slide0042_image442.gif" style='position:absolute;top:21.75%;left:48.5%;
+ width:20.03%;height:14.75%'><![endif]><v:oval id="_x0000_s46092" style='position:absolute;
+ left:532.25pt;top:360.875pt;width:7pt;height:7pt;mso-wrap-style:none;
+ v-text-anchor:middle' fillcolor="black" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:line id="_x0000_s46093" style='position:absolute;flip:y' from="511.625pt,352.875pt"
+ to="572.5pt,378.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s46094" style='position:absolute;flip:y' from="510.25pt,366.125pt"
+ to="533.25pt,378.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0
+ v:shapes="_x0000_s46092,_x0000_s46093,_x0000_s46094"
+ src="slide0042_image443.gif" style='position:absolute;top:65.25%;left:70.78%;
+ width:8.98%;height:5.25%'><![endif]><v:oval id="_x0000_s46095" style='position:absolute;
+ left:378.75pt;top:150.875pt;width:7pt;height:7pt;mso-wrap-style:none;
+ v-text-anchor:middle' fillcolor="black" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s46095"
+ src="slide0042_image444.gif" style='position:absolute;top:27.75%;left:52.62%;
+ width:1.31%;height:1.75%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042_image441.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042_image442.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042_image443.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0042_image444.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,191 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: Robust Calculation of Slope Intercept">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="47"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>43</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s48130"
+ type="#_x0000_m1026" style='position:absolute;left:16pt;top:21.625pt;width:685.75pt;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s48131" type="#_x0000_m1027"
+ style='position:absolute;left:10.75pt;top:174.25pt;width:698.5pt;height:350.5pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s48130" class=T style='position:absolute;top:8.5%;
+ left:-5.24%;width:110.29%;height:8.5%'><span style='font-size:91%'>Robust
+ Calculation of Slope Intercept</span></div>
+ <div v:shape="_x0000_s48131" class=B><span style='position:absolute;
+ top:33.25%;left:6.17%;width:100.18%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-3.73%'>•</span></span><span
+ style='font-size:88%'>Apply GMP multi-precision rational and compute </span></span><span
+ style='position:absolute;top:39.5%;left:6.17%;width:91.38%;height:6.0%'><span
+ style='font-size:88%'>exact result&#13;</span></span>
+ <div style='position:absolute;top:47.25%;left:2.43%;width:95.13%;height:6.75%'><span
+ style='position:absolute;top:0%;left:3.93%;width:96.06%;height:100.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-4.09%;
+ top:.13em'>•</span></span><span style='font-size:88%'>To compare two slope
+ intercepts</span> &#13;</span></div>
+ <div style='position:absolute;top:55.75%;left:2.43%;width:95.13%;height:6.75%'><span
+ style='position:absolute;top:0%;left:3.93%;width:96.06%;height:100.0%'><span
+ style='visibility:hidden'><span class=BB style='position:absolute;left:-4.09%'>•</span></span>&#13;</span></div>
+ <div style='position:absolute;top:64.25%;left:2.43%;width:95.13%;height:6.75%'><span
+ style='position:absolute;top:0%;left:3.93%;width:96.06%;height:100.0%'><span
+ style='visibility:hidden'><span class=BB style='position:absolute;left:-4.09%'>•</span></span>&#13;</span></div>
+ <div style='position:absolute;top:72.75%;left:2.43%;width:95.13%;height:6.75%'><span
+ style='position:absolute;top:0%;left:3.93%;width:96.06%;height:100.0%'><span
+ style='visibility:hidden'><span class=BB style='position:absolute;left:-4.09%'>•</span></span>&#13;</span></div>
+ <div style='position:absolute;top:81.0%;left:2.43%;width:95.13%;height:6.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:88%'><span style='mso-tab-count:3;width:21.02%'> </span>(requires
+ 97 bits of precision)</span></div>
+ </div>
+ <v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe">
+ <v:stroke joinstyle="miter"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ </v:shapetype><v:shape id="_x0000_s48134" type="#_x0000_t202" style='position:absolute;
+ left:39.75pt;top:297.25pt;width:680.25pt;height:131.25pt;
+ mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
+ stroked="f">
+ <v:textbox style='mso-next-textbox:#_x0000_s48134'/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s48134"
+ src="slide0044_image450.gif" style='position:absolute;top:55.0%;left:5.43%;
+ width:94.75%;height:24.75%'><![endif]>
+ <div v:shape="_x0000_s48134" class=O>
+ <div style='position:absolute;top:56.0%;left:6.55%;width:92.69%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'>//Segment 1: (x11,y11) to
+ (x12, y12)&#13;</span></div>
+ <div style='position:absolute;top:60.25%;left:6.55%;width:92.69%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'>//Segment 2: (x21,y21) to
+ (x22, y22)&#13;</span></div>
+ <div style='position:absolute;top:64.75%;left:6.55%;width:92.69%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'>y1 &lt; y2 iff &#13;</span></div>
+ <div style='position:absolute;top:69.25%;left:6.55%;width:108.23%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'><span
+ style='mso-spacerun:yes'> </span>(x22 - x21)((x - x11)(y12 - y11) + y11(x12 -
+ x 11)) &lt;&#13;</span></div>
+ <div style='position:absolute;top:73.5%;left:6.55%;width:104.11%;height:4.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'><span
+ style='mso-spacerun:yes'> </span>(x12 - x11)((x - x21)(y22 - y21) + y21(x22 -
+ x 21))</span><span style='font-size:111%;mso-special-format:lastCR;display:
+ none'>&#13;</span></div>
+ </div>
+ <v:line id="_x0000_s48135" style='position:absolute' from="307.25pt,131.375pt"
+ to="356.25pt,143.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s48135"
+ src="slide0044_image451.gif" style='position:absolute;top:24.25%;left:42.69%;
+ width:7.3%;height:2.75%'><![endif]><v:line id="_x0000_s48136" style='position:absolute;
+ flip:y' from="331.75pt,111.125pt" to="332.75pt,168.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s48138" style='position:absolute;left:328.625pt;
+ top:154.375pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s48139" style='position:absolute;left:377.25pt;
+ top:132.125pt;width:56.375pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s48136"
+ src="slide0044_image452.gif" style='position:absolute;top:20.5%;left:46.06%;
+ width:.56%;height:11.25%'><![endif]>
+ <div v:shape="_x0000_s48138" class=B style='position:absolute;top:29.5%;
+ left:46.62%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>x</span></div>
+ <div v:shape="_x0000_s48139" class=B style='position:absolute;top:25.25%;
+ left:53.37%;width:5.99%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>y?</span></div>
+ <v:roundrect id="_x0000_s48140" style='position:absolute;left:292.5pt;top:102.375pt;
+ width:141.75pt;height:77.25pt;mso-wrap-style:none;v-text-anchor:middle'
+ arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:rect id="_x0000_s48141" style='position:absolute;left:317.25pt;
+ top:113.75pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s48140"
+ src="slide0044_image453.gif" style='position:absolute;top:19.0%;left:40.63%;
+ width:20.03%;height:14.75%'><![endif]>
+ <div v:shape="_x0000_s48141" class=B style='position:absolute;top:22.0%;
+ left:45.13%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>y</span></div>
+ <v:oval id="_x0000_s48142" style='position:absolute;left:329pt;top:133.875pt;
+ width:7pt;height:7pt;mso-wrap-style:none;v-text-anchor:middle' fillcolor="black"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s48142"
+ src="slide0044_image454.gif" style='position:absolute;top:24.75%;left:45.69%;
+ width:1.31%;height:1.75%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044_image450.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044_image451.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044_image452.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044_image453.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0044_image454.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0045.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0045.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,131 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: Robust Line Segment Intersection Check">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="48"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>41</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s49154"
+ type="#_x0000_m1026" style='position:absolute;left:0;top:20.125pt;width:10in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s49155" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:202.375pt;width:9in;height:280pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:roundrect id="_x0000_s49156"
+ style='position:absolute;left:301.625pt;top:115.875pt;width:141.75pt;
+ height:77.25pt;mso-wrap-style:none;v-text-anchor:middle' arcsize="10923f"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:line id="_x0000_s49157" style='position:absolute;flip:y'
+ from="314.125pt,130pt" to="375pt,156pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s49158" style='position:absolute;flip:y' from="321.5pt,140.375pt"
+ to="352.125pt,164.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s49159" style='position:absolute;left:338.875pt;
+ top:153.75pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s49160" style='position:absolute;left:320.375pt;
+ top:124.125pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s49161" style='position:absolute;left:378.75pt;
+ top:145.625pt;width:56.375pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0
+ v:shapes="_x0000_s49156,_x0000_s49157,_x0000_s49158"
+ src="slide0045_image445.gif" style='position:absolute;top:21.5%;left:41.76%;
+ width:20.03%;height:14.75%'><![endif]>
+ <div v:shape="_x0000_s49154" class=T><span style='position:absolute;
+ top:3.75%;left:-.18%;width:100.74%;height:8.5%'><span style='font-size:91%'>Robust
+ Line Segment Intersection </span></span><span style='position:absolute;
+ top:12.5%;left:.93%;width:98.12%;height:8.5%'><span style='font-size:91%'>Check</span></span></div>
+ <div v:shape="_x0000_s49155" class=B><span style='position:absolute;
+ top:38.5%;left:9.73%;width:92.88%;height:6.75%'><span class=BB
+ style='position:absolute;left:-4.03%'>•</span>Compute whether the two ends of
+ each </span><span style='position:absolute;top:45.75%;left:9.73%;width:98.68%;
+ height:6.75%'>segment are on, above or below the other </span><span
+ style='position:absolute;top:52.75%;left:9.73%;width:84.45%;height:6.75%'>segment&#13;</span><span
+ style='position:absolute;top:61.25%;left:9.73%;width:95.69%;height:6.75%'><span
+ class=BB style='position:absolute;left:-3.91%'>•</span>Both points of one
+ segment on the same </span><span style='position:absolute;top:68.5%;
+ left:9.73%;width:91.94%;height:6.75%'>side of the other means no intersection </span></div>
+ <div v:shape="_x0000_s49159" class=B style='position:absolute;top:29.25%;
+ left:48.12%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>b</span></div>
+ <div v:shape="_x0000_s49160" class=B style='position:absolute;top:23.75%;
+ left:45.5%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a</span></div>
+ <div v:shape="_x0000_s49161" class=B style='position:absolute;top:27.75%;
+ left:53.55%;width:6.92%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a X b?</span></div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0045_image445.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0046.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0046.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,196 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: Robust Calculation of Line Segment Intersection Point">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="49"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>44</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s50178"
+ type="#_x0000_m1026" style='position:absolute;left:16pt;top:21.625pt;width:685.75pt;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s50179" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:198.75pt;width:9in;height:283.625pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:shapetype id="_x0000_t202"
+ coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe">
+ <v:stroke joinstyle="miter"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ </v:shapetype><v:shape id="_x0000_s50180" type="#_x0000_t202" style='position:absolute;
+ left:74.75pt;top:284.625pt;width:550.625pt;height:255.375pt;
+ mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
+ stroked="f">
+ <v:textbox style='mso-next-textbox:#_x0000_s50180'/>
+ </v:shape><v:line id="_x0000_s50181" style='position:absolute' from="308pt,2in"
+ to="357pt,155.875pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s50182" style='position:absolute;flip:y' from="314pt,131.25pt"
+ to="351.375pt,168.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s50183" style='position:absolute;left:347.625pt;
+ top:150.75pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s50184" style='position:absolute;left:344.875pt;
+ top:122.5pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s50185" style='position:absolute;left:378pt;top:144.75pt;
+ width:56.375pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0
+ v:shapes="_x0000_s50180,_x0000_s50181,_x0000_s50182"
+ src="slide0046_image455.gif" style='position:absolute;top:24.25%;left:10.29%;
+ width:76.77%;height:76.25%'><![endif]>
+ <div v:shape="_x0000_s50178" class=T><span style='position:absolute;
+ top:4.0%;left:-3.37%;width:106.55%;height:8.5%'><span style='font-size:91%'>Robust
+ Calculation of Line Segment </span></span><span style='position:absolute;
+ top:12.75%;left:3.18%;width:93.44%;height:8.5%'><span style='font-size:91%'>Intersection
+ Point</span></span></div>
+ <div v:shape="_x0000_s50179" class=B><span style='position:absolute;
+ top:37.75%;left:9.73%;width:92.32%;height:6.75%'><span class=BB
+ style='position:absolute;left:-4.05%'>•</span>Apply GMP multi-precision
+ rational and </span><span style='position:absolute;top:45.0%;left:9.73%;
+ width:84.45%;height:6.75%'>compute exact result.</span></div>
+ <div v:shape="_x0000_s50180" class=O>
+ <div style='position:absolute;top:53.5%;left:11.42%;width:74.71%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'>//Segment 1: (x11,y11) to
+ (x12, y12)&#13;</span></div>
+ <div style='position:absolute;top:57.99%;left:11.42%;width:74.71%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'>dx1 = x12 - x11;<span
+ style='mso-spacerun:yes'>  </span>dy1 = y12 - y11;&#13;</span></div>
+ <div style='position:absolute;top:62.5%;left:11.42%;width:74.71%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'>//Segment 2: (x21,y21) to
+ (x22, y22)&#13;</span></div>
+ <div style='position:absolute;top:67.0%;left:11.42%;width:74.71%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'>dx2 = x22 - x21;<span
+ style='mso-spacerun:yes'>  </span>dy2 = y22 - y21;&#13;</span></div>
+ <div style='position:absolute;top:71.25%;left:11.42%;width:80.14%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'>x = (x11 * dy1 * dx2 – x21
+ * dy2 * dx1 + &#13;</span></div>
+ <div style='position:absolute;top:75.75%;left:11.42%;width:82.2%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'><span
+ style='mso-spacerun:yes'>     </span>y21 * dx1 * dx2 - y11 * dx1 * dx2) /
+ &#13;</span></div>
+ <div style='position:absolute;top:80.25%;left:11.42%;width:74.71%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'><span
+ style='mso-spacerun:yes'>     </span>(dy1 * dx2 - dy2 * dx1); &#13;</span></div>
+ <div style='position:absolute;top:84.75%;left:11.42%;width:80.14%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'>y = (y11 * dx1 * dy2 - y21
+ * dx2 * dy1 + &#13;</span></div>
+ <div style='position:absolute;top:89.0%;left:11.42%;width:82.2%;height:4.5%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'><span
+ style='mso-spacerun:yes'>     </span>x21 * dy1 * dy2 - x11 * dy1 * dy2) /
+ &#13;</span></div>
+ <div style='position:absolute;top:93.25%;left:11.42%;width:74.71%;height:4.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:111%'><span
+ style='mso-spacerun:yes'>     </span>(dx1 * dy2 - dx2 * dy1); </span><span
+ style='font-size:111%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s50183" class=B style='position:absolute;top:28.74%;
+ left:49.25%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>b</span></div>
+ <div v:shape="_x0000_s50184" class=B style='position:absolute;top:23.5%;
+ left:48.87%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a</span></div>
+ <div v:shape="_x0000_s50185" class=B style='position:absolute;top:27.75%;
+ left:53.55%;width:5.99%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>p?</span></div>
+ <v:roundrect id="_x0000_s50186" style='position:absolute;left:293.25pt;top:115pt;
+ width:141.75pt;height:77.25pt;mso-wrap-style:none;v-text-anchor:middle'
+ arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:rect id="_x0000_s50187" style='position:absolute;left:320.25pt;
+ top:124.875pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:oval id="_x0000_s50188" style='position:absolute;left:329.75pt;
+ top:146.5pt;width:7pt;height:7pt;mso-wrap-style:none;v-text-anchor:middle'
+ fillcolor="black" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s50186,_x0000_s50188"
+ src="slide0046_image456.gif" style='position:absolute;top:21.25%;left:40.63%;
+ width:20.03%;height:14.75%'><![endif]>
+ <div v:shape="_x0000_s50187" class=B style='position:absolute;top:24.0%;
+ left:45.5%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>p</span></div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0046_image455.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0046_image456.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0047.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0047.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,94 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: Robust Snapping of Non-Integer Intersection Points to Grid">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml" href="slide0047.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>45</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><p:shaperange
+ href="master03.xml#_x0000_m1027"/><p:shaperange
+ href="slide0047.xml#_x0000_s51202"/><![if !vml]><img border=0
+ v:shapes="_x0000_s51204,_x0000_s51205,_x0000_s51206,_x0000_s51207,_x0000_s51208,_x0000_s51209,_x0000_s51210,_x0000_s51211,_x0000_s51212,_x0000_s51213,_x0000_s51214,_x0000_s51215,_x0000_s51216,_x0000_s51217,_x0000_s51218,_x0000_s51219,_x0000_s51220,_x0000_s51221,_x0000_s51222,_x0000_s51223,_x0000_s51224,_x0000_s51225,_x0000_s51226,_x0000_s51227,_x0000_s51228,_x0000_s51229,_x0000_s51230,_x0000_s51231,_x0000_s51232,_x0000_s51233,_x0000_s51234,_x0000_s51235,_x0000_s51236,_x0000_s51237,_x0000_s51238,_x0000_s51239,_x0000_s51240,_x0000_s51241,_x0000_s51242,_x0000_s51243,_x0000_s51244,_x0000_s51245,_x0000_s51246,_x0000_s51247,_x0000_s51248,_x0000_s51249,_x0000_s51250,_x0000_s51251,_x0000_s51252,_x0000_s51253,_x0000_s51254,_x0000_s51255,_x0000_s51256,_x0000_s51257,_x0000_s51258,_x0000_s51259,_x0000_s51260,_x0000_s51261,_x0000_s51262,_x0000_s51263,_x0000_s51264,_x0000_s51265,_x0000_s51266,_x0000_s51267,_x0000_s51268,_x0000_s51269,_x0000_s51270,_x0000_s51271,_x0000_s51272,_x0000_s51273,_x0000_s51274,_x0000_s51275,_x0
000_s51276,_x0000_s51277,_x0000_s51278,_x0000_s51279,_x0000_s51280,_x0000_s51281"
+ src="slide0047_image457.gif" style='position:absolute;top:24.75%;left:56.36%;
+ width:40.44%;height:25.0%'><![endif]>
+ <div v:shape="_x0000_s51202" class=T><span style='position:absolute;
+ top:4.0%;left:2.05%;width:95.88%;height:8.5%'><span style='font-size:91%'>Robust
+ Snapping of Non-Integer </span></span><span style='position:absolute;
+ top:12.75%;left:5.99%;width:88.2%;height:8.5%'><span style='font-size:91%'>Intersection
+ Points to Grid</span></span></div>
+ <div v:shape="_x0000_s51203" class=B><span style='position:absolute;
+ top:24.5%;left:9.73%;width:45.69%;height:6.75%'><span class=BB
+ style='position:absolute;left:-8.19%'>•</span>Truncate down and </span><span
+ style='position:absolute;top:31.5%;left:9.73%;width:39.32%;height:6.75%'>to
+ left&#13;</span><span style='position:absolute;top:40.0%;left:9.73%;
+ width:40.82%;height:6.75%'><span class=BB style='position:absolute;left:-9.17%'>•</span>Causes
+ Edges to </span><span style='position:absolute;top:47.25%;left:9.73%;
+ width:39.32%;height:6.75%'>move slightly&#13;</span><span style='position:
+ absolute;top:55.75%;left:9.73%;width:44.94%;height:6.75%'><span class=BB
+ style='position:absolute;left:-8.33%'>•</span>Moving edges may </span><span
+ style='position:absolute;top:62.74%;left:9.73%;width:42.13%;height:6.75%'>introduce
+ artifacts&#13;</span><span style='position:absolute;top:71.25%;left:9.73%;
+ width:39.32%;height:6.75%'><span class=BB style='position:absolute;left:-9.52%'>•</span>Non
+ overlapping </span><span style='position:absolute;top:78.5%;left:9.73%;
+ width:46.62%;height:6.75%'>edges may become </span><span style='position:absolute;
+ top:85.5%;left:9.73%;width:46.62%;height:6.75%'>parallel and overlap</span></div>
+ <p:shaperange href="slide0047.xml#_x0000_s51282"/><![if !vml]><img border=0
+ v:shapes="_x0000_s51282,_x0000_s51283,_x0000_s51284,_x0000_s51285,_x0000_s51286,_x0000_s51287,_x0000_s51288,_x0000_s51289,_x0000_s51290,_x0000_s51291,_x0000_s51292,_x0000_s51293,_x0000_s51294,_x0000_s51295,_x0000_s51296,_x0000_s51297,_x0000_s51298,_x0000_s51299,_x0000_s51300,_x0000_s51301,_x0000_s51302,_x0000_s51303,_x0000_s51304,_x0000_s51305,_x0000_s51306,_x0000_s51307,_x0000_s51308,_x0000_s51309,_x0000_s51310,_x0000_s51311,_x0000_s51312,_x0000_s51313,_x0000_s51314,_x0000_s51315,_x0000_s51316,_x0000_s51317,_x0000_s51318,_x0000_s51319,_x0000_s51320,_x0000_s51321,_x0000_s51322,_x0000_s51323,_x0000_s51324,_x0000_s51325,_x0000_s51326,_x0000_s51327,_x0000_s51328,_x0000_s51329,_x0000_s51330,_x0000_s51331,_x0000_s51332,_x0000_s51333,_x0000_s51334,_x0000_s51335,_x0000_s51336,_x0000_s51337,_x0000_s51338,_x0000_s51339,_x0000_s51340,_x0000_s51341,_x0000_s51342,_x0000_s51343,_x0000_s51344,_x0000_s51345,_x0000_s51346,_x0000_s51347,_x0000_s51348,_x0000_s51349,_x0000_s51350,_x0000_s51351,_x0000_s51352,_x0000_s51353,_x0
000_s51354,_x0000_s51355,_x0000_s51356,_x0000_s51357,_x0000_s51358,_x0000_s51359,_x0000_s51360,_x0000_s51361"
+ src="slide0047_image458.gif" style='position:absolute;top:67.5%;left:54.11%;
+ width:40.44%;height:26.0%'><![endif]></p:slide>
+</div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0047.xml
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0047.xml 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,930 @@
+<xml xmlns:v="urn:schemas-microsoft-com:vml"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+ xmlns:oa="urn:schemas-microsoft-com:office:activation">
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="50"/>
+ </o:shapelayout><p:shaperange id="_x0000_s51202">
+ <v:shape id="_x0000_s51202" type="#_x0000_m1026" style='position:absolute;
+ left:36pt;top:21.625pt;width:9in;height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/>
+ </v:shape><v:shape id="_x0000_s51203" type="#_x0000_m1027" style='position:absolute;
+ left:36pt;top:126pt;width:323.625pt;height:382.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/>
+ </v:shape><v:rect id="_x0000_s51204" style='position:absolute;left:430pt;
+ top:170.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51205" style='position:absolute;left:442pt;
+ top:182.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51206" style='position:absolute;left:454pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51207" style='position:absolute;left:466pt;
+ top:206.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51208" style='position:absolute;left:478pt;
+ top:218.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51209" style='position:absolute;left:490pt;
+ top:230.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51210" style='position:absolute;left:442pt;
+ top:158.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51211" style='position:absolute;left:454pt;
+ top:170.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51212" style='position:absolute;left:466pt;
+ top:182.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51213" style='position:absolute;left:478pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51214" style='position:absolute;left:490pt;
+ top:206.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51215" style='position:absolute;left:502pt;
+ top:218.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51216" style='position:absolute;left:418pt;
+ top:182.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51217" style='position:absolute;left:430pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51218" style='position:absolute;left:442pt;
+ top:206.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51219" style='position:absolute;left:454pt;
+ top:218.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51220" style='position:absolute;left:466pt;
+ top:230.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51221" style='position:absolute;left:478pt;
+ top:242.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51222" style='position:absolute;left:454pt;
+ top:146.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51223" style='position:absolute;left:466pt;
+ top:158.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51224" style='position:absolute;left:478pt;
+ top:170.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51225" style='position:absolute;left:490pt;
+ top:182.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51226" style='position:absolute;left:502pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51227" style='position:absolute;left:514pt;
+ top:206.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51228" style='position:absolute;left:406pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51229" style='position:absolute;left:418pt;
+ top:206.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51230" style='position:absolute;left:430pt;
+ top:218.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51231" style='position:absolute;left:442pt;
+ top:230.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51232" style='position:absolute;left:454pt;
+ top:242.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51233" style='position:absolute;left:466pt;
+ top:254.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51234" style='position:absolute;left:466pt;
+ top:134.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51235" style='position:absolute;left:478pt;
+ top:146.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51236" style='position:absolute;left:490pt;
+ top:158.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51237" style='position:absolute;left:502pt;
+ top:170.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51238" style='position:absolute;left:514pt;
+ top:182.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51239" style='position:absolute;left:526pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s51240" style='position:absolute' from="454pt,158.25pt"
+ to="502pt,242.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s51241" style='position:absolute;flip:y' from="418pt,206.25pt"
+ to="526pt,218.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s51242" style='position:absolute;left:586pt;
+ top:170.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51243" style='position:absolute;left:598pt;
+ top:182.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51244" style='position:absolute;left:610pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51245" style='position:absolute;left:622pt;
+ top:206.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51246" style='position:absolute;left:634pt;
+ top:218.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51247" style='position:absolute;left:646pt;
+ top:230.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51248" style='position:absolute;left:598pt;
+ top:158.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51249" style='position:absolute;left:610pt;
+ top:170.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51250" style='position:absolute;left:622pt;
+ top:182.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51251" style='position:absolute;left:634pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51252" style='position:absolute;left:646pt;
+ top:206.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51253" style='position:absolute;left:658pt;
+ top:218.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51254" style='position:absolute;left:574pt;
+ top:182.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51255" style='position:absolute;left:586pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51256" style='position:absolute;left:598pt;
+ top:206.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51257" style='position:absolute;left:610pt;
+ top:218.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51258" style='position:absolute;left:622pt;
+ top:230.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51259" style='position:absolute;left:634pt;
+ top:242.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51260" style='position:absolute;left:610pt;
+ top:146.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51261" style='position:absolute;left:622pt;
+ top:158.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51262" style='position:absolute;left:634pt;
+ top:170.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51263" style='position:absolute;left:646pt;
+ top:182.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51264" style='position:absolute;left:658pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51265" style='position:absolute;left:670pt;
+ top:206.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51266" style='position:absolute;left:562pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51267" style='position:absolute;left:574pt;
+ top:206.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51268" style='position:absolute;left:586pt;
+ top:218.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51269" style='position:absolute;left:598pt;
+ top:230.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51270" style='position:absolute;left:610pt;
+ top:242.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51271" style='position:absolute;left:622pt;
+ top:254.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51272" style='position:absolute;left:622pt;
+ top:134.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51273" style='position:absolute;left:634pt;
+ top:146.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51274" style='position:absolute;left:646pt;
+ top:158.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51275" style='position:absolute;left:658pt;
+ top:170.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51276" style='position:absolute;left:670pt;
+ top:182.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51277" style='position:absolute;left:682pt;
+ top:194.25pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s51278" style='position:absolute' from="610pt,158.25pt"
+ to="634pt,218.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s51279" style='position:absolute;flip:y' from="574pt,218.25pt"
+ to="634pt,218.375pt" strokecolor="black [1]" strokeweight="1.25pt">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s51280" style='position:absolute' from="634pt,218.25pt"
+ to="658pt,242.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s51281" style='position:absolute;flip:y' from="634pt,206.25pt"
+ to="682pt,218.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+ <p:shaperange id="_x0000_s51282">
+ <v:rect id="_x0000_s51282" style='position:absolute;left:414.125pt;top:401.125pt;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51283" style='position:absolute;left:426.125pt;
+ top:413.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51284" style='position:absolute;left:438.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51285" style='position:absolute;left:450.125pt;
+ top:437.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51286" style='position:absolute;left:462.125pt;
+ top:449.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51287" style='position:absolute;left:474.125pt;
+ top:461.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51288" style='position:absolute;left:426.125pt;
+ top:389.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51289" style='position:absolute;left:438.125pt;
+ top:401.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51290" style='position:absolute;left:450.125pt;
+ top:413.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51291" style='position:absolute;left:462.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51292" style='position:absolute;left:474.125pt;
+ top:437.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51293" style='position:absolute;left:486.125pt;
+ top:449.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51294" style='position:absolute;left:402.125pt;
+ top:413.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51295" style='position:absolute;left:414.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51296" style='position:absolute;left:426.125pt;
+ top:437.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51297" style='position:absolute;left:438.125pt;
+ top:449.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51298" style='position:absolute;left:450.125pt;
+ top:461.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51299" style='position:absolute;left:462.125pt;
+ top:473.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51300" style='position:absolute;left:438.125pt;
+ top:377.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51301" style='position:absolute;left:450.125pt;
+ top:389.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51302" style='position:absolute;left:462.125pt;
+ top:401.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51303" style='position:absolute;left:474.125pt;
+ top:413.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51304" style='position:absolute;left:486.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51305" style='position:absolute;left:498.125pt;
+ top:437.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51306" style='position:absolute;left:390.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51307" style='position:absolute;left:402.125pt;
+ top:437.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51308" style='position:absolute;left:414.125pt;
+ top:449.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51309" style='position:absolute;left:426.125pt;
+ top:461.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51310" style='position:absolute;left:438.125pt;
+ top:473.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51311" style='position:absolute;left:450.125pt;
+ top:485.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51312" style='position:absolute;left:450.125pt;
+ top:365.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51313" style='position:absolute;left:462.125pt;
+ top:377.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51314" style='position:absolute;left:474.125pt;
+ top:389.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51315" style='position:absolute;left:486.125pt;
+ top:401.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51316" style='position:absolute;left:498.125pt;
+ top:413.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51317" style='position:absolute;left:510.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s51318" style='position:absolute;flip:y' from="414.125pt,449.125pt"
+ to="498.125pt,449.125pt" strokecolor="black [1]" strokeweight="1.25pt">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s51319" style='position:absolute;flip:y' from="402.125pt,425.125pt"
+ to="522.125pt,449.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s51320" style='position:absolute;left:570.125pt;
+ top:401.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51321" style='position:absolute;left:582.125pt;
+ top:413.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51322" style='position:absolute;left:594.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51323" style='position:absolute;left:606.125pt;
+ top:437.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51324" style='position:absolute;left:618.125pt;
+ top:449.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51325" style='position:absolute;left:630.125pt;
+ top:461.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51326" style='position:absolute;left:582.125pt;
+ top:389.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51327" style='position:absolute;left:594.125pt;
+ top:401.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51328" style='position:absolute;left:606.125pt;
+ top:413.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51329" style='position:absolute;left:618.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51330" style='position:absolute;left:630.125pt;
+ top:437.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51331" style='position:absolute;left:642.125pt;
+ top:449.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51332" style='position:absolute;left:558.125pt;
+ top:413.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51333" style='position:absolute;left:570.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51334" style='position:absolute;left:582.125pt;
+ top:437.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51335" style='position:absolute;left:594.125pt;
+ top:449.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51336" style='position:absolute;left:606.125pt;
+ top:461.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51337" style='position:absolute;left:618.125pt;
+ top:473.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51338" style='position:absolute;left:594.125pt;
+ top:377.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51339" style='position:absolute;left:606.125pt;
+ top:389.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51340" style='position:absolute;left:618.125pt;
+ top:401.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51341" style='position:absolute;left:630.125pt;
+ top:413.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51342" style='position:absolute;left:642.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51343" style='position:absolute;left:654.125pt;
+ top:437.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51344" style='position:absolute;left:546.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51345" style='position:absolute;left:558.125pt;
+ top:437.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51346" style='position:absolute;left:570.125pt;
+ top:449.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51347" style='position:absolute;left:582.125pt;
+ top:461.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51348" style='position:absolute;left:594.125pt;
+ top:473.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51349" style='position:absolute;left:606.125pt;
+ top:485.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51350" style='position:absolute;left:606.125pt;
+ top:365.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51351" style='position:absolute;left:618.125pt;
+ top:377.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51352" style='position:absolute;left:630.125pt;
+ top:389.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51353" style='position:absolute;left:642.125pt;
+ top:401.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51354" style='position:absolute;left:654.125pt;
+ top:413.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s51355" style='position:absolute;left:666.125pt;
+ top:425.125pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s51356" style='position:absolute' from="426.125pt,401.125pt"
+ to="474.125pt,473.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s51357" style='position:absolute;flip:y' from="558.125pt,449.125pt"
+ to="654.125pt,449.125pt" strokecolor="black [1]" strokeweight="1.25pt">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s51358" style='position:absolute;flip:y' from="606.125pt,425.125pt"
+ to="678.125pt,449.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s51359" style='position:absolute' from="582.125pt,401.125pt"
+ to="606.125pt,449.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s51360" style='position:absolute' from="606.125pt,449.125pt"
+ to="630.125pt,485.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s51361" style='position:absolute;flip:y' from="534.125pt,455.125pt"
+ to="576.125pt,503.125pt" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+</xml>
\ No newline at end of file

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0047_image457.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0047_image458.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,107 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Intersections Creating Intersections">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml" href="slide0048.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>47</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><p:shaperange
+ href="slide0048.xml#_x0000_s52226"/><![if !vml]><img border=0
+ v:shapes="_x0000_s52228" src="slide0048_image460.gif" style='position:absolute;
+ top:80.0%;left:81.64%;width:2.05%;height:2.75%'><![endif]>
+ <div v:shape="_x0000_s52226" class=T style='position:absolute;top:8.5%;
+ left:-2.24%;width:104.68%;height:8.5%'><span style='font-size:91%'>Intersections
+ Creating Intersections</span></div>
+ <div v:shape="_x0000_s52229" class=B><span style='position:absolute;
+ top:24.25%;left:9.73%;width:36.89%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-10.15%'>•</span></span><span
+ style='font-size:88%'>When long edges </span></span><span style='position:
+ absolute;top:30.5%;left:9.73%;width:44.19%;height:6.0%'><span
+ style='font-size:88%'>are moved by integer </span></span><span
+ style='position:absolute;top:36.75%;left:9.73%;width:36.89%;height:6.0%'><span
+ style='font-size:88%'>truncation of </span></span><span style='position:absolute;
+ top:43.0%;left:9.73%;width:36.89%;height:6.0%'><span style='font-size:88%'>intersection
+ point&#13;</span></span><span style='position:absolute;top:50.5%;left:9.73%;
+ width:42.88%;height:6.0%'><span style='font-size:88%'><span class=BB
+ style='position:absolute;left:-8.73%'>•</span></span><span style='font-size:
+ 88%'>Very close geometry </span></span><span style='position:absolute;
+ top:56.75%;left:9.73%;width:39.7%;height:6.0%'><span style='font-size:88%'>may
+ be intersected&#13;</span></span><span style='position:absolute;top:64.25%;
+ left:9.73%;width:39.7%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-9.43%'>•</span></span><span
+ style='font-size:88%'>Intersect segments </span></span><span style='position:
+ absolute;top:70.5%;left:9.73%;width:36.89%;height:6.0%'><span
+ style='font-size:88%'>with very close </span></span><span style='position:
+ absolute;top:76.75%;left:9.73%;width:36.89%;height:6.0%'><span
+ style='font-size:88%'>vertices</span></span></div>
+ <p:shaperange href="slide0048.xml#_x0000_s52230"/><![if !vml]><img border=0
+ v:shapes="_x0000_s52230,_x0000_s52231,_x0000_s52232,_x0000_s52233,_x0000_s52234,_x0000_s52235,_x0000_s52236,_x0000_s52237,_x0000_s52238,_x0000_s52239,_x0000_s52240,_x0000_s52241,_x0000_s52242,_x0000_s52243,_x0000_s52244,_x0000_s52245,_x0000_s52246,_x0000_s52247,_x0000_s52248,_x0000_s52249,_x0000_s52250,_x0000_s52251,_x0000_s52252,_x0000_s52253,_x0000_s52254,_x0000_s52255,_x0000_s52256,_x0000_s52257,_x0000_s52258,_x0000_s52259,_x0000_s52260,_x0000_s52261,_x0000_s52262,_x0000_s52263,_x0000_s52264,_x0000_s52265,_x0000_s52266,_x0000_s52267,_x0000_s52268,_x0000_s52269,_x0000_s52270,_x0000_s52271,_x0000_s52272,_x0000_s52273,_x0000_s52274,_x0000_s52275,_x0000_s52276,_x0000_s52277,_x0000_s52278,_x0000_s52279,_x0000_s52280,_x0000_s52281,_x0000_s52282,_x0000_s52283,_x0000_s52284,_x0000_s52285,_x0000_s52286,_x0000_s52287,_x0000_s52288,_x0000_s52289,_x0000_s52290,_x0000_s52291,_x0000_s52292,_x0000_s52293,_x0000_s52294,_x0000_s52295,_x0000_s52296,_x0000_s52297,_x0000_s52298,_x0000_s52299,_x0000_s52300,_x0000_s52301,_x0
000_s52302,_x0000_s52303,_x0000_s52304,_x0000_s52305,_x0000_s52306,_x0000_s52307,_x0000_s52308,_x0000_s52309,_x0000_s52310,_x0000_s52311,_x0000_s52312,_x0000_s52313,_x0000_s52314,_x0000_s52315,_x0000_s52316,_x0000_s52317,_x0000_s52318,_x0000_s52319,_x0000_s52320"
+ src="slide0048_image461.gif" style='position:absolute;top:24.5%;left:50.0%;
+ width:39.51%;height:25.0%'><![endif]>
+ <div v:shape="_x0000_s52321" class=B><span style='position:absolute;
+ top:56.49%;left:53.93%;width:45.88%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-8.16%'>•</span></span><span
+ style='font-size:88%'>Sufficient to check the </span></span><span
+ style='position:absolute;top:62.5%;left:53.93%;width:39.13%;height:6.0%'><span
+ style='font-size:88%'>upper right grid for </span></span><span
+ style='position:absolute;top:68.75%;left:53.93%;width:39.13%;height:6.0%'><span
+ style='font-size:88%'>line segments</span></span></div>
+ <p:shaperange href="slide0048.xml#_x0000_s52322"/><![if !vml]><img border=0
+ v:shapes="_x0000_s52322,_x0000_s52323,_x0000_s52324,_x0000_s52325,_x0000_s52326,_x0000_s52327,_x0000_s52328,_x0000_s52329,_x0000_s52330,_x0000_s52331,_x0000_s52332,_x0000_s52333,_x0000_s52334,_x0000_s52335,_x0000_s52336,_x0000_s52337,_x0000_s52338,_x0000_s52339,_x0000_s52340"
+ src="slide0048_image462.gif" style='position:absolute;top:75.5%;left:74.9%;
+ width:15.35%;height:20.5%'><![endif]></p:slide>
+</div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048.xml
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048.xml 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,626 @@
+<xml xmlns:v="urn:schemas-microsoft-com:vml"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+ xmlns:oa="urn:schemas-microsoft-com:office:activation">
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="51"/>
+ </o:shapelayout><p:shaperange id="_x0000_s52226">
+ <v:shape id="_x0000_s52226" type="#_x0000_m1026" style='position:absolute;
+ left:36pt;top:21.625pt;width:9in;height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/>
+ </v:shape><v:rect id="_x0000_s52228" style='position:absolute;left:588pt;
+ top:6in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ fillcolor="red" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52229" style='position:absolute;left:36pt;top:126pt;
+ width:306pt;height:356.375pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect></p:shaperange>
+ <p:shaperange id="_x0000_s52230">
+ <v:rect id="_x0000_s52230" style='position:absolute;left:384pt;top:168pt;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52231" style='position:absolute;left:396pt;
+ top:180pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52232" style='position:absolute;left:408pt;
+ top:192pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52233" style='position:absolute;left:420pt;
+ top:204pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52234" style='position:absolute;left:6in;top:3in;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52235" style='position:absolute;left:444pt;
+ top:228pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52236" style='position:absolute;left:396pt;
+ top:156pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52237" style='position:absolute;left:408pt;
+ top:168pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52238" style='position:absolute;left:420pt;
+ top:180pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52239" style='position:absolute;left:6in;top:192pt;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52240" style='position:absolute;left:444pt;
+ top:204pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52241" style='position:absolute;left:456pt;
+ top:3in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52242" style='position:absolute;left:372pt;
+ top:180pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52243" style='position:absolute;left:384pt;
+ top:192pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52244" style='position:absolute;left:396pt;
+ top:204pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52245" style='position:absolute;left:408pt;
+ top:3in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52246" style='position:absolute;left:420pt;
+ top:228pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52247" style='position:absolute;left:6in;top:240pt;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52248" style='position:absolute;left:408pt;
+ top:2in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52249" style='position:absolute;left:420pt;
+ top:156pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52250" style='position:absolute;left:6in;top:168pt;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52251" style='position:absolute;left:444pt;
+ top:180pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52252" style='position:absolute;left:456pt;
+ top:192pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52253" style='position:absolute;left:468pt;
+ top:204pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52254" style='position:absolute;left:5in;top:192pt;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52255" style='position:absolute;left:372pt;
+ top:204pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52256" style='position:absolute;left:384pt;
+ top:3in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52257" style='position:absolute;left:396pt;
+ top:228pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52258" style='position:absolute;left:408pt;
+ top:240pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52259" style='position:absolute;left:420pt;
+ top:252pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52260" style='position:absolute;left:420pt;
+ top:132pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52261" style='position:absolute;left:6in;top:2in;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52262" style='position:absolute;left:444pt;
+ top:156pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52263" style='position:absolute;left:456pt;
+ top:168pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52264" style='position:absolute;left:468pt;
+ top:180pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52265" style='position:absolute;left:480pt;
+ top:192pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s52266" style='position:absolute' from="420pt,2in"
+ to="456pt,240pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52267" style='position:absolute;flip:y' from="384pt,192pt"
+ to="480pt,228pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52268" style='position:absolute' from="408pt,150pt"
+ to="6in,3in" strokecolor="red">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52269" style='position:absolute' from="6in,3in"
+ to="444pt,246pt" strokecolor="red">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52270" style='position:absolute;flip:y' from="396pt,3in"
+ to="6in,228pt" strokecolor="red">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52271" style='position:absolute;flip:y' from="6in,192pt"
+ to="492pt,3in" strokecolor="red">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52272" style='position:absolute;flip:x' from="396pt,168pt"
+ to="420pt,180pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52273" style='position:absolute;flip:x' from="408pt,168pt"
+ to="420pt,192pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52274" style='position:absolute' from="396pt,180pt"
+ to="408pt,192pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s52275" style='position:absolute;left:534pt;
+ top:168pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52276" style='position:absolute;left:546pt;
+ top:180pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52277" style='position:absolute;left:558pt;
+ top:192pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52278" style='position:absolute;left:570pt;
+ top:204pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52279" style='position:absolute;left:582pt;
+ top:3in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52280" style='position:absolute;left:594pt;
+ top:228pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52281" style='position:absolute;left:546pt;
+ top:156pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52282" style='position:absolute;left:558pt;
+ top:168pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52283" style='position:absolute;left:570pt;
+ top:180pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52284" style='position:absolute;left:582pt;
+ top:192pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52285" style='position:absolute;left:594pt;
+ top:204pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52286" style='position:absolute;left:606pt;
+ top:3in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52287" style='position:absolute;left:522pt;
+ top:180pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52288" style='position:absolute;left:534pt;
+ top:192pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52289" style='position:absolute;left:546pt;
+ top:204pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52290" style='position:absolute;left:558pt;
+ top:3in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52291" style='position:absolute;left:570pt;
+ top:228pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52292" style='position:absolute;left:582pt;
+ top:240pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52293" style='position:absolute;left:558pt;
+ top:2in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52294" style='position:absolute;left:570pt;
+ top:156pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52295" style='position:absolute;left:582pt;
+ top:168pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52296" style='position:absolute;left:594pt;
+ top:180pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52297" style='position:absolute;left:606pt;
+ top:192pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52298" style='position:absolute;left:618pt;
+ top:204pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52299" style='position:absolute;left:510pt;
+ top:192pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52300" style='position:absolute;left:522pt;
+ top:204pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52301" style='position:absolute;left:534pt;
+ top:3in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52302" style='position:absolute;left:546pt;
+ top:228pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52303" style='position:absolute;left:558pt;
+ top:240pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52304" style='position:absolute;left:570pt;
+ top:252pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52305" style='position:absolute;left:570pt;
+ top:132pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52306" style='position:absolute;left:582pt;
+ top:2in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52307" style='position:absolute;left:594pt;
+ top:156pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52308" style='position:absolute;left:606pt;
+ top:168pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52309" style='position:absolute;left:618pt;
+ top:180pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52310" style='position:absolute;left:630pt;
+ top:192pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s52311" style='position:absolute' from="570pt,2in"
+ to="606pt,240pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52312" style='position:absolute;flip:y' from="534pt,192pt"
+ to="630pt,228pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52313" style='position:absolute' from="570pt,168pt"
+ to="582pt,3in" strokecolor="red">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52314" style='position:absolute' from="582pt,3in"
+ to="594pt,246pt" strokecolor="red">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52315" style='position:absolute;flip:y' from="546pt,3in"
+ to="582pt,228pt" strokecolor="red">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52316" style='position:absolute;flip:y' from="582pt,192pt"
+ to="642pt,3in" strokecolor="red">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52317" style='position:absolute;flip:x' from="546pt,168pt"
+ to="570pt,180pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52318" style='position:absolute;flip:x' from="558pt,168pt"
+ to="570pt,192pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52319" style='position:absolute' from="546pt,180pt"
+ to="558pt,192pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52320" style='position:absolute' from="561.75pt,143.75pt"
+ to="570pt,168pt" strokecolor="red">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s52321" style='position:absolute;left:354.125pt;
+ top:299pt;width:321.625pt;height:169.875pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect></p:shaperange>
+ <p:shaperange id="_x0000_s52322">
+ <v:rect id="_x0000_s52322" style='position:absolute;left:552pt;top:444pt;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52323" style='position:absolute;left:564pt;
+ top:456pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52324" style='position:absolute;left:564pt;
+ top:6in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52325" style='position:absolute;left:8in;top:444pt;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52326" style='position:absolute;left:588pt;
+ top:456pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52327" style='position:absolute;left:540pt;
+ top:456pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52328" style='position:absolute;left:8in;top:420pt;
+ width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52329" style='position:absolute;left:588pt;
+ top:6in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52330" style='position:absolute;left:600pt;
+ top:444pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52331" style='position:absolute;left:612pt;
+ top:456pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52332" style='position:absolute;left:588pt;
+ top:408pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52333" style='position:absolute;left:600pt;
+ top:420pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52334" style='position:absolute;left:612pt;
+ top:6in;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52335" style='position:absolute;left:624pt;
+ top:444pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s52336" style='position:absolute;left:636pt;
+ top:456pt;width:12pt;height:12pt;mso-wrap-style:none;v-text-anchor:middle'
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s52337" style='position:absolute' from="588pt,420pt"
+ to="624pt,516pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52338" style='position:absolute;flip:x' from="564pt,444pt"
+ to="588pt,456pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52339" style='position:absolute;flip:x' from="8in,444pt"
+ to="588pt,468pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s52340" style='position:absolute' from="564pt,456pt"
+ to="8in,468pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line></p:shaperange>
+</xml>
\ No newline at end of file

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048_image460.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048_image461.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0048_image462.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0049.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0049.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,75 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml" href="slide0049.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>46</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="slide0049.xml#_x0000_s53252"/><![if !vml]><img
+ border=0
+ v:shapes="_x0000_s53438,_x0000_s53254,_x0000_s53255,_x0000_s53256,_x0000_s53257,_x0000_s53258,_x0000_s53259,_x0000_s53260,_x0000_s53261,_x0000_s53262,_x0000_s53263,_x0000_s53264,_x0000_s53265,_x0000_s53266,_x0000_s53267,_x0000_s53268,_x0000_s53269,_x0000_s53270,_x0000_s53271,_x0000_s53272,_x0000_s53273,_x0000_s53274,_x0000_s53275,_x0000_s53276,_x0000_s53277,_x0000_s53278,_x0000_s53279,_x0000_s53280,_x0000_s53281,_x0000_s53282,_x0000_s53283,_x0000_s53284,_x0000_s53285,_x0000_s53286,_x0000_s53287,_x0000_s53288,_x0000_s53289,_x0000_s53290,_x0000_s53291,_x0000_s53292,_x0000_s53293,_x0000_s53294,_x0000_s53295,_x0000_s53296,_x0000_s53297,_x0000_s53298,_x0000_s53299,_x0000_s53300,_x0000_s53301,_x0000_s53302,_x0000_s53303,_x0000_s53304,_x0000_s53305,_x0000_s53306,_x0000_s53307,_x0000_s53308,_x0000_s53309,_x0000_s53310,_x0000_s53311,_x0000_s53312,_x0000_s53313,_x0000_s53314,_x0000_s53315,_x0000_s53316,_x0000_s53317,_x0000_s53318,_x0000_s53319,_x0000_s53320,_x0000_s53321,_x0000_s53322,_x0000_s53323,_x0000_s53324,_x0
000_s53325,_x0000_s53326,_x0000_s53327,_x0000_s53328,_x0000_s53329,_x0000_s53330,_x0000_s53331,_x0000_s53332,_x0000_s53333,_x0000_s53334,_x0000_s53335,_x0000_s53336,_x0000_s53337,_x0000_s53338,_x0000_s53339,_x0000_s53384,_x0000_s53385,_x0000_s53386,_x0000_s53387,_x0000_s53388,_x0000_s53389,_x0000_s53390,_x0000_s53391,_x0000_s53392,_x0000_s53393,_x0000_s53394,_x0000_s53395,_x0000_s53396,_x0000_s53397,_x0000_s53398,_x0000_s53399,_x0000_s53400,_x0000_s53401,_x0000_s53402,_x0000_s53403,_x0000_s53404,_x0000_s53405,_x0000_s53406,_x0000_s53407,_x0000_s53408,_x0000_s53409,_x0000_s53410,_x0000_s53411,_x0000_s53412,_x0000_s53413,_x0000_s53414,_x0000_s53415,_x0000_s53416,_x0000_s53417,_x0000_s53418,_x0000_s53419,_x0000_s53420,_x0000_s53421,_x0000_s53422,_x0000_s53423,_x0000_s53424,_x0000_s53425,_x0000_s53426,_x0000_s53427,_x0000_s53428,_x0000_s53429,_x0000_s53430,_x0000_s53431,_x0000_s53432,_x0000_s53433,_x0000_s53434"
+ src="slide0049_image459.gif" style='position:absolute;top:18.0%;left:0%;
+ width:100.37%;height:40.75%'><![endif]>
+ <div v:shape="_x0000_s53252" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Intersection Clusters</div>
+ <div v:shape="_x0000_s53437" class=B><span style='position:absolute;
+ top:63.0%;left:11.42%;width:86.89%;height:6.75%'><span class=BB
+ style='position:absolute;left:-4.31%'>•</span>Multiple intersection points
+ within the </span><span style='position:absolute;top:70.25%;left:11.42%;
+ width:77.34%;height:6.75%'>same unit grid are merged</span></div>
+</p:slide>
+</div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0049.xml
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0049.xml 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,779 @@
+<xml xmlns:v="urn:schemas-microsoft-com:vml"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+ xmlns:oa="urn:schemas-microsoft-com:office:activation">
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="52"/>
+ <o:regrouptable v:ext="edit">
+ <o:entry new="1" old="0"/>
+ </o:regrouptable>
+ </o:shapelayout><p:shaperange id="_x0000_s53252">
+ <v:rect id="_x0000_s53252" style='position:absolute;left:36pt;top:21.625pt;
+ width:9in;height:90pt;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:group id="_x0000_s53438" style='position:absolute;left:0;top:98.125pt;
+ width:10in;height:216.625pt' coordorigin=",785" coordsize="5504,1757">
+ <v:rect id="_x0000_s53254" style='position:absolute;left:282;top:1261;
+ width:140;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53255" style='position:absolute;left:422;top:1420;
+ width:141;height:158;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53256" style='position:absolute;left:563;top:1578;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53257" style='position:absolute;left:704;top:1737;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53258" style='position:absolute;left:845;top:1896;
+ width:141;height:158;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53259" style='position:absolute;left:986;top:2054;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53260" style='position:absolute;left:422;top:1102;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53261" style='position:absolute;left:563;top:1261;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53262" style='position:absolute;left:704;top:1420;
+ width:141;height:158;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53263" style='position:absolute;left:845;top:1578;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53264" style='position:absolute;left:986;top:1737;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53265" style='position:absolute;left:1127;
+ top:1896;width:140;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53266" style='position:absolute;left:141;top:1420;
+ width:141;height:158;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53267" style='position:absolute;left:282;top:1578;
+ width:140;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53268" style='position:absolute;left:422;top:1737;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53269" style='position:absolute;left:563;top:1896;
+ width:141;height:158;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53270" style='position:absolute;left:704;top:2054;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53271" style='position:absolute;left:845;top:2213;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53272" style='position:absolute;left:563;top:944;
+ width:141;height:158;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53273" style='position:absolute;left:704;top:1102;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53274" style='position:absolute;left:845;top:1261;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53275" style='position:absolute;left:986;top:1420;
+ width:141;height:158;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53276" style='position:absolute;left:1127;
+ top:1578;width:140;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53277" style='position:absolute;left:1267;
+ top:1737;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53278" style='position:absolute;top:1578;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53279" style='position:absolute;left:141;top:1737;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53280" style='position:absolute;left:282;top:1896;
+ width:140;height:158;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53281" style='position:absolute;left:422;top:2054;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53282" style='position:absolute;left:563;top:2213;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53283" style='position:absolute;left:704;top:2372;
+ width:141;height:158;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53284" style='position:absolute;left:704;top:785;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53285" style='position:absolute;left:845;top:944;
+ width:141;height:158;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53286" style='position:absolute;left:986;top:1102;
+ width:141;height:159;mso-wrap-style:none;v-text-anchor:middle' o:regroupid="1"
+ filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53287" style='position:absolute;left:1127;
+ top:1261;width:140;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53288" style='position:absolute;left:1267;
+ top:1420;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53289" style='position:absolute;left:1408;
+ top:1578;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s53290" style='position:absolute;flip:y' from="141,1737"
+ to="1549,1896" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53291" style='position:absolute' from="422,1102"
+ to="845,2530" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53292" style='position:absolute' from="282,1420"
+ to="986,2372" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53293" style='position:absolute;flip:x y'
+ from="141,1578" to="1267,2054" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s53294" style='position:absolute;left:2253;
+ top:1261;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53295" style='position:absolute;left:2394;
+ top:1420;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53296" style='position:absolute;left:2535;
+ top:1578;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53297" style='position:absolute;left:2676;
+ top:1737;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53298" style='position:absolute;left:2817;
+ top:1896;width:140;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53299" style='position:absolute;left:2957;
+ top:2054;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53300" style='position:absolute;left:2394;
+ top:1102;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53301" style='position:absolute;left:2535;
+ top:1261;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53302" style='position:absolute;left:2676;
+ top:1420;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53303" style='position:absolute;left:2817;
+ top:1578;width:140;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53304" style='position:absolute;left:2957;
+ top:1737;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53305" style='position:absolute;left:3098;
+ top:1896;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53306" style='position:absolute;left:2112;
+ top:1420;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53307" style='position:absolute;left:2253;
+ top:1578;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53308" style='position:absolute;left:2394;
+ top:1737;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53309" style='position:absolute;left:2535;
+ top:1896;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53310" style='position:absolute;left:2676;
+ top:2054;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53311" style='position:absolute;left:2817;
+ top:2213;width:140;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53312" style='position:absolute;left:2535;
+ top:944;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53313" style='position:absolute;left:2676;
+ top:1102;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53314" style='position:absolute;left:2817;
+ top:1261;width:140;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53315" style='position:absolute;left:2957;
+ top:1420;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53316" style='position:absolute;left:3098;
+ top:1578;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53317" style='position:absolute;left:3239;
+ top:1737;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53318" style='position:absolute;left:1972;
+ top:1578;width:140;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53319" style='position:absolute;left:2112;
+ top:1737;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53320" style='position:absolute;left:2253;
+ top:1896;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53321" style='position:absolute;left:2394;
+ top:2054;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53322" style='position:absolute;left:2535;
+ top:2213;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53323" style='position:absolute;left:2676;
+ top:2372;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53324" style='position:absolute;left:2676;
+ top:785;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53325" style='position:absolute;left:2817;
+ top:944;width:140;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53326" style='position:absolute;left:2957;
+ top:1102;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53327" style='position:absolute;left:3098;
+ top:1261;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53328" style='position:absolute;left:3239;
+ top:1420;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53329" style='position:absolute;left:3380;
+ top:1578;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s53330" style='position:absolute;flip:y' from="2112,1737"
+ to="3521,1896" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53331" style='position:absolute' from="2394,1102"
+ to="2817,2530" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53332" style='position:absolute' from="2253,1420"
+ to="2957,2372" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53333" style='position:absolute;flip:x y'
+ from="2112,1578" to="3239,2054" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:oval id="_x0000_s53334" style='position:absolute;left:2611;
+ top:1912;width:71;height:80;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" fillcolor="black [1]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s53335" style='position:absolute;left:2529;
+ top:1802;width:70;height:79;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" fillcolor="black [1]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s53336" style='position:absolute;left:2576;
+ top:1802;width:70;height:79;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" fillcolor="black [1]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s53337" style='position:absolute;left:2668;
+ top:1788;width:71;height:80;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" fillcolor="black [1]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s53338" style='position:absolute;left:2557;
+ top:1742;width:70;height:79;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" fillcolor="black [1]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s53339" style='position:absolute;left:2456;
+ top:1702;width:70;height:80;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" fillcolor="black [1]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:rect id="_x0000_s53384" style='position:absolute;left:4237;
+ top:1273;width:140;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53385" style='position:absolute;left:4377;
+ top:1431;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53386" style='position:absolute;left:4518;
+ top:1590;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53387" style='position:absolute;left:4659;
+ top:1749;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53388" style='position:absolute;left:4800;
+ top:1907;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53389" style='position:absolute;left:4941;
+ top:2066;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53390" style='position:absolute;left:4377;
+ top:1114;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53391" style='position:absolute;left:4518;
+ top:1273;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53392" style='position:absolute;left:4659;
+ top:1431;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53393" style='position:absolute;left:4800;
+ top:1590;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53394" style='position:absolute;left:4941;
+ top:1749;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53395" style='position:absolute;left:5082;
+ top:1907;width:140;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53396" style='position:absolute;left:4096;
+ top:1431;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53397" style='position:absolute;left:4237;
+ top:1590;width:140;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53398" style='position:absolute;left:4377;
+ top:1749;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53399" style='position:absolute;left:4518;
+ top:1907;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53400" style='position:absolute;left:4659;
+ top:2066;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53401" style='position:absolute;left:4800;
+ top:2225;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53402" style='position:absolute;left:4518;
+ top:955;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53403" style='position:absolute;left:4659;
+ top:1114;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53404" style='position:absolute;left:4800;
+ top:1273;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53405" style='position:absolute;left:4941;
+ top:1431;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53406" style='position:absolute;left:5082;
+ top:1590;width:140;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53407" style='position:absolute;left:5222;
+ top:1749;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53408" style='position:absolute;left:3955;
+ top:1590;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53409" style='position:absolute;left:4096;
+ top:1749;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53410" style='position:absolute;left:4237;
+ top:1907;width:140;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53411" style='position:absolute;left:4377;
+ top:2066;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53412" style='position:absolute;left:4518;
+ top:2225;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53413" style='position:absolute;left:4659;
+ top:2383;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53414" style='position:absolute;left:4659;
+ top:797;width:141;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53415" style='position:absolute;left:4800;
+ top:955;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53416" style='position:absolute;left:4941;
+ top:1114;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53417" style='position:absolute;left:5082;
+ top:1273;width:140;height:158;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53418" style='position:absolute;left:5222;
+ top:1431;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s53419" style='position:absolute;left:5363;
+ top:1590;width:141;height:159;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:stroke dashstyle="1 1" endcap="round"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s53420" style='position:absolute;flip:y' from="4659,1749"
+ to="5504,1907" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53421" style='position:absolute' from="4377,1114"
+ to="4518,1907" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53422" style='position:absolute' from="4237,1431"
+ to="4377,1749" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53423" style='position:absolute;flip:x y'
+ from="4096,1590" to="4377,1749" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:oval id="_x0000_s53424" style='position:absolute;left:4480;
+ top:2018;width:70;height:79;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" fillcolor="black [1]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s53425" style='position:absolute;left:4482;
+ top:1873;width:70;height:79;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" fillcolor="black [1]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s53426" style='position:absolute;left:4621;
+ top:1874;width:70;height:80;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" fillcolor="black [1]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:oval id="_x0000_s53427" style='position:absolute;left:4338;
+ top:1714;width:70;height:79;mso-wrap-style:none;v-text-anchor:middle'
+ o:regroupid="1" fillcolor="black [1]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><v:line id="_x0000_s53428" style='position:absolute' from="4518,2066"
+ to="4800,2542" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53429" style='position:absolute;flip:y' from="4518,1907"
+ to="4518,2066" o:regroupid="1" strokecolor="black [1]" strokeweight="1.25pt">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53430" style='position:absolute' from="4518,2066"
+ to="4941,2383" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53431" style='position:absolute;flip:x y'
+ from="4377,1749" to="4518,1907" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53432" style='position:absolute;flip:x y'
+ from="4659,1907" to="5222,2066" o:regroupid="1" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53433" style='position:absolute;flip:y' from="4518,1907"
+ to="4659,1907" o:regroupid="1" strokecolor="black [1]" strokeweight="1.25pt">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s53434" style='position:absolute;flip:y' from="4096,1907"
+ to="4518,1907" o:regroupid="1" strokecolor="black [1]" strokeweight="1.25pt">
+ <v:shadow color="gray [2]"/>
+ </v:line></v:group><v:rect id="_x0000_s53437" style='position:absolute;
+ left:47.5pt;top:334.625pt;width:597pt;height:188.375pt' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect></p:shaperange>
+</xml>
\ No newline at end of file

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0049_image459.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0050.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0050.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,109 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description
+content="5/15/2009: Acceptable vs. Unacceptable Artifacts">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="53"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>48</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s54274"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s54275" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:9in;height:357.125pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s54274" class=T><span style='position:absolute;
+ top:4.0%;left:5.99%;width:88.2%;height:8.5%'><span style='font-size:91%'>Acceptable
+ vs. Unacceptable </span></span><span style='position:absolute;top:12.75%;
+ left:5.99%;width:88.2%;height:8.5%'><span style='font-size:91%'>Artifacts</span></span></div>
+ <div v:shape="_x0000_s54275">
+ <div class=B style='mso-line-spacing:"90 20 0";position:absolute;top:23.75%;
+ left:5.99%;width:88.2%;height:6.75%'><span style='position:absolute;
+ top:0%;left:4.24%;width:95.75%;height:100.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.43%'>•</span>An artifact is unacceptable
+ &#13;</span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:31.5%;left:14.04%;width:85.39%;height:6.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.5%'>–</span>if it causes any line segments to
+ intersect </span><span style='position:absolute;top:37.0%;left:14.04%;
+ width:79.96%;height:6.0%'>other than at their end points&#13;</span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:44.0%;left:14.04%;width:82.2%;height:6.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.64%'>–</span>if it causes a closed cycle in
+ the input to </span><span style='position:absolute;top:49.5%;left:14.04%;
+ width:79.96%;height:6.0%'>become open at the output&#13;</span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:56.49%;left:9.73%;width:92.5%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.04%'>•</span>Inserting vertices on line
+ segments and </span><span style='position:absolute;top:63.0%;left:9.73%;
+ width:84.45%;height:6.75%'>merging vertices are acceptable &#13;</span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:70.75%;left:9.73%;width:95.13%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.93%'>•</span>We insert vertices and merge
+ vertices to </span><span style='position:absolute;top:77.0%;left:9.73%;
+ width:84.45%;height:6.75%'>snap to integer grid robustly</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0052.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0052.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,107 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: C++ Concepts-based Type System">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="55"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>50</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s56322"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s56323" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:9in;height:377.125pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s56322" class=T style='position:absolute;top:8.5%;
+ left:-1.87%;width:103.93%;height:8.5%'><span style='font-size:91%'>C++
+ Concepts-based Type System</span></div>
+ <div v:shape="_x0000_s56323" class=B><span style='position:absolute;
+ top:24.25%;left:9.73%;width:84.45%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-4.43%'>•</span></span><span
+ style='font-size:88%'>GTL allows application data types to be </span></span><span
+ style='position:absolute;top:30.5%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>arguments to its API&#13;</span></span><span
+ style='position:absolute;top:38.0%;left:9.73%;width:98.68%;height:6.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-3.79%'>•</span></span><span
+ style='font-size:88%'>You can check if your point type lies inside your </span></span><span
+ style='position:absolute;top:44.25%;left:9.73%;width:85.95%;height:6.0%'><span
+ style='font-size:88%'>polygon type with a call to GTL contains() </span></span><span
+ style='position:absolute;top:50.5%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>passing in your point and your polygon&#13;</span></span>
+ <div style='position:absolute;top:57.99%;left:5.99%;width:88.38%;height:6.0%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:88%'><span style='mso-tab-count:2;width:11.31%'> </span>gtl::contains(my_polygon,
+ my_point);&#13;</span></div>
+ <span style='position:absolute;top:65.5%;left:9.73%;width:100.56%;height:6.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-3.72%'>•</span></span><span
+ style='font-size:88%'>This is accomplished by use of a C++ Concepts-</span></span><span
+ style='position:absolute;top:71.75%;left:9.73%;width:84.83%;height:6.0%'><span
+ style='font-size:88%'>based statically polymorphic type system&#13;</span></span><span
+ style='position:absolute;top:79.25%;left:9.73%;width:100.56%;height:6.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-3.72%'>•</span></span><span
+ style='font-size:88%'>This is much more convenient than copying your </span></span><span
+ style='position:absolute;top:85.5%;left:9.73%;width:86.7%;height:6.0%'><span
+ style='font-size:88%'>polygon into a GTL polygon data type first</span></span></div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0053.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0053.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,94 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Booleans Operator Syntax">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="56"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>56</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s57346"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s57347" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:673.25pt;height:356.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s57346" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Booleans Operator Syntax</div>
+ <div v:shape="_x0000_s57347" class=B><span style='position:absolute;
+ top:24.5%;left:9.73%;width:91.76%;height:6.75%'><span class=BB
+ style='position:absolute;left:-4.08%'>•</span>GTL overloads the C++ bit-wise
+ logical </span><span style='position:absolute;top:31.5%;left:9.73%;width:102.99%;
+ height:6.75%'>operators &amp;|^ and the subtraction operator -&#13;</span><span
+ style='position:absolute;top:40.0%;left:9.73%;width:101.49%;height:6.75%'><span
+ class=BB style='position:absolute;left:-3.69%'>•</span>They perform Boolean
+ AND, OR, XOR and </span><span style='position:absolute;top:47.25%;left:9.73%;
+ width:87.82%;height:6.75%'>AND-NOT (SUBTRACT)&#13;</span><span
+ style='position:absolute;top:55.75%;left:9.73%;width:97.56%;height:6.75%'><span
+ class=BB style='position:absolute;left:-3.83%'>•</span>They work with any
+ polygons, rectangles, </span><span style='position:absolute;top:62.74%;
+ left:9.73%;width:95.13%;height:6.75%'>vectors or lists of polygons or
+ rectangles </span><span style='position:absolute;top:69.75%;left:9.73%;
+ width:87.82%;height:6.75%'>and the GTL polygon-set data types</span></div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0054.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0054.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,169 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: C++ Traits">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="57"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>51</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s58370"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s58371" type="#_x0000_m1027"
+ style='position:absolute;left:34.25pt;top:103.375pt;width:9in;height:179.5pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:rect id="_x0000_s58372"
+ style='position:absolute;left:41.875pt;top:270.625pt;width:650.625pt;
+ height:258.5pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect>
+ <div v:shape="_x0000_s58370" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>C++ Traits</div>
+ <div v:shape="_x0000_s58371" class=B>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:19.75%;left:9.55%;width:100.93%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.71%'>•</span></span><span
+ style='font-size:88%'>GTL accesses your geometry types through type </span></span><span
+ style='position:absolute;top:25.25%;left:9.55%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>traits that you must provide&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:32.0%;left:9.55%;width:87.45%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.28%'>•</span></span><span
+ style='font-size:88%'>These traits map your implementation of a </span></span><span
+ style='position:absolute;top:37.75%;left:9.55%;width:100.18%;height:6.0%'><span
+ style='font-size:88%'>geometry object to GTL’s concept of how a such </span></span><span
+ style='position:absolute;top:43.25%;left:9.55%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>geometry behaves</span></span></div>
+ </div>
+ <div v:shape="_x0000_s58372" class=B>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:50.5%;left:6.74%;
+ width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>template &lt;typename T&gt;&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:53.5%;left:6.74%;
+ width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>struct point_traits {&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:56.75%;
+ left:6.74%;width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>typedef T::coordinate_type coordinate_type;&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:59.75%;
+ left:6.74%;width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>coordinate_type get(const T&amp; p,
+ orientation_2d orient) { &#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:62.74%;
+ left:6.74%;width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'><span style='mso-spacerun:yes'>  </span>return
+ p.get(orient);&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:66.0%;left:6.74%;
+ width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>}&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:69.0%;left:6.74%;
+ width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>template &lt;typename T&gt;&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:72.25%;
+ left:6.74%;width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>struct point_mutable_traits {&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:75.25%;
+ left:6.74%;width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'><span style='mso-spacerun:yes'>  </span>void
+ set(const T&amp; p, orientation_2d orient, &#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:78.25%;
+ left:6.74%;width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'><span style='mso-spacerun:yes'>          
+ </span>coordinate_type value) {&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:81.5%;left:6.74%;
+ width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'><span style='mso-spacerun:yes'>   
+ </span>p.set(orient, value);&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:84.5%;left:6.74%;
+ width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'><span style='mso-spacerun:yes'>  </span>}&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:87.75%;
+ left:6.74%;width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'><span style='mso-spacerun:yes'>  </span>T
+ construct(coordinate_type x, coordinate_type y) { &#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:90.75%;
+ left:6.74%;width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'><span style='mso-spacerun:yes'>    </span>return
+ T(x, y); }&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:93.75%;
+ left:6.74%;width:88.57%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>};</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0055.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0055.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,188 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: C++ Concepts Overloading">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="58"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>52</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s59394"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s59395" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:9in;height:210.25pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:shapetype id="_x0000_t202"
+ coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe">
+ <v:stroke joinstyle="miter"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ </v:shapetype><v:shape id="_x0000_s59396" type="#_x0000_t202" style='position:absolute;
+ left:21.75pt;top:335.25pt;width:367.5pt;height:190.875pt;
+ mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
+ stroked="f">
+ <v:textbox style='mso-next-textbox:#_x0000_s59396'/>
+ </v:shape><v:rect id="_x0000_s59397" style='position:absolute;left:370.875pt;
+ top:353.5pt;width:335.75pt;height:167.625pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s59396"
+ src="slide0055_image464.gif" style='position:absolute;top:62.0%;left:2.99%;
+ width:51.31%;height:35.75%'><![endif]>
+ <div v:shape="_x0000_s59394" class=T style='position:absolute;top:8.0%;
+ left:5.8%;width:88.76%;height:9.25%'>C++ Concepts Overloading</div>
+ <div v:shape="_x0000_s59395" class=B>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:23.5%;left:9.73%;width:97.75%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.83%'>•</span></span><span
+ style='font-size:75%'>GTL functions that expect a polygon check whether the </span></span><span
+ style='position:absolute;top:27.75%;left:9.73%;width:94.38%;height:5.25%'><span
+ style='font-size:75%'>input data type is registered as a polygon and will not </span></span><span
+ style='position:absolute;top:32.0%;left:9.73%;width:84.45%;height:5.25%'><span
+ style='font-size:75%'>instantiate if the check fails&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:37.25%;left:9.73%;width:84.45%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.43%'>•</span></span><span
+ style='font-size:75%'>A different gtl function with the same name can </span></span><span
+ style='position:absolute;top:41.5%;left:9.73%;width:100.0%;height:5.25%'><span
+ style='font-size:75%'>instantiate if the data type turns out to be registered
+ as a </span></span><span style='position:absolute;top:45.75%;left:9.73%;
+ width:84.45%;height:5.25%'><span style='font-size:75%'>rectangle, or a
+ point&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:51.0%;left:9.73%;width:89.7%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.17%'>•</span></span><span
+ style='font-size:75%'>The mechanism for doing this is called substitution </span></span><span
+ style='position:absolute;top:55.25%;left:9.73%;width:84.45%;height:5.25%'><span
+ style='font-size:75%'>failure is not an error (SFINAE)</span></span></div>
+ </div>
+ <div v:shape="_x0000_s59396" class=O>
+ <div style='position:absolute;top:62.74%;left:4.11%;width:52.05%;height:2.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%'>template &lt;typename T&gt;
+ struct is_integer {};&#13;</span></div>
+ <div style='position:absolute;top:65.5%;left:4.11%;width:49.25%;height:2.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%'>template &lt;&gt; &#13;</span></div>
+ <div style='position:absolute;top:68.25%;left:4.11%;width:54.49%;height:2.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%'>struct
+ is_integer&lt;int&gt; { typedef int type; };&#13;</span></div>
+ <div style='position:absolute;top:70.75%;left:4.11%;width:49.81%;height:2.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%'>template &lt;typename T&gt;
+ struct is_float {};&#13;</span></div>
+ <div style='position:absolute;top:73.5%;left:4.11%;width:49.25%;height:2.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%'>template &lt;&gt; &#13;</span></div>
+ <div style='position:absolute;top:76.25%;left:4.11%;width:56.92%;height:2.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%'>struct
+ is_float&lt;float&gt; { typedef float type; };&#13;</span></div>
+ <div style='position:absolute;top:78.75%;left:4.11%;width:49.25%;height:2.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%;display:none'>&#13;</span></div>
+ <div style='position:absolute;top:81.5%;left:4.11%;width:49.25%;height:2.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%'>template &lt;typename
+ T&gt;&#13;</span></div>
+ <div style='position:absolute;top:84.25%;left:4.11%;width:49.25%;height:2.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%'>typename
+ is_int&lt;T&gt;::type foo(T input);&#13;</span></div>
+ <div style='position:absolute;top:86.75%;left:4.11%;width:49.25%;height:2.75%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%'>template &lt;typename
+ T&gt;&#13;</span></div>
+ <div style='position:absolute;top:89.25%;left:4.11%;width:49.25%;height:3.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New";font-size:67%'>typename
+ is_float&lt;T&gt;::type foo(T input);</span><span style='font-size:67%;
+ mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s59397" class=B>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:65.5%;left:52.43%;
+ width:47.37%;height:5.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:75%'>foo() would be
+ ambiguous,&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:71.0%;left:52.43%;
+ width:50.0%;height:5.25%'><span style='mso-special-format:nobullet;display:
+ none'>•</span><span style='font-size:75%'>but both return types cannot&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:76.25%;
+ left:52.43%;width:52.05%;height:5.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:75%'>be instantiated with the
+ same&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:81.5%;left:52.43%;
+ width:47.19%;height:5.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:75%'>type.<span
+ style='mso-spacerun:yes'>  </span>Failure to instantiate&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:86.75%;
+ left:52.43%;width:52.62%;height:5.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:75%'>the return type is not a
+ syntax&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:92.25%;
+ left:52.43%;width:44.75%;height:5.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:75%'>error.</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0055_image464.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0058.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0058.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,150 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Concept Refinement">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="61"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>53</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s62466"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s62467" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:634.125pt;height:257.5pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:rect id="_x0000_s62468"
+ style='position:absolute;left:45.375pt;top:376.5pt;width:634.125pt;height:126.5pt'
+ filled="f" fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect>
+ <div v:shape="_x0000_s62466" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Concept Refinement</div>
+ <div v:shape="_x0000_s62467">
+ <div class=B style='mso-line-spacing:"90 20 0";position:absolute;top:23.75%;
+ left:5.99%;width:100.74%;height:5.25%'><span style='position:absolute;
+ top:0%;left:3.71%;width:96.28%;height:100.0%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.86%'>•</span></span><span
+ style='font-size:75%'>A rectangle is a refinement of the concept of a
+ polygon&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:29.5%;left:14.04%;width:85.39%;height:4.5%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.5%'>–</span></span><span
+ style='font-size:71%'>A rectangle narrows-down the definition of polygon to
+ four </span></span><span style='position:absolute;top:33.5%;left:14.04%;
+ width:78.08%;height:4.5%'><span style='font-size:71%'>sided, 90-degree
+ angles&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:38.5%;left:9.73%;width:95.5%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.92%'>•</span></span><span
+ style='font-size:75%'>A function that requires read only access to a polygon </span></span><span
+ style='position:absolute;top:43.5%;left:9.73%;width:82.39%;height:5.25%'><span
+ style='font-size:75%'>can always work on a rectangle&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:49.0%;
+ left:11.04%;width:81.27%;height:4.5%'><span style='position:absolute;
+ top:0%;left:3.68%;width:96.08%;height:100.0%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.83%'>–</span></span><span
+ style='font-size:71%'><span style='mso-spacerun:yes'> </span>A polygon is a
+ generalization of a rectangle&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:54.0%;left:9.73%;width:87.64%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.27%'>•</span></span><span
+ style='font-size:75%'>A function that requires write-access to a polygon </span></span><span
+ style='position:absolute;top:59.0%;left:9.73%;width:82.39%;height:5.25%'><span
+ style='font-size:75%'>cannot work on a rectangle&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:64.75%;
+ left:11.04%;width:81.27%;height:4.5%'><span style='position:absolute;
+ top:0%;left:3.68%;width:96.08%;height:100.0%'><span style='font-size:71%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.83%'>–</span></span><span
+ style='font-size:71%'>A rectangle cannot store a polygon</span></span></div>
+ </div>
+ <div v:shape="_x0000_s62468" class=B>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:70.0%;left:7.3%;
+ width:86.14%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>struct polygon_concept {};&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:73.25%;
+ left:7.3%;width:86.14%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>struct rectangle_concept {};&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:76.25%;
+ left:7.3%;width:86.14%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>template &lt;typename T&gt;&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:79.25%;
+ left:7.3%;width:86.14%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>struct is_a_polygon_concept{};&#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:82.5%;left:7.3%;
+ width:86.14%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'>template &lt;&gt; struct
+ is_a_polygon_concept&lt;rectangle_concept&gt; { &#13;</span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:85.5%;left:7.3%;
+ width:86.14%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:44%'><span style='mso-spacerun:yes'>  </span>typedef
+ gtl_yes type; };</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,449 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: GTL Refinement Relationships">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml" href="slide0059.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>54</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><p:shaperange
+ href="master03.xml#_x0000_m1027"/><p:shaperange
+ href="slide0059.xml#_x0000_s63490"/>
+ <div v:shape="_x0000_s63490" class=T style='position:absolute;top:8.0%;
+ left:0%;width:100.18%;height:9.25%'>GTL Refinement Relationships</div>
+ <div v:shape="_x0000_s63491">
+ <div class=B style='mso-line-spacing:"90 20 0";position:absolute;top:23.75%;
+ left:3.93%;width:55.61%;height:6.0%'><span style='position:absolute;
+ top:0%;left:6.73%;width:93.26%;height:100.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-7.22%'>•</span></span><span
+ style='font-size:88%'>GTL assign() function&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:30.5%;left:12.17%;width:55.24%;height:5.25%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-5.76%'>–</span></span><span
+ style='font-size:86%'>copies data between objects of </span></span><span
+ style='position:absolute;top:35.25%;left:12.17%;width:47.37%;height:5.25%'><span
+ style='font-size:86%'>the same conceptual type&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:41.25%;left:12.17%;width:53.18%;height:5.25%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-5.98%'>–</span></span><span
+ style='font-size:86%'>copies data from a refinement </span></span><span
+ style='position:absolute;top:46.0%;left:12.17%;width:52.05%;height:5.25%'><span
+ style='font-size:86%'>to a more general conceptual </span></span><span
+ style='position:absolute;top:50.74%;left:12.17%;width:47.37%;height:5.25%'><span
+ style='font-size:86%'>type&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:56.49%;left:12.17%;width:52.62%;height:5.25%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-6.04%'>–</span></span><span
+ style='font-size:86%'>instantiates for each of the 49 </span></span><span
+ style='position:absolute;top:61.5%;left:12.17%;width:47.37%;height:5.25%'><span
+ style='font-size:86%'>legal combinations&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:67.25%;left:12.17%;width:47.37%;height:5.25%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-6.71%'>–</span></span><span
+ style='font-size:86%'>requires only one overload </span></span><span
+ style='position:absolute;top:72.0%;left:12.17%;width:47.37%;height:5.25%'><span
+ style='font-size:86%'>definition per concept type&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:78.0%;left:12.17%;width:48.5%;height:5.25%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-6.56%'>–</span></span><span
+ style='font-size:86%'>each overload protected by </span></span><span
+ style='position:absolute;top:82.75%;left:12.17%;width:47.37%;height:5.25%'><span
+ style='font-size:86%'>SFINAE concept check&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:88.5%;
+ left:8.98%;width:50.56%;height:5.25%'><span style='position:absolute;
+ top:0%;left:6.29%;width:93.7%;height:100.0%'><span style='font-size:86%;
+ visibility:hidden'><span style='mso-special-format:bullet;position:absolute;
+ left:-6.71%'>–</span></span><span style='font-size:86%;mso-special-format:
+ lastCR;display:none'>&#13;</span></span></div>
+ </div>
+ <p:shaperange href="slide0059.xml#_x0000_s63680"/><![if !vml]><img border=0
+ v:shapes="_x0000_s63680,_x0000_s63553,_x0000_s63552,_x0000_s63551,_x0000_s63550,_x0000_s63549,_x0000_s63548,_x0000_s63547,_x0000_s63546,_x0000_s63545,_x0000_s63544,_x0000_s63543,_x0000_s63542,_x0000_s63541,_x0000_s63540,_x0000_s63539,_x0000_s63538,_x0000_s63537,_x0000_s63536,_x0000_s63535,_x0000_s63534,_x0000_s63533,_x0000_s63532,_x0000_s63531,_x0000_s63530,_x0000_s63529,_x0000_s63528,_x0000_s63527,_x0000_s63526,_x0000_s63525,_x0000_s63524,_x0000_s63554,_x0000_s63555,_x0000_s63556,_x0000_s63557,_x0000_s63560,_x0000_s63562,_x0000_s63566,_x0000_s63574,_x0000_s63582,_x0000_s63590,_x0000_s63598,_x0000_s63606,_x0000_s63614,_x0000_s63622,_x0000_s63630,_x0000_s63638,_x0000_s63646,_x0000_s63654,_x0000_s63662"
+ src="slide0059_image465.gif" style='position:absolute;top:22.75%;left:62.92%;
+ width:28.65%;height:50.0%'><![endif]>
+ <div v:shape="_x0000_s63553">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:69.75%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>PS</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63552">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:69.75%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>polygon_set_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63551">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:66.5%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>PS45</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63550">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:66.5%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>polygon_45_set_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63549">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:63.24%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>PS90</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63548">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:63.24%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>polygon_90_set_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63547">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:59.75%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>PWH</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63546">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:59.75%;left:63.48%;width:17.79%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>polygon_with_holes_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63545">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:56.49%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>P</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63544">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:56.49%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>polygon_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63543">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:53.25%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>PWH45</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63542">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:53.25%;left:62.35%;width:20.03%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>polygon_45_with_holes_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63541">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:50.0%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>P45</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63540">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:50.0%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>polygon_45_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63539">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:46.5%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>PWH90</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63538">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:46.5%;left:62.35%;width:20.03%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>polygon_90_with_holes_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63537">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:43.25%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>P90</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63536">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:43.25%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>polygon_90_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63535">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:40.0%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>R</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63534">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:40.0%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>rectangle_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63533">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:36.75%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>PT3D</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63532">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:36.75%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>point_3d_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63531">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:33.5%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>PT</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63530">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:33.5%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>point_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63529">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:30.0%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>I</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63528">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:30.0%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>interval_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63527">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:26.75%;left:82.77%;width:7.49%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>C</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63526">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:26.75%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'>coordinate_concept</span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63525">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:23.5%;left:82.2%;width:8.61%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'><b>Abbreviation</b></span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <div v:shape="_x0000_s63524">
+ <div class=Tbl1 style='mso-margin-left-alt:288'></div>
+ <div class=Tbl2 style='mso-margin-left-alt:576'></div>
+ <div class=Tbl3 style='mso-margin-left-alt:864'></div>
+ <div class=Tbl4 style='mso-margin-left-alt:1152'></div>
+ <div class=Tbl style='text-align:center;mso-line-spacing:"100 0 0";mso-margin-left-alt:
+ 0;position:absolute;top:23.5%;left:63.85%;width:17.04%;height:2.0%'><span
+ style='font-family:"Times New Roman";mso-ascii-font-family:"Times New Roman";
+ mso-bidi-font-family:"Times New Roman";font-size:32%'><b>Concept</b></span><span
+ style='font-size:64%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <p:shaperange href="slide0059.xml#_x0000_s63492"/><![if !vml]><img border=0
+ v:shapes="_x0000_s63492" src="slide0059_image467.jpg" style='position:absolute;
+ top:73.0%;left:59.92%;width:33.33%;height:12.25%'><![endif]></p:slide>
+</div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059.xml
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059.xml 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,277 @@
+<xml xmlns:v="urn:schemas-microsoft-com:vml"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+ xmlns:oa="urn:schemas-microsoft-com:office:activation">
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="62"/>
+ </o:shapelayout><p:shaperange id="_x0000_s63490">
+ <v:shape id="_x0000_s63490" type="#_x0000_m1026" style='position:absolute;
+ left:36pt;top:21.625pt;width:9in;height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/>
+ </v:shape><v:shape id="_x0000_s63491" type="#_x0000_m1027" style='position:absolute;
+ left:21.25pt;top:126pt;width:413.375pt;height:378.125pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/>
+ </v:shape></p:shaperange>
+ <p:shaperange id="_x0000_s63680">
+ <v:group id="_x0000_s63680" style='position:absolute;left:452.75pt;top:122.5pt;
+ width:203.375pt;height:268.125pt' coordorigin="3622,980" coordsize="1627,2145"
+ o:tableproperties="1" o:tablelimits="3.375pt 1.25pt 1.25pt 1.25pt 1.25pt 1.25pt 1.25pt 1.25pt 1.25pt 1.25pt 1.25pt 16.75pt 16.75pt 16.75pt 16.75pt">
+ <o:lock v:ext="edit" rotation="t"/>
+ <v:rect id="_x0000_s63553" style='position:absolute;left:4709;top:2982;
+ width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63552" style='position:absolute;left:3622;
+ top:2982;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63551" style='position:absolute;left:4709;
+ top:2839;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63550" style='position:absolute;left:3622;
+ top:2839;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63549" style='position:absolute;left:4709;
+ top:2696;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63548" style='position:absolute;left:3622;
+ top:2696;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63547" style='position:absolute;left:4709;
+ top:2553;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63546" style='position:absolute;left:3622;
+ top:2553;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63545" style='position:absolute;left:4709;
+ top:2410;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63544" style='position:absolute;left:3622;
+ top:2410;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63543" style='position:absolute;left:4709;
+ top:2267;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63542" style='position:absolute;left:3622;
+ top:2267;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63541" style='position:absolute;left:4709;
+ top:2124;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63540" style='position:absolute;left:3622;
+ top:2124;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63539" style='position:absolute;left:4709;
+ top:1981;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63538" style='position:absolute;left:3622;
+ top:1981;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63537" style='position:absolute;left:4709;
+ top:1838;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63536" style='position:absolute;left:3622;
+ top:1838;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63535" style='position:absolute;left:4709;
+ top:1695;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63534" style='position:absolute;left:3622;
+ top:1695;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63533" style='position:absolute;left:4709;
+ top:1552;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63532" style='position:absolute;left:3622;
+ top:1552;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63531" style='position:absolute;left:4709;
+ top:1409;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63530" style='position:absolute;left:3622;
+ top:1409;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63529" style='position:absolute;left:4709;
+ top:1266;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63528" style='position:absolute;left:3622;
+ top:1266;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63527" style='position:absolute;left:4709;
+ top:1123;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63526" style='position:absolute;left:3622;
+ top:1123;width:1087;height:143;v-text-anchor:middle' filled="f"
+ fillcolor="#bbe0e3 [4]" stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63525" style='position:absolute;left:4709;
+ top:980;width:540;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s63524" style='position:absolute;left:3622;
+ top:980;width:1087;height:143;v-text-anchor:middle' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]" alignshape="f" o:detectmouseclick="t"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:line id="_x0000_s63554" style='position:absolute' from="3622,980"
+ to="5249,980" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63555" style='position:absolute' from="3622,3125"
+ to="5249,3125" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63556" style='position:absolute' from="3622,980"
+ to="3622,3125" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63557" style='position:absolute' from="5249,980"
+ to="5249,3125" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63560" style='position:absolute' from="3622,1123"
+ to="5249,1123" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63562" style='position:absolute' from="4709,980"
+ to="4709,3125" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63566" style='position:absolute' from="3622,1266"
+ to="5249,1266" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63574" style='position:absolute' from="3622,1409"
+ to="5249,1409" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63582" style='position:absolute' from="3622,1552"
+ to="5249,1552" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63590" style='position:absolute' from="3622,1695"
+ to="5249,1695" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63598" style='position:absolute' from="3622,1838"
+ to="5249,1838" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63606" style='position:absolute' from="3622,1981"
+ to="5249,1981" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63614" style='position:absolute' from="3622,2124"
+ to="5249,2124" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63622" style='position:absolute' from="3622,2267"
+ to="5249,2267" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63630" style='position:absolute' from="3622,2410"
+ to="5249,2410" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63638" style='position:absolute' from="3622,2553"
+ to="5249,2553" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63646" style='position:absolute' from="3622,2696"
+ to="5249,2696" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63654" style='position:absolute' from="3622,2839"
+ to="5249,2839" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s63662" style='position:absolute' from="3622,2982"
+ to="5249,2982" strokeweight="0">
+ <v:stroke endcap="round" imagealignshape="f"/>
+ <v:shadow color="gray [2]"/>
+ </v:line></v:group></p:shaperange>
+ <p:shaperange id="_x0000_s63492">
+ <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
+ o:preferrelative="t" path="m_at_4@5l_at_4@11_at_9@11_at_9@5xe" filled="f" stroked="f">
+ <v:stroke joinstyle="miter"/>
+ <v:formulas>
+ <v:f eqn="if lineDrawn pixelLineWidth 0"/>
+ <v:f eqn="sum @0 1 0"/>
+ <v:f eqn="sum 0 0 @1"/>
+ <v:f eqn="prod @2 1 2"/>
+ <v:f eqn="prod @3 21600 pixelWidth"/>
+ <v:f eqn="prod @3 21600 pixelHeight"/>
+ <v:f eqn="sum @0 0 1"/>
+ <v:f eqn="prod @6 1 2"/>
+ <v:f eqn="prod @7 21600 pixelWidth"/>
+ <v:f eqn="sum @8 21600 0"/>
+ <v:f eqn="prod @7 21600 pixelHeight"/>
+ <v:f eqn="sum @10 21600 0"/>
+ </v:formulas>
+ <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
+ <o:lock v:ext="edit" aspectratio="t"/>
+ </v:shapetype><v:shape id="_x0000_s63492" type="#_x0000_t75" style='position:absolute;
+ left:6in;top:394.75pt;width:240pt;height:66.75pt'>
+ <v:imagedata src="slide0059_image466.png" o:title=""/>
+ </v:shape></p:shaperange>
+</xml>
\ No newline at end of file

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059_image465.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059_image466.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0059_image467.jpg
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0060.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0060.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,105 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Concept Casting">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="63"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>55</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s64514"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s64515" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:659.125pt;height:396.5pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s64514" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Concept Casting</div>
+ <div v:shape="_x0000_s64515">
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:23.75%;left:9.73%;width:97.19%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.85%'>•</span>A Manhattan polygon is a
+ refinement of a </span><span style='position:absolute;top:30.25%;left:9.73%;
+ width:85.95%;height:6.75%'>general polygon&#13;</span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:38.0%;left:9.73%;width:98.5%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.8%'>•</span>Given a general polygon and the
+ certainly </span><span style='position:absolute;top:44.5%;left:9.73%;
+ width:85.95%;height:6.75%'>that it contains only Manhattan data&#13;</span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:52.0%;left:14.04%;width:88.01%;height:6.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.4%'>–</span>GTL
+ view_as&lt;polygon_90_concept&gt;() can </span><span style='position:absolute;
+ top:57.75%;left:14.04%;width:85.39%;height:6.0%'>allow that polygon to be
+ legally passed to </span><span style='position:absolute;top:63.24%;left:14.04%;
+ width:85.2%;height:6.0%'>functions expecting a Manhattan polygon&#13;</span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:70.25%;left:9.73%;width:92.32%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.05%'>•</span>This is useful when general
+ objects are </span><span style='position:absolute;top:76.75%;left:9.73%;
+ width:88.95%;height:6.75%'>used by applications to model several </span><span
+ style='position:absolute;top:83.0%;left:9.73%;width:85.95%;height:6.75%'>specific
+ kinds of data </span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0061.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0061.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,105 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: GTL Booleans Operator Templates">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="64"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>57</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s65538"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s65539" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:657.625pt;height:379.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s65538" class=T style='position:absolute;top:8.5%;
+ left:-1.87%;width:103.93%;height:8.5%'><span style='font-size:91%'>GTL
+ Booleans Operator Templates</span></div>
+ <div v:shape="_x0000_s65539" class=B><span style='position:absolute;
+ top:24.25%;left:9.73%;width:100.18%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-3.73%'>•</span></span><span
+ style='font-size:88%'>C++ requires that operators return their result by </span></span><span
+ style='position:absolute;top:30.5%;left:9.73%;width:85.76%;height:6.0%'><span
+ style='font-size:88%'>value&#13;</span></span><span style='position:absolute;
+ top:38.0%;left:9.73%;width:90.82%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-4.12%'>•</span></span><span
+ style='font-size:88%'>The return value of a GTL Boolean operator </span></span><span
+ style='position:absolute;top:44.25%;left:9.73%;width:85.76%;height:6.0%'><span
+ style='font-size:88%'>function call is an operator template&#13;</span></span><span
+ style='position:absolute;top:51.74%;left:9.73%;width:96.62%;height:6.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-3.87%'>•</span></span><span
+ style='font-size:88%'>The operator template stores references to the </span></span><span
+ style='position:absolute;top:57.99%;left:9.73%;width:91.94%;height:6.0%'><span
+ style='font-size:88%'>arguments and defers the operation until the </span></span><span
+ style='position:absolute;top:64.25%;left:9.73%;width:85.76%;height:6.0%'><span
+ style='font-size:88%'>result is requested&#13;</span></span><span
+ style='position:absolute;top:71.75%;left:9.73%;width:96.62%;height:6.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-3.87%'>•</span></span><span
+ style='font-size:88%'>In this way the operation is performed after the </span></span><span
+ style='position:absolute;top:78.0%;left:9.73%;width:93.07%;height:6.0%'><span
+ style='font-size:88%'>operator template is returned by the operator </span></span><span
+ style='position:absolute;top:84.25%;left:9.73%;width:85.76%;height:6.0%'><span
+ style='font-size:88%'>function</span></span></div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0062.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0062.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,273 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Operator Templates">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="65"/>
+ <o:rules v:ext="edit">
+ <o:r id="V:Rule2" type="connector" idref="#_x0000_s66571">
+ <o:proxy start="" idref="#_x0000_s66570" connectloc="0"/>
+ <o:proxy end="" idref="#_x0000_s66569" connectloc="2"/>
+ </o:r>
+ <o:r id="V:Rule4" type="connector" idref="#_x0000_s66572">
+ <o:proxy start="" idref="#_x0000_s66569" connectloc="0"/>
+ <o:proxy end="" idref="#_x0000_s66568" connectloc="2"/>
+ </o:r>
+ <o:r id="V:Rule6" type="connector" idref="#_x0000_s66573">
+ <o:proxy start="" idref="#_x0000_s66569" connectloc="0"/>
+ <o:proxy end="" idref="#_x0000_s66567" connectloc="2"/>
+ </o:r>
+ <o:r id="V:Rule8" type="connector" idref="#_x0000_s66574">
+ <o:proxy start="" idref="#_x0000_s66568" connectloc="0"/>
+ <o:proxy end="" idref="#_x0000_s66566" connectloc="2"/>
+ </o:r>
+ <o:r id="V:Rule10" type="connector" idref="#_x0000_s66575">
+ <o:proxy start="" idref="#_x0000_s66568" connectloc="0"/>
+ <o:proxy end="" idref="#_x0000_s66565" connectloc="2"/>
+ </o:r>
+ </o:rules>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>58</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s66562"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s66563" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:198.875pt;width:296.875pt;height:321.75pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:roundrect id="_x0000_s66565"
+ style='position:absolute;left:516.625pt;top:233pt;width:108.375pt;height:45.25pt;
+ mso-wrap-style:none;v-text-anchor:middle' arcsize="10923f" filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><![if !vml]><img border=0 v:shapes="_x0000_s66565"
+ src="slide0062_image468.gif" style='position:absolute;top:43.0%;left:71.72%;
+ width:15.54%;height:9.0%'><![endif]>
+ <div v:shape="_x0000_s66562" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Operator Templates</div>
+ <div v:shape="_x0000_s66563" class=B>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:37.0%;left:9.73%;width:42.69%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-8.77%'>•</span></span><span
+ style='font-size:75%'>When chaining operator </span></span><span
+ style='position:absolute;top:41.25%;left:9.73%;width:38.01%;height:5.25%'><span
+ style='font-size:75%'>templates they cache </span></span><span
+ style='position:absolute;top:45.5%;left:9.73%;width:35.58%;height:5.25%'><span
+ style='font-size:75%'>references to each </span></span><span style='position:
+ absolute;top:49.75%;left:9.73%;width:35.58%;height:5.25%'><span
+ style='font-size:75%'>other and build an </span></span><span style='position:
+ absolute;top:54.0%;left:9.73%;width:35.58%;height:5.25%'><span
+ style='font-size:75%'>expression tree&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:59.25%;left:9.73%;width:40.63%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-9.21%'>•</span></span><span
+ style='font-size:75%'>When the final result is </span></span><span
+ style='position:absolute;top:63.5%;left:9.73%;width:35.58%;height:5.25%'><span
+ style='font-size:75%'>requested the </span></span><span style='position:absolute;
+ top:67.75%;left:9.73%;width:42.13%;height:5.25%'><span style='font-size:75%'>expression
+ is evaluated </span></span><span style='position:absolute;top:72.0%;
+ left:9.73%;width:35.58%;height:5.25%'><span style='font-size:75%'>and the
+ result is </span></span><span style='position:absolute;top:76.25%;left:9.73%;
+ width:35.58%;height:5.25%'><span style='font-size:75%'>produced&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:81.75%;left:9.73%;width:35.58%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-10.52%'>•</span></span><span
+ style='font-size:75%'>This avoids </span></span><span style='position:absolute;
+ top:86.0%;left:9.73%;width:42.32%;height:5.25%'><span style='font-size:75%'>unnecessary
+ copying of </span></span><span style='position:absolute;top:90.25%;left:9.73%;
+ width:35.58%;height:5.25%'><span style='font-size:75%'>intermediate results</span></span></div>
+ </div>
+ <div v:shape="_x0000_s66565" class=O style='text-align:center;position:absolute;
+ top:45.5%;left:71.91%;width:14.79%;height:4.0%'>rectangle c</div>
+ <v:roundrect id="_x0000_s66566" style='position:absolute;left:328.125pt;top:232.5pt;
+ width:108.375pt;height:45.25pt;mso-wrap-style:none;v-text-anchor:middle'
+ arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><![if !vml]><img border=0 v:shapes="_x0000_s66566"
+ src="slide0062_image469.gif" style='position:absolute;top:43.0%;left:45.5%;
+ width:15.54%;height:9.0%'><![endif]>
+ <div v:shape="_x0000_s66566" class=O style='text-align:center;position:absolute;
+ top:45.5%;left:46.62%;width:13.1%;height:4.0%'>polygon a</div>
+ <v:roundrect id="_x0000_s66567" style='position:absolute;left:573.375pt;top:300.875pt;
+ width:108.375pt;height:45.25pt;mso-wrap-style:none;v-text-anchor:middle'
+ arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:roundrect id="_x0000_s66568" style='position:absolute;left:340.75pt;
+ top:302.125pt;width:201.875pt;height:45.25pt;mso-wrap-style:none;
+ v-text-anchor:middle' arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:roundrect id="_x0000_s66569" style='position:absolute;left:361.625pt;
+ top:395pt;width:316.25pt;height:43.75pt;mso-wrap-style:none;v-text-anchor:middle'
+ arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:roundrect id="_x0000_s66570" style='position:absolute;left:448.375pt;
+ top:479.625pt;width:125.5pt;height:45.25pt;mso-wrap-style:none;
+ v-text-anchor:middle' arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:shapetype id="_x0000_t32" coordsize="21600,21600" o:spt="32"
+ o:oned="t" path="m,l21600,21600e" filled="f">
+ <v:path arrowok="t" fillok="f" o:connecttype="none"/>
+ <o:lock v:ext="edit" shapetype="t"/>
+ </v:shapetype><v:shape id="_x0000_s66571" type="#_x0000_t32" style='position:absolute;
+ left:511.125pt;top:438.75pt;width:8.625pt;height:40.875pt;flip:y'
+ o:connectortype="straight" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><v:shape id="_x0000_s66572" type="#_x0000_t32" style='position:absolute;
+ left:441.75pt;top:347.375pt;width:78pt;height:47.625pt;flip:x y'
+ o:connectortype="straight" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><v:shape id="_x0000_s66573" type="#_x0000_t32" style='position:absolute;
+ left:519.75pt;top:346.125pt;width:107.875pt;height:48.875pt;flip:y'
+ o:connectortype="straight" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><v:shape id="_x0000_s66574" type="#_x0000_t32" style='position:absolute;
+ left:382.375pt;top:277.75pt;width:59.375pt;height:24.375pt;flip:x y'
+ o:connectortype="straight" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><v:shape id="_x0000_s66575" type="#_x0000_t32" style='position:absolute;
+ left:441.75pt;top:278.25pt;width:129.125pt;height:23.875pt;flip:y'
+ o:connectortype="straight" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:shape><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202"
+ path="m,l,21600r21600,l21600,xe">
+ <v:stroke joinstyle="miter"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ </v:shapetype><v:shape id="_x0000_s66576" type="#_x0000_t202" style='position:absolute;
+ left:526.125pt;top:443.25pt;width:120.625pt;height:31.5pt;
+ mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
+ stroked="f">
+ <v:textbox style='mso-next-textbox:#_x0000_s66576'/>
+ </v:shape><v:shape id="_x0000_s66577" type="#_x0000_t202" style='position:absolute;
+ left:473.625pt;top:349.125pt;width:120.625pt;height:31.5pt;
+ mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
+ filled="f" stroked="f">
+ <v:textbox style='mso-next-textbox:#_x0000_s66577'/>
+ </v:shape><v:shape id="_x0000_s66578" type="#_x0000_t202" style='position:absolute;
+ left:404.625pt;top:267.625pt;width:120.625pt;height:31.5pt;
+ mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
+ filled="f" stroked="f">
+ <v:textbox style='mso-next-textbox:#_x0000_s66578'/>
+ </v:shape><v:shape id="_x0000_s66579" type="#_x0000_t202" style='position:absolute;
+ left:102.875pt;top:107.125pt;width:537.125pt;height:86.75pt;
+ mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
+ stroked="f">
+ <v:textbox style='mso-next-textbox:#_x0000_s66579'/>
+ </v:shape><![if !vml]><img border=0
+ v:shapes="_x0000_s66567,_x0000_s66568,_x0000_s66569,_x0000_s66570,_x0000_s66571,_x0000_s66572,_x0000_s66573,_x0000_s66574,_x0000_s66575,_x0000_s66576,_x0000_s66579"
+ src="slide0062_image470.gif" style='position:absolute;top:19.75%;left:14.23%;
+ width:80.71%;height:77.75%'><![endif]>
+ <div v:shape="_x0000_s66567" class=O style='text-align:center;position:absolute;
+ top:58.25%;left:80.71%;width:13.1%;height:4.0%'>polygon b</div>
+ <div v:shape="_x0000_s66568" class=O style='text-align:center;position:absolute;
+ top:58.5%;left:45.31%;width:32.39%;height:4.0%'>bop&lt;polygon,rectangle&gt;</div>
+ <div v:shape="_x0000_s66569" class=O style='text-align:center;position:absolute;
+ top:75.5%;left:46.25%;width:52.24%;height:4.0%'>bop&lt;bop&lt;polygon,rectangle&gt;,polygon&gt;</div>
+ <div v:shape="_x0000_s66570" class=O style='text-align:center;position:absolute;
+ top:91.25%;left:61.61%;width:18.91%;height:4.0%'>polygon_set d</div>
+ <div v:shape="_x0000_s66576" class=O style='text-align:justify;position:absolute;
+ top:82.75%;left:74.15%;width:13.67%;height:4.25%'><nobr><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>operator=</span><span style='mso-special-format:
+ lastCR;display:none'>&#13;</span></nobr></div>
+ <div v:shape="_x0000_s66577" class=O style='text-align:justify;position:absolute;
+ top:65.25%;left:66.85%;width:13.67%;height:4.25%'><nobr><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>operator-</span><span style='mso-special-format:
+ lastCR;display:none'>&#13;</span></nobr></div>
+ <div v:shape="_x0000_s66578" class=O style='text-align:justify;position:absolute;
+ top:50.24%;left:57.11%;width:13.67%;height:4.25%'><nobr><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>operator&amp;</span><span
+ style='mso-special-format:lastCR;display:none'>&#13;</span></nobr></div>
+ <div v:shape="_x0000_s66579" class=O>
+ <div style='position:absolute;top:20.75%;left:15.35%;width:72.84%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>void clip_and_subtract(polygon_set&amp;
+ d,&#13;</span></div>
+ <div style='position:absolute;top:24.75%;left:15.35%;width:84.45%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'><span style='mso-spacerun:yes'>          
+ </span>polygon a, polygon b, rectangle c) {&#13;</span></div>
+ <div style='position:absolute;top:28.74%;left:15.35%;width:72.84%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'><span style='mso-spacerun:yes'>  </span>d
+ = (a &amp; c) - b;&#13;</span></div>
+ <div style='position:absolute;top:32.5%;left:15.35%;width:72.84%;height:4.25%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>}</span><span style='mso-special-format:
+ lastCR;display:none'>&#13;</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0062_image468.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0062_image469.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0062_image470.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,356 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Robust Predicate Primitives">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="67"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>38</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s68610"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><v:line id="_x0000_s68612" style='position:absolute;
+ flip:y' from="300pt,119.5pt" to="360.875pt,145.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s68613" style='position:absolute;flip:y' from="307.375pt,132pt"
+ to="361.75pt,153.625pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s68614" style='position:absolute;left:192pt;top:121.5pt;
+ width:100.25pt;height:46.375pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68616" style='position:absolute;left:324.75pt;
+ top:143.25pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68617" style='position:absolute;left:306.25pt;
+ top:113.625pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68618" style='position:absolute;left:371.375pt;
+ top:129.875pt;width:56.375pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s68612,_x0000_s68613"
+ src="slide0064_image430.gif" style='position:absolute;top:22.0%;left:41.57%;
+ width:8.98%;height:7.0%'><![endif]>
+ <div v:shape="_x0000_s68610" class=T style='position:absolute;top:8.0%;
+ left:4.86%;width:90.26%;height:9.25%'>Robust Predicate Primitives</div>
+ <div v:shape="_x0000_s68614" class=B>
+ <div style='position:absolute;top:23.25%;left:27.71%;width:12.17%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>Slope &#13;</span></div>
+ <div style='position:absolute;top:27.0%;left:27.71%;width:12.73%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>Comparison</span></div>
+ </div>
+ <div v:shape="_x0000_s68616" class=B style='position:absolute;top:27.25%;
+ left:46.06%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>b</span></div>
+ <div v:shape="_x0000_s68617" class=B style='position:absolute;top:22.0%;
+ left:43.63%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a</span></div>
+ <div v:shape="_x0000_s68618" class=B style='position:absolute;top:25.0%;
+ left:52.62%;width:6.74%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a &lt; b?</span></div>
+ <v:roundrect id="_x0000_s68619" style='position:absolute;left:286.625pt;top:100.125pt;
+ width:141.75pt;height:77.25pt;mso-wrap-style:none;v-text-anchor:middle'
+ arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:line id="_x0000_s68620" style='position:absolute;flip:y'
+ from="303pt,235.375pt" to="363.875pt,261.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s68622" style='position:absolute;left:160.125pt;
+ top:237.375pt;width:135.125pt;height:46.375pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68623" style='position:absolute;left:354.5pt;
+ top:222pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68624" style='position:absolute;left:309.25pt;
+ top:229.5pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68625" style='position:absolute;left:369.125pt;
+ top:220.5pt;width:63.875pt;height:70.875pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s68619,_x0000_s68620"
+ src="slide0064_image431.gif" style='position:absolute;top:18.5%;left:39.7%;
+ width:20.03%;height:30.5%'><![endif]>
+ <div v:shape="_x0000_s68622" class=B>
+ <div style='position:absolute;top:44.75%;left:23.22%;width:16.85%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>Point On Above &#13;</span></div>
+ <div style='position:absolute;top:48.5%;left:23.22%;width:19.28%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>or Below Segment</span></div>
+ </div>
+ <div v:shape="_x0000_s68623" class=B style='position:absolute;top:42.0%;
+ left:50.18%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>b</span></div>
+ <div v:shape="_x0000_s68624" class=B style='position:absolute;top:43.25%;
+ left:44.0%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a</span></div>
+ <div v:shape="_x0000_s68625" class=B>
+ <div style='position:absolute;top:41.75%;left:52.24%;width:7.11%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>a &lt; b?&#13;</span></div>
+ <div style='position:absolute;top:45.5%;left:52.24%;width:8.05%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>a == b?&#13;</span></div>
+ <div style='position:absolute;top:49.0%;left:52.24%;width:7.11%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>a &gt; b?&#13;</span></div>
+ <div style='position:absolute;top:52.75%;left:52.24%;width:7.11%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <v:roundrect id="_x0000_s68626" style='position:absolute;left:289.625pt;top:3in;
+ width:141.75pt;height:77.25pt;mso-wrap-style:none;v-text-anchor:middle'
+ arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:oval id="_x0000_s68627" style='position:absolute;left:319.125pt;
+ top:248.5pt;width:7pt;height:7pt;mso-wrap-style:none;v-text-anchor:middle'
+ fillcolor="black" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s68626,_x0000_s68627"
+ src="slide0064_image432.gif" style='position:absolute;top:40.0%;left:40.26%;
+ width:20.03%;height:14.75%'><![endif]><v:roundrect id="_x0000_s68628" style='position:absolute;
+ left:131.625pt;top:377pt;width:141.75pt;height:77.25pt;mso-wrap-style:none;
+ v-text-anchor:middle' arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:line id="_x0000_s68629" style='position:absolute;flip:y'
+ from="144.125pt,391.125pt" to="205pt,417.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s68630" style='position:absolute;flip:y' from="151.5pt,401.5pt"
+ to="182.125pt,425.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s68631" style='position:absolute;left:168.875pt;
+ top:414.875pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68632" style='position:absolute;left:150.375pt;
+ top:385.25pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68633" style='position:absolute;left:208.75pt;
+ top:406.75pt;width:56.375pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68634" style='position:absolute;left:143pt;top:460.125pt;
+ width:135.125pt;height:46.375pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:roundrect id="_x0000_s68635" style='position:absolute;left:497.125pt;
+ top:380.125pt;width:141.75pt;height:77.25pt;mso-wrap-style:none;
+ v-text-anchor:middle' arcsize="10923f" filled="f" fillcolor="#bbe0e3 [4]"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:line id="_x0000_s68636" style='position:absolute;flip:y'
+ from="509.625pt,394.25pt" to="570.5pt,420.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s68637" style='position:absolute' from="509.75pt,420.875pt"
+ to="531.375pt,449.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s68638" style='position:absolute;left:534.375pt;
+ top:418pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68639" style='position:absolute;left:515.875pt;
+ top:388.375pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68640" style='position:absolute;left:574.25pt;
+ top:409.875pt;width:56.375pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68641" style='position:absolute;left:510.75pt;
+ top:461.875pt;width:135.125pt;height:46.375pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0
+ v:shapes="_x0000_s68628,_x0000_s68629,_x0000_s68630,_x0000_s68635,_x0000_s68636,_x0000_s68637"
+ src="slide0064_image433.gif" style='position:absolute;top:69.75%;left:18.16%;
+ width:70.78%;height:15.5%'><![endif]>
+ <div v:shape="_x0000_s68631" class=B style='position:absolute;top:77.75%;
+ left:24.53%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>b</span></div>
+ <div v:shape="_x0000_s68632" class=B style='position:absolute;top:72.25%;
+ left:21.91%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a</span></div>
+ <div v:shape="_x0000_s68633" class=B style='position:absolute;top:76.25%;
+ left:29.96%;width:6.92%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a X b?</span></div>
+ <div v:shape="_x0000_s68634" class=B><span style='position:absolute;
+ top:86.0%;left:20.78%;width:16.85%;height:3.25%'><span style='mso-special-format:
+ nobullet;display:none'>•</span><span style='font-size:44%'>Line Segments </span></span><span
+ style='position:absolute;top:89.25%;left:24.53%;width:13.1%;height:3.25%'><span
+ style='font-size:44%'>Intersect</span></span></div>
+ <div v:shape="_x0000_s68638" class=B style='position:absolute;top:78.25%;
+ left:75.28%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>b</span></div>
+ <div v:shape="_x0000_s68639" class=B style='position:absolute;top:72.75%;
+ left:72.65%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a</span></div>
+ <div v:shape="_x0000_s68640" class=B style='position:absolute;top:76.75%;
+ left:80.71%;width:7.11%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a in b?</span></div>
+ <div v:shape="_x0000_s68641" class=B style='position:absolute;top:86.25%;
+ left:71.91%;width:17.04%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>Point in Polygon</span></div>
+ <v:oval id="_x0000_s68642" style='position:absolute;left:530.25pt;top:405.875pt;
+ width:7pt;height:7pt;mso-wrap-style:none;v-text-anchor:middle' fillcolor="black"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s68642"
+ src="slide0064_image434.gif" style='position:absolute;top:75.0%;left:73.59%;
+ width:1.31%;height:1.75%'><![endif]><v:line id="_x0000_s68643" style='position:absolute;
+ flip:y' from="532pt,433pt" to="572.25pt,448.5pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s68643"
+ src="slide0064_image435.gif" style='position:absolute;top:80.0%;left:73.78%;
+ width:5.99%;height:3.5%'><![endif]><v:line id="_x0000_s68644" style='position:absolute;
+ flip:x y' from="571pt,393.125pt" to="572.125pt,432.25pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s68644"
+ src="slide0064_image436.gif" style='position:absolute;top:72.75%;left:79.21%;
+ width:.56%;height:7.75%'><![endif]><v:line id="_x0000_s68646" style='position:absolute;
+ flip:y' from="198.25pt,292.375pt" to="290.25pt,377pt" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s68647" style='position:absolute;flip:x y' from="427.75pt,292.5pt"
+ to="552.5pt,377.125pt" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s68646,_x0000_s68647"
+ src="slide0064_image437.gif" style='position:absolute;top:53.5%;left:27.52%;
+ width:49.62%;height:16.75%'><![endif]><v:line id="_x0000_s68648" style='position:absolute;
+ flip:x y' from="364.75pt,178.375pt" to="364.875pt,214pt" strokecolor="black [1]">
+ <v:stroke endarrow="block"/>
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s68649" style='position:absolute;left:249.875pt;
+ top:318.875pt;width:135.125pt;height:46.375pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68650" style='position:absolute;left:499pt;top:303.125pt;
+ width:135.125pt;height:46.375pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s68651" style='position:absolute;left:364pt;top:176.25pt;
+ width:135.125pt;height:46.375pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0 v:shapes="_x0000_s68648"
+ src="slide0064_image438.gif" style='position:absolute;top:33.0%;left:50.18%;
+ width:1.31%;height:7.25%'><![endif]>
+ <div v:shape="_x0000_s68649" class=B>
+ <div style='position:absolute;top:60.0%;left:35.76%;width:16.85%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>implemented &#13;</span></div>
+ <div style='position:absolute;top:63.5%;left:35.76%;width:16.85%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>in terms of</span></div>
+ </div>
+ <div v:shape="_x0000_s68650" class=B>
+ <div style='position:absolute;top:56.99%;left:70.22%;width:16.85%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>implemented &#13;</span></div>
+ <div style='position:absolute;top:60.75%;left:70.22%;width:16.85%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>in terms of</span></div>
+ </div>
+ <div v:shape="_x0000_s68651" class=B>
+ <div style='position:absolute;top:33.5%;left:51.49%;width:16.85%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>implemented &#13;</span></div>
+ <div style='position:absolute;top:37.25%;left:51.49%;width:16.85%;height:3.25%'><span
+ style='mso-special-format:nobullet;display:none'>•</span><span
+ style='font-size:44%'>in terms of</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image430.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image431.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image432.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image433.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image434.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image435.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image436.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image437.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0064_image438.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,151 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Robust Point In Polygon Predicate">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="68"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>42</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s69634"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s69635" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:217.25pt;width:9in;height:265.125pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:roundrect id="_x0000_s69636"
+ style='position:absolute;left:304.75pt;top:122pt;width:141.75pt;height:77.25pt;
+ mso-wrap-style:none;v-text-anchor:middle' arcsize="10923f" filled="f"
+ fillcolor="#bbe0e3 [4]" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:roundrect><v:line id="_x0000_s69637" style='position:absolute;flip:y'
+ from="317.25pt,136.125pt" to="378.125pt,162.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:line id="_x0000_s69638" style='position:absolute' from="317.375pt,162.75pt"
+ to="339pt,191pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><v:rect id="_x0000_s69639" style='position:absolute;left:342pt;top:159.875pt;
+ width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]" stroked="f"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s69640" style='position:absolute;left:323.5pt;
+ top:130.25pt;width:29.75pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><v:rect id="_x0000_s69641" style='position:absolute;left:381.875pt;
+ top:151.75pt;width:56.375pt;height:24pt' filled="f" fillcolor="#bbe0e3 [4]"
+ stroked="f" strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:rect><![if !vml]><img border=0
+ v:shapes="_x0000_s69636,_x0000_s69637,_x0000_s69638"
+ src="slide0065_image446.gif" style='position:absolute;top:22.5%;left:42.32%;
+ width:20.03%;height:14.75%'><![endif]>
+ <div v:shape="_x0000_s69634" class=T style='position:absolute;top:8.5%;
+ left:-.74%;width:101.68%;height:8.5%'><span style='font-size:91%'>Robust Point
+ In Polygon Predicate</span></div>
+ <div v:shape="_x0000_s69635">
+ <div class=B><span style='position:absolute;top:41.25%;left:9.73%;width:97.94%;
+ height:6.75%'><span class=BB style='position:absolute;left:-3.82%'>•</span>For
+ all edges which contain the x value of </span><span style='position:absolute;
+ top:48.5%;left:9.73%;width:84.45%;height:6.75%'>the point within their x
+ interval&#13;</span></div>
+ <div class=B1><span style='position:absolute;top:56.75%;left:14.04%;
+ width:92.13%;height:6.0%'><span class=B1B style='position:absolute;left:-3.25%'>–</span>Accumulate
+ the sum of such edges the point </span><span style='position:absolute;
+ top:63.0%;left:14.04%;width:79.96%;height:6.0%'>is above&#13;</span></div>
+ <div class=B style='position:absolute;top:70.75%;left:5.99%;width:88.2%;
+ height:6.75%'><span style='position:absolute;top:0%;left:4.24%;width:95.75%;
+ height:100.0%'><span class=BB style='position:absolute;left:-4.43%'>•</span>The
+ point is inside if the sum is odd</span></div>
+ </div>
+ <div v:shape="_x0000_s69639" class=B style='position:absolute;top:30.5%;
+ left:48.5%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>b</span></div>
+ <div v:shape="_x0000_s69640" class=B style='position:absolute;top:25.0%;
+ left:45.88%;width:2.24%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a</span></div>
+ <div v:shape="_x0000_s69641" class=B style='position:absolute;top:28.99%;
+ left:54.11%;width:7.11%;height:3.25%'><span style='mso-special-format:nobullet;
+ display:none'>•</span><span style='font-size:44%'>a in b?</span></div>
+ <v:oval id="_x0000_s69642" style='position:absolute;left:337.875pt;top:147.75pt;
+ width:7pt;height:7pt;mso-wrap-style:none;v-text-anchor:middle' fillcolor="black"
+ strokecolor="black [1]">
+ <v:fill color2="white [0]"/>
+ <v:shadow color="gray [2]"/>
+ </v:oval><![if !vml]><img border=0 v:shapes="_x0000_s69642"
+ src="slide0065_image447.gif" style='position:absolute;top:27.25%;left:46.81%;
+ width:1.31%;height:1.75%'><![endif]><v:line id="_x0000_s69643" style='position:absolute;
+ flip:y' from="339.625pt,174.875pt" to="379.875pt,190.375pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s69643"
+ src="slide0065_image448.gif" style='position:absolute;top:32.25%;left:47.19%;
+ width:5.99%;height:3.5%'><![endif]><v:line id="_x0000_s69644" style='position:absolute;
+ flip:x y' from="378.625pt,135pt" to="379.75pt,174.125pt" strokecolor="black [1]">
+ <v:shadow color="gray [2]"/>
+ </v:line><![if !vml]><img border=0 v:shapes="_x0000_s69644"
+ src="slide0065_image449.gif" style='position:absolute;top:25.0%;left:52.62%;
+ width:.56%;height:7.75%'><![endif]></p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065_image446.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065_image447.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065_image448.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0065_image449.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0066.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0066.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,168 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: What code that uses GTL looks like">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="72"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>49</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s73730"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s73731" type="#_x0000_m1027"
+ style='position:absolute;left:0;top:256.625pt;width:690.25pt;height:268.125pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s73730" class=T style='position:absolute;top:8.5%;
+ left:-2.43%;width:105.05%;height:8.5%'><span style='font-size:91%'>What code
+ that uses GTL looks like</span></div>
+ <div v:shape="_x0000_s73731" class=B>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:47.5%;left:4.68%;width:102.99%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.63%'>•</span></span><span
+ style='font-size:75%'>Two lines of code in the example invoke five different
+ GTL </span></span><span style='position:absolute;top:52.0%;left:4.68%;
+ width:90.26%;height:5.25%'><span style='font-size:75%'>algorithms&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:57.25%;
+ left:.93%;width:103.93%;height:5.25%'><span style='position:absolute;
+ top:0%;left:3.6%;width:96.39%;height:100.0%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.73%'>•</span></span><span
+ style='font-size:75%'>Arguments passed into functions are not GTL data
+ types&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:62.5%;left:.93%;
+ width:94.0%;height:5.25%'><span style='position:absolute;top:0%;left:3.98%;
+ width:96.01%;height:100.0%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.14%'>•</span></span><span
+ style='font-size:75%'>The code is maximally concise, yet easy to read&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:67.5%;left:4.68%;width:103.74%;height:5.5%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.61%'>•</span></span><span
+ style='font-size:75%'>Clip </span><span style='font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";font-size:75%'>b</span><span
+ style='font-size:75%'> to the bounding box of </span><span style='font-family:
+ "Courier New";mso-ascii-font-family:"Courier New";font-size:75%'>a</span><span
+ style='font-size:75%'>, XOR that with </span><span style='font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";font-size:75%'>a</span><span
+ style='font-size:75%'> shrunk by </span></span><span style='position:absolute;
+ top:71.75%;left:4.68%;width:90.26%;height:5.5%'><span style='font-size:75%'>ten
+ then merge into </span><span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New";font-size:75%'>result&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:77.5%;left:4.68%;width:105.61%;height:5.25%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.54%'>•</span></span><span
+ style='font-size:75%'>Details of memory management for intermediate results
+ are </span></span><span style='position:absolute;top:81.75%;left:4.68%;
+ width:90.26%;height:5.25%'><span style='font-size:75%'>abstracted away from
+ the use of algorithms&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:87.0%;left:.93%;
+ width:94.0%;height:5.25%'><span style='position:absolute;top:0%;left:3.98%;
+ width:96.01%;height:100.0%'><span style='font-size:75%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.14%'>•</span></span><span
+ style='font-size:75%'>Such code is easy to write and easy to maintain</span></span></div>
+ </div>
+ <v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe">
+ <v:stroke joinstyle="miter"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ </v:shapetype><v:shape id="_x0000_s73732" type="#_x0000_t202" style='position:absolute;
+ left:133.25pt;top:95pt;width:511.875pt;height:162.125pt;
+ mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
+ stroked="f">
+ <v:textbox style='mso-next-textbox:#_x0000_s73732'/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s73732"
+ src="slide0066_image463.gif" style='position:absolute;top:17.5%;left:18.53%;
+ width:71.34%;height:30.5%'><![endif]>
+ <div v:shape="_x0000_s73732" class=O>
+ <div style='text-align:justify;position:absolute;top:18.5%;left:19.47%;
+ width:47.94%;height:4.0%'><nobr><span style='font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";mso-hansi-font-family:"Courier New"'>void
+ foo(list&lt;CPolygon&gt;&amp; result, &#13;</span></nobr></div>
+ <div style='text-align:justify;position:absolute;top:22.5%;left:19.47%;
+ width:49.43%;height:4.0%'><nobr><span style='font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";mso-hansi-font-family:"Courier New"'><span
+ style='mso-spacerun:yes'>         </span>const list&lt;CPolygon&gt;&amp; a,
+ &#13;</span></nobr></div>
+ <div style='text-align:justify;position:absolute;top:26.5%;left:19.47%;
+ width:52.43%;height:4.0%'><nobr><span style='font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";mso-hansi-font-family:"Courier New"'><span
+ style='mso-spacerun:yes'>         </span>const list&lt;CPolygon&gt;&amp; b)
+ {&#13;</span></nobr></div>
+ <div style='text-align:justify;position:absolute;top:30.5%;left:19.47%;
+ width:41.94%;height:4.0%'><nobr><span style='font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";mso-hansi-font-family:"Courier New"'><span
+ style='mso-spacerun:yes'>  </span>CBoundingBox domainExtent;&#13;</span></nobr></div>
+ <div style='text-align:justify;position:absolute;top:34.5%;left:19.47%;
+ width:47.94%;height:4.0%'><nobr><span style='font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";mso-hansi-font-family:"Courier New"'><span
+ style='mso-spacerun:yes'>  </span>gtl::extents(domainExtent, a);&#13;</span></nobr></div>
+ <div style='text-align:justify;position:absolute;top:38.5%;left:19.47%;
+ width:62.92%;height:4.0%'><nobr><span style='font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";mso-hansi-font-family:"Courier New"'><span
+ style='mso-spacerun:yes'>  </span>result += (b &amp; domainExtent) ^ (a -
+ 10);&#13;</span></nobr></div>
+ <div style='text-align:justify;position:absolute;top:42.25%;left:19.47%;
+ width:1.68%;height:4.25%'><nobr><span style='font-family:"Courier New";
+ mso-ascii-font-family:"Courier New";mso-hansi-font-family:"Courier New"'>}</span><span
+ style='mso-special-format:lastCR;display:none'>&#13;</span></nobr></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0066_image463.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0067.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0067.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,134 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Using Booleans">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="74"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>6</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s75778"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s75779" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:238pt;width:649.75pt;height:260pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:shapetype id="_x0000_t202"
+ coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe">
+ <v:stroke joinstyle="miter"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ </v:shapetype><v:shape id="_x0000_s75780" type="#_x0000_t202" style='position:absolute;
+ left:60.25pt;top:111.375pt;width:537.125pt;height:111.125pt;
+ mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
+ stroked="f">
+ <v:textbox style='mso-next-textbox:#_x0000_s75780'/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s75780"
+ src="slide0067_image013.gif" style='position:absolute;top:20.75%;left:8.42%;
+ width:74.9%;height:21.0%'><![endif]>
+ <div v:shape="_x0000_s75778" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Using Booleans</div>
+ <div v:shape="_x0000_s75779" class=B>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:44.5%;left:5.99%;
+ width:88.38%;height:6.75%'><span style='position:absolute;top:0%;left:4.23%;
+ width:95.76%;height:100.0%'><span style='mso-special-format:bullet;position:
+ absolute;left:-4.42%'>•</span>Productive operator syntax&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:52.0%;left:9.73%;width:92.5%;height:7.5%'><span style='mso-special-format:
+ bullet;position:absolute;left:-4.04%'>•</span>Clip polygon <span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New"'>a</span>
+ against bounding box <span style='font-family:"Courier New";mso-ascii-font-family:
+ "Courier New"'>c</span>, </span><span style='position:absolute;top:58.25%;
+ left:9.73%;width:98.12%;height:7.5%'>then subtract polygon <span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New"'>b</span>,
+ storing the result </span><span style='position:absolute;top:64.75%;
+ left:9.73%;width:84.64%;height:7.5%'>in polygon set <span style='font-family:
+ "Courier New";mso-ascii-font-family:"Courier New"'>d&#13;</span></span></div>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:73.0%;left:5.99%;
+ width:88.38%;height:6.75%'><span style='position:absolute;top:0%;left:4.23%;
+ width:95.76%;height:100.0%'><span style='mso-special-format:bullet;position:
+ absolute;left:-4.42%'>•</span>Takes longer to say than to type&#13;</span></div>
+ <div style='mso-line-spacing:"90 20 0";position:absolute;top:80.75%;
+ left:5.99%;width:103.37%;height:6.75%'><span style='position:absolute;
+ top:0%;left:3.62%;width:96.37%;height:100.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.75%'>•</span>No try/catch and no memory
+ management</span></div>
+ </div>
+ <div v:shape="_x0000_s75780" class=O>
+ <div style='position:absolute;top:21.5%;left:9.36%;width:72.84%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>void clip_and_subtract(polygon_set&amp;
+ d,&#13;</span></div>
+ <div style='position:absolute;top:25.5%;left:9.36%;width:84.45%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'><span style='mso-spacerun:yes'>          
+ </span>polygon a, polygon b, rectangle c) {&#13;</span></div>
+ <div style='position:absolute;top:29.5%;left:9.36%;width:72.84%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'><span style='mso-spacerun:yes'>  </span>d
+ = (a &amp; c) - b;&#13;</span></div>
+ <div style='position:absolute;top:33.25%;left:9.36%;width:72.84%;height:4.25%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>}</span><span style='mso-special-format:
+ lastCR;display:none'>&#13;</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0067_image013.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0068.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0068.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,192 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Introduction">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="75"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>3</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s76802"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s76803" type="#_x0000_m1027"
+ style='position:absolute;left:19.25pt;top:88.125pt;width:689.375pt;height:437.625pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s76802" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Introduction</div>
+ <div v:shape="_x0000_s76803">
+ <div class=B style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:16.5%;left:7.49%;width:105.05%;height:3.5%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.56%'>•</span></span><span
+ style='font-size:50%'>Implemented goofy template argument inheritance type
+ system and Manhattan geometry </span></span><span style='position:absolute;
+ top:19.5%;left:7.49%;width:90.07%;height:3.5%'><span style='font-size:50%'>features&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:23.0%;
+ left:3.74%;width:93.82%;height:3.5%'><span style='position:absolute;
+ top:0%;left:3.99%;width:96.0%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.15%'>•</span></span><span
+ style='font-size:50%'>Request for interest from boost in 2007&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:26.5%;
+ left:8.61%;width:88.95%;height:3.25%'><span style='position:absolute;
+ top:0%;left:3.57%;width:96.42%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.71%'>–</span></span><span
+ style='font-size:50%'>Discussed the design on boost dev list&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:29.75%;
+ left:8.61%;width:88.95%;height:3.25%'><span style='position:absolute;
+ top:0%;left:3.57%;width:96.42%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.71%'>–</span></span><span
+ style='font-size:50%'>Found out the design was bad and needed to be redone the
+ boost way&#13;</span></span></div>
+ <div class=B2 style='mso-line-spacing:"80 20 0";position:absolute;top:32.75%;
+ left:13.67%;width:83.89%;height:2.75%'><span style='position:absolute;
+ top:0%;left:2.9%;width:97.09%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-2.98%'>•</span></span><span
+ style='font-size:50%'>Thank you Joel Guzman&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:35.5%;
+ left:3.74%;width:93.82%;height:3.5%'><span style='position:absolute;
+ top:0%;left:3.99%;width:96.0%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.15%'>•</span></span><span
+ style='font-size:50%'>Added 45 degree geometry features&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:39.0%;
+ left:3.74%;width:102.8%;height:3.5%'><span style='position:absolute;
+ top:0%;left:3.64%;width:96.35%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.78%'>•</span></span><span
+ style='font-size:50%'>After six months of work we got permission from Intel to
+ release under boost license&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:42.5%;
+ left:8.61%;width:88.95%;height:3.25%'><span style='position:absolute;
+ top:0%;left:3.57%;width:96.42%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.71%'>–</span></span><span
+ style='font-size:50%'>Discussed the code on the boost dev list&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:45.75%;
+ left:8.61%;width:88.95%;height:3.25%'><span style='position:absolute;
+ top:0%;left:3.57%;width:96.42%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.71%'>–</span></span><span
+ style='font-size:50%'>Got a lot of feedback on specific design
+ considerations&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:48.75%;
+ left:3.74%;width:93.82%;height:3.5%'><span style='position:absolute;
+ top:0%;left:3.99%;width:96.0%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.15%'>•</span></span><span
+ style='font-size:50%'>Rewrote the interfaces to be more generic by using tag
+ dispatching&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:52.25%;
+ left:8.61%;width:88.95%;height:3.25%'><span style='position:absolute;
+ top:0%;left:3.57%;width:96.42%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.71%'>–</span></span><span
+ style='font-size:50%'>Got more feedback on design considerations from boost,
+ especially refinement&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:55.5%;
+ left:3.74%;width:93.82%;height:3.5%'><span style='position:absolute;
+ top:0%;left:3.99%;width:96.0%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.15%'>•</span></span><span
+ style='font-size:50%'>Re-rewrote the interfaces to be more generic still and
+ based on SFINAE&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:59.0%;
+ left:3.74%;width:93.82%;height:3.5%'><span style='position:absolute;
+ top:0%;left:3.99%;width:96.0%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.15%'>•</span></span><span
+ style='font-size:50%'>Added arbitrary-angle geometry features&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:62.5%;
+ left:8.61%;width:91.19%;height:3.25%'><span style='position:absolute;
+ top:0%;left:3.49%;width:96.5%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.61%'>–</span></span><span
+ style='font-size:50%'>Got feedback on arbitrary-angle algorithms and
+ robustness considerations from boost&#13;</span></span></div>
+ <div class=B2 style='mso-line-spacing:"80 20 0";position:absolute;top:65.5%;
+ left:13.67%;width:83.89%;height:2.75%'><span style='position:absolute;
+ top:0%;left:2.9%;width:97.09%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-2.98%'>•</span></span><span
+ style='font-size:50%'>Thank you Fernando Cacciola&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:68.25%;
+ left:3.74%;width:93.82%;height:3.5%'><span style='position:absolute;
+ top:0%;left:3.99%;width:96.0%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.15%'>•</span></span><span
+ style='font-size:50%'>Ported new SFINAE interfaces to MSVC9&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:71.75%;
+ left:8.61%;width:88.95%;height:3.25%'><span style='position:absolute;
+ top:0%;left:3.57%;width:96.42%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.71%'>–</span></span><span
+ style='font-size:50%'>Thank you Steven Watanabe&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:75.0%;
+ left:3.74%;width:93.82%;height:3.5%'><span style='position:absolute;
+ top:0%;left:3.99%;width:96.0%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.15%'>•</span></span><span
+ style='font-size:50%'>The library now looks more like Joel said it should back
+ in 2007&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:78.5%;
+ left:8.61%;width:88.95%;height:3.25%'><span style='position:absolute;
+ top:0%;left:3.57%;width:96.42%;height:100.0%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.71%'>–</span></span><span
+ style='font-size:50%'>We may pursue formal review this year&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:81.75%;left:7.49%;width:101.87%;height:3.5%'><span style='font-size:50%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.67%'>•</span></span><span
+ style='font-size:50%'>Deployed library to internal users who are using it now
+ to create the next generation of </span></span><span style='position:absolute;
+ top:84.5%;left:7.49%;width:90.07%;height:3.5%'><span style='font-size:50%'>silicon
+ fabrication process technology and microprocessors</span></span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0069.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0069.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,109 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: EDG SFINAE Bug">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="76"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>60</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s77826"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s77827" type="#_x0000_m1027"
+ style='position:absolute;left:0;top:89.25pt;width:10in;height:450.75pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s77826" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>EDG SFINAE Bug</div>
+ <div v:shape="_x0000_s77827" class=B><span style='position:absolute;
+ top:17.5%;left:4.68%;width:107.3%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-3.49%'>•</span></span><span
+ style='font-size:88%'>An unnamed enum type cannot be referred to in the </span></span><span
+ style='position:absolute;top:23.75%;left:4.68%;width:106.55%;height:6.0%'><span
+ style='font-size:88%'>template definition when instantiating a template on </span></span><span
+ style='position:absolute;top:30.0%;left:4.68%;width:94.38%;height:6.0%'><span
+ style='font-size:88%'>that type&#13;</span></span><span style='position:absolute;
+ top:37.5%;left:4.68%;width:97.37%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-3.84%'>•</span></span><span
+ style='font-size:88%'>STL uses unnamed enum types with arithmetic </span></span><span
+ style='position:absolute;top:43.75%;left:4.68%;width:94.38%;height:6.0%'><span
+ style='font-size:88%'>operators&#13;</span></span><span style='position:absolute;
+ top:51.24%;left:4.68%;width:109.17%;height:6.0%'><span style='font-size:88%'><span
+ class=BB style='position:absolute;left:-3.43%'>•</span></span><span
+ style='font-size:88%'>Substituion of my generic operators for the unnamed </span></span><span
+ style='position:absolute;top:57.49%;left:4.68%;width:94.38%;height:6.0%'><span
+ style='font-size:88%'>STL enum types should fail&#13;</span></span><span
+ style='position:absolute;top:65.0%;left:4.68%;width:107.3%;height:6.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-3.49%'>•</span></span><span
+ style='font-size:88%'>A bug in older versions of EDG frontend produces a </span></span><span
+ style='position:absolute;top:71.0%;left:4.68%;width:95.31%;height:6.0%'><span
+ style='font-size:88%'>syntax error instead of SFINAE if the template </span></span><span
+ style='position:absolute;top:77.25%;left:4.68%;width:94.38%;height:6.0%'><span
+ style='font-size:88%'>references it in the definition&#13;</span></span><span
+ style='position:absolute;top:84.75%;left:4.68%;width:111.42%;height:6.0%'><span
+ style='font-size:88%'><span class=BB style='position:absolute;left:-3.36%'>•</span></span><span
+ style='font-size:88%'>Currently fixed in the version of EGD used by the new </span></span><span
+ style='position:absolute;top:91.0%;left:4.68%;width:94.38%;height:6.0%'><span
+ style='font-size:88%'>icc11</span></span></div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0070.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0070.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,113 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: MSVC SFINAE limitation">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="77"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>59</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s78850"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s78851" type="#_x0000_m1027"
+ style='position:absolute;left:15.125pt;top:99.25pt;width:689.75pt;height:426.875pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s78850" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>MSVC SFINAE limitation</div>
+ <div v:shape="_x0000_s78851">
+ <div class=B style='mso-line-spacing:"90 20 0";position:absolute;top:18.75%;
+ left:3.18%;width:109.92%;height:6.75%'><span style='position:absolute;
+ top:0%;left:3.4%;width:96.59%;height:100.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.52%'>•</span>SFINAE works in MSVC for the
+ simple cases&#13;</span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:26.75%;left:6.92%;width:94.0%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.98%'>•</span>Order of template instantiation
+ in MSVC </span><span style='position:absolute;top:33.0%;left:6.92%;width:90.26%;
+ height:6.75%'>depends on type of template &#13;</span></div>
+ <div class=B1 style='mso-line-spacing:"90 20 0";position:absolute;top:40.75%;
+ left:8.05%;width:88.95%;height:6.0%'><span style='position:absolute;
+ top:0%;left:3.57%;width:96.42%;height:100.0%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.71%'>–</span>compile time constant vs. by
+ type&#13;</span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:47.75%;left:6.92%;width:106.36%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.52%'>•</span>Substitution failure of a nested
+ template is an </span><span style='position:absolute;top:54.0%;left:6.92%;
+ width:90.26%;height:6.75%'>error in MSVC&#13;</span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:62.0%;left:6.92%;width:107.67%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.47%'>•</span>The only way to get reliable
+ SFINAE behavior </span><span style='position:absolute;top:68.25%;left:6.92%;
+ width:105.61%;height:6.75%'>out of MSVC is to use enable_if with compile </span><span
+ style='position:absolute;top:74.75%;left:6.92%;width:90.26%;height:6.75%'>time
+ logic expressions&#13;</span></div>
+ <div class=B style='mso-line-spacing:"90 20 0"'><span style='position:absolute;
+ top:82.5%;left:6.92%;width:98.12%;height:6.75%'><span style='mso-special-format:
+ bullet;position:absolute;left:-3.81%'>•</span>It took two weeks of work to
+ port the code </span><span style='position:absolute;top:88.75%;left:6.92%;
+ width:90.26%;height:6.75%'>from EDG/gcc compatibility to MSVC</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0071.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0071.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,140 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: EDG Bug Workaround">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="78"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>61</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s79874"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s79875" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:9in;height:280.375pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape><v:shapetype id="_x0000_t202"
+ coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe">
+ <v:stroke joinstyle="miter"/>
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
+ </v:shapetype><v:shape id="_x0000_s79876" type="#_x0000_t202" style='position:absolute;
+ left:31.25pt;top:390.125pt;width:688.75pt;height:137.125pt;
+ mso-position-horizontal-relative:char;mso-position-vertical-relative:line'
+ stroked="f">
+ <v:textbox style='mso-next-textbox:#_x0000_s79876'/>
+ </v:shape><![if !vml]><img border=0 v:shapes="_x0000_s79876"
+ src="slide0071_image471.gif" style='position:absolute;top:72.25%;left:4.3%;
+ width:95.88%;height:25.75%'><![endif]>
+ <div v:shape="_x0000_s79874" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>EDG Bug Workaround</div>
+ <div v:shape="_x0000_s79875" class=B>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:23.25%;left:9.73%;width:94.0%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.98%'>•</span></span><span
+ style='font-size:88%'>If substitution of a nested template parameter </span></span><span
+ style='position:absolute;top:28.24%;left:9.73%;width:99.43%;height:6.0%'><span
+ style='font-size:88%'>fails before EDG tries to instantiate the template </span></span><span
+ style='position:absolute;top:33.25%;left:9.73%;width:95.88%;height:6.0%'><span
+ style='font-size:88%'>that would refer to the unnamed enum type no </span></span><span
+ style='position:absolute;top:38.25%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>syntax error is generated&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0";position:absolute;top:44.5%;left:5.99%;
+ width:88.57%;height:6.0%'><span style='position:absolute;top:0%;left:4.22%;
+ width:95.77%;height:100.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.41%'>•</span></span><span
+ style='font-size:88%'>EDG supports nested SFINAE, of course&#13;</span></span></div>
+ <div style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:50.74%;left:9.73%;width:90.82%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.12%'>•</span></span><span
+ style='font-size:88%'>I provide an intermediate meta-function with </span></span><span
+ style='position:absolute;top:55.75%;left:9.73%;width:99.25%;height:6.0%'><span
+ style='font-size:88%'>preprocessor macros in its definition that results </span></span><span
+ style='position:absolute;top:60.75%;left:9.73%;width:91.01%;height:6.0%'><span
+ style='font-size:88%'>in nested SFINAE except when compiled by </span></span><span
+ style='position:absolute;top:65.75%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>MSVC to work around both bugs</span></span></div>
+ </div>
+ <div v:shape="_x0000_s79876" class=O>
+ <div style='position:absolute;top:73.0%;left:5.43%;width:93.82%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>template &lt;typename T&gt; struct gtl_if
+ {&#13;</span></div>
+ <div style='position:absolute;top:77.0%;left:5.43%;width:93.82%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>#ifdef WIN32&#13;</span></div>
+ <div style='position:absolute;top:81.0%;left:5.43%;width:93.82%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'><span style='mso-spacerun:yes'> 
+ </span>typedef gtl_no type;&#13;</span></div>
+ <div style='position:absolute;top:85.0%;left:5.43%;width:93.82%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>#endif&#13;</span></div>
+ <div style='position:absolute;top:89.0%;left:5.43%;width:93.82%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>};&#13;</span></div>
+ <div style='position:absolute;top:93.0%;left:5.43%;width:109.55%;height:4.0%'><span
+ style='font-family:"Courier New";mso-ascii-font-family:"Courier New";
+ mso-hansi-font-family:"Courier New"'>template &lt;&gt; struct
+ gtl_if&lt;gtl_yes&gt; { typedef gtl_yes type; };</span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0071_image471.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0073.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/GTL_boostcon_draft03_files/slide0073.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,131 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
+xmlns:oa="urn:schemas-microsoft-com:office:activation"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=PowerPoint.Slide>
+<meta name=Generator content="Microsoft PowerPoint 11">
+<link id=Main-File rel=Main-File href="../GTL_boostcon_draft03.htm">
+<link rel=Preview href=preview.wmf>
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+p\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+v\:textbox {display:none;}
+</style>
+<![endif]-->
+<title>GTL Geometry Template Library</title>
+<meta name=Description content="5/15/2009: Overview">
+<link rel=Stylesheet href="master03_stylesheet.css">
+<![if !ppt]>
+<style media=print>
+<!--.sld
+ {left:0px !important;
+ width:6.0in !important;
+ height:4.5in !important;
+ font-size:107% !important;}
+-->
+</style>
+<script src=script.js></script><script><!--
+if( !IsNts() ) Redirect( "PPTSld" );
+//--></script><!--[if vml]><script>g_vml = 1;
+</script><![endif]--><![endif]><o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="81"/>
+</o:shapelayout>
+</head>
+
+<body lang=EN-US style='margin:0px;background-color:black'
+onclick="DocumentOnClick()" onresize="_RSW()" onload="LoadSld()"
+onkeypress="_KPH()">
+
+<div id=SlideObj class=sld style='position:absolute;top:0px;left:0px;
+width:534px;height:400px;font-size:16px;background-color:white;clip:rect(0%, 101%, 101%, 0%);
+visibility:hidden'><p:slide coordsize="720,540"
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"
+ masterhref="master03.xml">
+ <p:shaperange href="master03.xml#_x0000_s1025"/><![if !ppt]><p:shaperange
+ href="master03.xml#_x0000_s1028"/><p:shaperange
+ href="master03.xml#_x0000_s1029"/><p:shaperange
+ href="master03.xml#_x0000_s1030"/>
+ <div v:shape="_x0000_s1030" class=O>
+ <div style='text-align:right;position:absolute;top:92.0%;left:72.65%;
+ width:21.53%;height:3.25%'><span style='font-size:78%;mso-field-code:meta16'>2</span><span
+ style='font-size:78%;mso-special-format:lastCR;display:none'>&#13;</span></div>
+ </div>
+ <![endif]><p:shaperange href="master03.xml#_x0000_m1026"/><v:shape id="_x0000_s82946"
+ type="#_x0000_m1026" style='position:absolute;left:36pt;top:21.625pt;width:9in;
+ height:90pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="title"/></v:shape><p:shaperange
+ href="master03.xml#_x0000_m1027"/><v:shape id="_x0000_s82947" type="#_x0000_m1027"
+ style='position:absolute;left:36pt;top:126pt;width:9in;height:399.125pt'>
+ <v:fill o:detectmouseclick="f"/>
+ <v:stroke o:forcedash="f"/>
+ <o:lock v:ext="edit" text="f"/>
+ <p:placeholder type="body" position="1"/></v:shape>
+ <div v:shape="_x0000_s82946" class=T style='position:absolute;top:8.0%;
+ left:5.99%;width:88.2%;height:9.25%'>Overview</div>
+ <div v:shape="_x0000_s82947">
+ <div class=B style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:23.25%;left:9.73%;width:99.06%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.78%'>•</span></span><span
+ style='font-size:88%'>Intel badly needed high performance algorithms </span></span><span
+ style='position:absolute;top:28.24%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>for planar polygon manipulation&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:34.5%;
+ left:11.04%;width:83.14%;height:5.25%'><span style='position:absolute;
+ top:0%;left:3.6%;width:96.17%;height:100.0%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.74%'>–</span></span><span
+ style='font-size:86%'>I implemented them&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:39.75%;
+ left:5.99%;width:88.2%;height:6.0%'><span style='position:absolute;top:0%;
+ left:4.24%;width:95.75%;height:100.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.43%'>•</span></span><span
+ style='font-size:88%'>We have 2D Cartesian geometry&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:46.0%;left:14.04%;width:84.45%;height:5.25%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.54%'>–</span></span><span
+ style='font-size:86%'>Coordinate, Interval, Point, Rectangle, Polygon, </span></span><span
+ style='position:absolute;top:50.24%;left:14.04%;width:79.96%;height:5.25%'><span
+ style='font-size:86%'>Polygon Set&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:55.5%;
+ left:11.04%;width:83.14%;height:5.25%'><span style='position:absolute;
+ top:0%;left:3.6%;width:96.17%;height:100.0%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.74%'>–</span></span><span
+ style='font-size:86%'>Library of concepts for each&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:61.0%;left:9.73%;width:84.45%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.43%'>•</span></span><span
+ style='font-size:88%'>Many generic functions that operate on </span></span><span
+ style='position:absolute;top:66.0%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>conceptual types&#13;</span></span></div>
+ <div class=B1 style='mso-line-spacing:"80 20 0";position:absolute;top:72.0%;
+ left:11.04%;width:94.94%;height:5.25%'><span style='position:absolute;
+ top:0%;left:3.15%;width:96.64%;height:100.0%'><span style='font-size:86%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.26%'>–</span></span><span
+ style='font-size:86%'>API strives for symmetry, consistency and
+ simplicity&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0"'><span style='position:absolute;
+ top:77.5%;left:9.73%;width:97.94%;height:6.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-3.82%'>•</span></span><span
+ style='font-size:88%'>Some pretty heavy weight algorithms under the </span></span><span
+ style='position:absolute;top:82.5%;left:9.73%;width:84.45%;height:6.0%'><span
+ style='font-size:88%'>hood&#13;</span></span></div>
+ <div class=B style='mso-line-spacing:"80 20 0";position:absolute;top:88.75%;
+ left:5.99%;width:88.2%;height:6.0%'><span style='position:absolute;top:0%;
+ left:4.24%;width:95.75%;height:100.0%'><span style='font-size:88%'><span
+ style='mso-special-format:bullet;position:absolute;left:-4.43%'>•</span></span><span
+ style='font-size:88%'>3 man years and 30kloc</span></span></div>
+ </div>
+</p:slide></div>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/analysis.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/analysis.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,167 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Performance Analysis</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li><a href="gtl_design_overview.htm">Polygon
+ Library Design Overview</a></li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>
+ Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon Set Algorithms Analysis</h1>
+<p>Most non-trivial algorithms in the Boost.Polygon library are
+instantiations of generic sweep-line algorithms that provide the capability to
+perform Manhattan and 45-degree line segment intersection, n-layer map overlay,
+connectivity graph extraction and clipping/Booleans.&nbsp; These algorithms have O(n log n)
+runtime complexity for n equal to input vertices plus intersection vertices.&nbsp; The
+arbitrary angle line segment intersection algorithm is not implemented as a
+sweep-line due to complications related to achieving numerical robustness.&nbsp;
+The general line segment intersection algorithm is implemented as an recursive
+adaptive heuristic divide and conquer in the y dimension followed by sorting
+line segments in each subdivision by x coordinates and scanning left to right.&nbsp;
+By one-dimensional decomposition of the problem space in both x and y the
+algorithm approximates the optimal O(n log n) Bentley-Ottmann line segment intersection
+runtime complexity in the common case.&nbsp; Specific examples of inputs that
+defeat one dimensional decomposition of the problem space can result in
+pathological quadratic runtime complexity to which the Bentley-Ottmann algorithm
+is immune.</p>
+<p>Below is shown a log-log plot of runtime versus input size for inputs that
+increase quadratically in size.&nbsp; The inputs were generated by
+pseudo-randomly distributing small axis-parallel rectangles within a square area
+proportional the the number of rectangles specified for each trial.&nbsp; In
+this way the probability of intersections being produced remains constant as the
+input size grows.&nbsp; Because intersection vertices are expected to be a
+constant factor of input vertices we can examine runtime complexity in terms of
+input vertices.&nbsp; The operation performed was a union (Boolean OR) of the
+input rectangles by each of the Manhattan, 45-degree and arbitrary angle
+Booleans algorithms, which are labeled &quot;boolean 90&quot;, &quot;boolean 45&quot; and &quot;boolean&quot;.&nbsp;
+Also shown in the plot is the performance of the arbitrary angle Booleans
+algorithm as prior to the addition of divide and conquer recursive subdivision,
+which was described in the paper
+presented at
+boostcon 2009.&nbsp; Finally, the
+time required to sort the input points is shown as a common reference for O(n log n)
+runtime to put the data into context.</p><img border="0" src="images/perf_graph.PNG" width="391" height="414"><p>
+We can see in the log-log plot that sorting and the three Booleans algorithms
+provided by the Boost.Polygon library have nearly 45 degree &quot;linear&quot;
+scaling with empirical exponents just slightly larger than 1.0 and can be
+observed to scale proportional to O(n log n) for
+these inputs.&nbsp; The &quot;old boolean&quot; algorithm presented at boostcon 2009
+exhibits scaling close to the expected O(n<sup><font size="2">1.5</font></sup>)
+scaling.&nbsp; Because the speedup provided by the divide and conquer approach
+is algorithmic, the 10X potential performance improvement alluded to in the paper is
+realized at inputs of 200,000 rectangles and larger.&nbsp; Even for small inputs
+of 2K rectangles the algorithm is 2X faster and now can be expected to be
+roughly as fast as GPC at small scales,
+while algorithmically faster at large scales.</p>
+<p>
+
+
+From the plot we can compare the constant factor performance of the various
+Booleans algorithms with the runtime of std::sort as a baseline for O(n log n)
+algorithms.&nbsp; If you consider sort to be one unit of O(n log n) algorithmic
+work we can see that Manhattan Booleans cost roughly five units of O(n log n)
+work, 45-degree&nbsp; Booleans cost roughly
+
+
+</body>ten units of O(n log n) work and arbitrary angle Booleans cost roughly
+seventy units of O(n log n) work.&nbsp; Sorting the input vertices is the first
+step in a Booleans algorithm and therefore provides a hard lower bound for the
+runtime of an optimal Booleans algorithm.<p>
+
+
+One final thing to note about performance of the arbitrary angle Booleans
+algorithm is that the use of GMP
+ infinite precision rational data type for numerically robust
+computations can be employed by including boost/polygon/gmp_override.hpp and linking
+to lgmpxx and lgmp.&nbsp; This provides
+100% assurance that the algorithm will succeed and produce an output snapped to
+the integer grid with a minimum of one integer grid of error on polygon
+boundaries upon which intersection points are introduced.&nbsp; However, the
+infinite precision data type is never used for predicates (see the boostcon
+presentation or paper for description of robust predicates) and is only used for
+constructions of intersection coordinate values in the very rare case that long
+double computation of the intersection of two line segments fails to produce an
+intersection point within one integer unit of both line segments.&nbsp; This
+means that there is effectively no runtime penalty for the use of infinite
+precision to ensure 100% robustness.&nbsp; Most inputs will process through the
+algorithm without ever resorting to GMP.<tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_connectivity_extraction.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_connectivity_extraction.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Connectivity Extraction 45</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Connectivity Extraction</h1>
+
+<p>
+<p>The connectivity extraction algorithm constructs the connectivity graph where
+input polygon sets are modeled as graph nodes and assigned node ids and
+overlap/touching between input polygon sets is modeled as graph edges.&nbsp; One
+supported graph formats is std::vector&lt;std::set&lt;int&gt; &gt; where node ids index into
+the vector and the sets of integers at each index are the ids of nodes for which
+an edge exists in the graph.&nbsp; It is required that such vector pre-allocate
+sufficient elements to store the graph generated by the algorithm, because only
+the operator[] is used internally to access the graph&nbsp;&nbsp; The other
+supported graph format is std::map&lt;int, std::set&lt;int&gt; &gt; which is slightly easier to
+work with, but potentially more expensive.&nbsp; Improving the interface to
+support more generic graph concepts is deferred to future work.<p>The following
+is the declaration of the connectivity extraction algorithm.<p>
+<font face="Courier New">template &lt;typename coordinate_type&gt;<br>
+class connectivity_extraction;</font><p>
+Example code connectivity_extraction_usage.cpp
+ demonstrates using the connectivity extraction algorithm to build a
+connectivity graph on geometry.<h2>Member Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><b><font face="Courier New">connectivity_extraction</font></b><font face="Courier New">()</font></td>
+ <td>Default constructor. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">connectivity_extraction</font></b><font face="Courier New">(<br>&nbsp;&nbsp;&nbsp;&nbsp; const
+ connectivity_extraction&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">unsigned int <br><b>insert</b>(const polygon_set_data&lt;coordinate_type&gt;&amp; ps)</font></td>
+ <td>I<font face="Times New Roman">nsert a polygon set graph node, the
+ value returned is the id of the graph node.</font></td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;class GeoObjT&gt;<br>
+unsigned int <b>insert</b>(const GeoObjT&amp; geoObj)</font></td>
+ <td>Insert a geometry object that is a refinement of polygon set as a
+ graph node, the return value is the id of the graph node.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;class GraphT&gt;<br>
+void <b>extract</b>(GraphT&amp; graph)</font></td>
+ <td>Accepts a graph object that conforms to the expectations defined
+ above.&nbsp; Performs connectivity extraction and populates the graph
+ object.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table2">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_connectivity_extraction_45.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_connectivity_extraction_45.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Connectivity Extraction 45</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Connectivity Extraction 45</h1>
+
+<p>
+<p>The connectivity extraction algorithm constructs the connectivity graph where
+input polygon sets are modeled as graph nodes and assigned node ids and
+overlap/touching between input polygon sets is modeled as graph edges.&nbsp; One
+supported graph formats is std::vector&lt;std::set&lt;int&gt; &gt; where node ids index into
+the vector and the sets of integers at each index are the ids of nodes for which
+an edge exists in the graph.&nbsp; It is required that such vector pre-allocate
+sufficient elements to store the graph generated by the algorithm, because only
+the operator[] is used internally to access the graph&nbsp;&nbsp; The other
+supported graph format is std::map&lt;int, std::set&lt;int&gt; &gt; which is slightly easier to
+work with, but potentially more expensive.&nbsp; Improving the interface to
+support more generic graph concepts is deferred to future work.<p>The following
+is the declaration of the connectivity extraction algorithm.<p>
+<font face="Courier New">template &lt;typename coordinate_type&gt;<br>
+class connectivity_extraction_45;</font><p>
+Example code connectivity_extraction_usage.cpp
+ demonstrates using the connectivity extraction algorithm to build a
+connectivity graph on geometry.<h2>Member Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><b><font face="Courier New">connectivity_extraction_45</font></b><font face="Courier New">()</font></td>
+ <td>Default constructor. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">connectivity_extraction_45</font></b><font face="Courier New">(<br>&nbsp;&nbsp;&nbsp;&nbsp; const
+ connectivity_extraction_45&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">unsigned int <br><b>insert</b>(const polygon_45_set_data&lt;coordinate_type&gt;&amp; ps)</font></td>
+ <td>I<font face="Times New Roman">nsert a polygon set graph node, the
+ value returned is the id of the graph node.</font></td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;class GeoObjT&gt;<br>
+unsigned int <b>insert</b>(const GeoObjT&amp; geoObj)</font></td>
+ <td>Insert a geometry object that is a refinement of polygon 45 set as a
+ graph node, the return value is the id of the graph node.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;class GraphT&gt;<br>
+void <b>extract</b>(GraphT&amp; graph)</font></td>
+ <td>Accepts a graph object that conforms to the expectations defined
+ above.&nbsp; Performs connectivity extraction and populates the graph
+ object.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table2">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_connectivity_extraction_90.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_connectivity_extraction_90.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Connectivity Extraction 90</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Connectivity Extraction 90</h1>
+
+<p>
+<p>The connectivity extraction algorithm constructs the connectivity graph where
+input polygon sets are modeled as graph nodes and assigned node ids and
+overlap/touching between input polygon sets is modeled as graph edges.&nbsp; One
+supported graph formats is std::vector&lt;std::set&lt;int&gt; &gt; where node ids index into
+the vector and the sets of integers at each index are the ids of nodes for which
+an edge exists in the graph.&nbsp; It is required that such vector pre-allocate
+sufficient elements to store the graph generated by the algorithm, because only
+the operator[] is used internally to access the graph&nbsp;&nbsp; The other
+supported graph format is std::map&lt;int, std::set&lt;int&gt; &gt; which is slightly easier to
+work with, but potentially more expensive.&nbsp; Improving the interface to
+support more generic graph concepts is deferred to future work.<p>The following
+is the declaration of the connectivity extraction algorithm.<p>
+<font face="Courier New">template &lt;typename coordinate_type&gt;<br>
+class connectivity_extraction_90;</font><p>
+Example code connectivity_extraction_usage.cpp
+ demonstrates using the connectivity extraction algorithm to build a
+connectivity graph on geometry.<h2>Member Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><b><font face="Courier New">connectivity_extraction_90</font></b><font face="Courier New">()</font></td>
+ <td>Default constructor. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">connectivity_extraction_90</font></b><font face="Courier New">(<br>&nbsp;&nbsp;&nbsp;&nbsp; const
+ connectivity_extraction_90&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">unsigned int <br><b>insert</b>(const polygon_90_set_data&lt;coordinate_type&gt;&amp; ps)</font></td>
+ <td>I<font face="Times New Roman">nsert a polygon set graph node, the
+ value returned is the id of the graph node.</font></td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;class GeoObjT&gt;<br>
+unsigned int <b>insert</b>(const GeoObjT&amp; geoObj)</font></td>
+ <td>Insert a geometry object that is a refinement of polygon 90 set as a
+ graph node, the return value is the id of the graph node.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;class GraphT&gt;<br>
+void <b>extract</b>(GraphT&amp; graph)</font></td>
+ <td>Accepts a graph object that conforms to the expectations defined
+ above.&nbsp; Performs connectivity extraction and populates the graph
+ object.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table2">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_connectivity_extraction_usage.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_connectivity_extraction_usage.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,93 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Connectivity Extraction Usage</title>
+</head>
+
+<body>
+
+<p><font face="Courier New">#include &lt;boost/polygon/polygon.hpp&gt;<br>
+#include &lt;cassert&gt;<br>
+namespace gtl = boost::polygon;<br>
+<br>
+//This function works with both the 90 and 45 versions<br>
+//of connectivity extraction algroithm<br>
+template &lt;typename ce_type&gt;<br>
+void test_ce() {<br>
+&nbsp; //first we create an object to do the connectivity extraction<br>
+&nbsp; ce_type ce;<br>
+<br>
+&nbsp; //create some test data<br>
+&nbsp; std::vector&lt;gtl::rectangle_data&lt;int&gt; &gt; test_data;<br>
+&nbsp; test_data.push_back(gtl::rectangle_data&lt;int&gt;(10, 10, 90, 90));<br>
+&nbsp; test_data.push_back(gtl::rectangle_data&lt;int&gt;(0, 0, 20, 20));<br>
+&nbsp; test_data.push_back(gtl::rectangle_data&lt;int&gt;(80, 0, 100, 20));<br>
+&nbsp; test_data.push_back(gtl::rectangle_data&lt;int&gt;(0, 80, 20, 100));<br>
+&nbsp; test_data.push_back(gtl::rectangle_data&lt;int&gt;(80, 80, 100, 100));<br>
+&nbsp; //There is one big square and four little squares covering each<br>
+&nbsp; //of its corners.<br>
+<br>
+&nbsp; for(unsigned int i = 0; i &lt; test_data.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; //insert returns an id starting at zero and incrementing<br>
+&nbsp;&nbsp;&nbsp; //with each call<br>
+&nbsp;&nbsp;&nbsp; assert(ce.insert(test_data[i]) == i);<br>
+&nbsp; }<br>
+&nbsp; //notice that ids returned by ce.insert happen to match<br>
+&nbsp; //index into vector of inputs in this case<br>
+<br>
+&nbsp; //make sure the vector graph has elements for our nodes<br>
+&nbsp; std::vector&lt;std::set&lt;int&gt; &gt; graph(test_data.size());<br>
+<br>
+&nbsp; //populate the graph with edge data<br>
+&nbsp; ce.extract(graph);<br>
+<br>
+&nbsp; //make a map type graph to compare results<br>
+&nbsp; std::map&lt;int, std::set&lt;int&gt; &gt; map_graph;<br>
+&nbsp; ce.extract(map_graph);<br>
+<br>
+&nbsp; assert(map_graph.size() &amp;&amp; map_graph.size() == graph.size());<br>
+&nbsp; for(unsigned int i = 0; i &lt; graph.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; assert(graph[i] == map_graph[i]);<br>
+&nbsp;&nbsp;&nbsp; if(i == 0)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assert(graph[i].size() == 4); //four little
+squares<br>
+&nbsp;&nbsp;&nbsp; else<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assert(graph[i].size() == 1); //each little
+toches the big square<br>
+&nbsp; }<br>
+}<br>
+<br>
+int main() {<br>
+&nbsp; test_ce&lt;gtl::connectivity_extraction_90&lt;int&gt; &gt;();<br>
+&nbsp; test_ce&lt;gtl::connectivity_extraction_45&lt;int&gt; &gt;();<br>
+&nbsp; return 0;<br>
+}<br>
+<br>
+//Now you know how to use the connectivity extraction algorithm<br>
+//to extract the connectivity graph for overlapping geometry<br>
+&nbsp;</font></p>
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="
http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/gtl_coordinate_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_coordinate_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Coordinate Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Coordinate Concept</h1>
+
+<p>
+The coordinate concept tag is <font face="Courier New">
+coordinate_concept</font><p>
+To register a user defined type as a model of coordinate concept, specialize the
+geometry concept meta-function for that type.&nbsp; In the example below
+CCoordinate is registered as a model of coordinate concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CCoordinate&gt; { typedef coordinate_concept type; };</font><p>
+The coordinate type is expected to be integral and built-in numerical data types
+such as float and int already have concept type traits specializations in the
+library.&nbsp; In the coordinate traits are type definitions for related types
+are provided to allow the library to choose the best type to cast to under
+various circumstances.&nbsp; The definition of coordinate_traits and its
+specialization for int are shown below.<p>
+<font face="Courier New">template &lt;typename T&gt;<br>
+struct coordinate_traits {};<br>
+<br>
+template &lt;&gt;<br>
+struct coordinate_traits&lt;int&gt; {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef int coordinate_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef long double area_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef long long manhattan_area_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef unsigned long long unsigned_area_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef long long coordinate_difference;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef long double coordinate_distance;<br>
+};</font><p>
+By making use of the coordinate traits of int the library is able to avoid
+overflow and handle the normal issues encountered when programming integer
+geometry.&nbsp; For the out of the ordinary issues there is a special
+meta-function that provides the library with a numerical type suitable for exact
+numerical calculations.&nbsp; It defaults to the highest precision data type
+available in most compilers, long double, but can be overridden by specializing
+for a particular coordinate type.&nbsp; Use of gmp multi-precision rational or
+similar data type is recommended for numerically robust calculations in the
+general polygon algorithms.<p>
+<font face="Courier New">template &lt;typename T&gt;<br>
+struct high_precision_type {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef long double type;<br>
+};</font><p>
+There is only one generic function on coordinate concepts, Euclidean distance.<p>
+<font face="Courier New">template &lt;typename coordinate_type_1, typename
+coordinate_type_2&gt;<br>
+coordinate_difference euclidean_distance(coordinate_type_1, coordinate_type_2)</font><p>
+This function returns the absolution value of the difference between the two
+coordinates.<p>
+Note: older versions of the stl define a fully generic distance(T, T) function
+for computing the difference between two iterators.&nbsp; We were forced to name
+our distance function euclidean_distance to avoid name collision.<p>
+The
+<a href="http://www.mentor.com/products/esl/high_level_synthesis/ac_datatypes">
+Algorithmic C</a> ac_int&lt;128&gt; is an example of a user defined coordinate data
+type that satisfies the coordinate concept.&nbsp; In general a data type should
+define std::numeric_limits and be integer-like.&nbsp; Floating point coordinate
+types are not supported by all the algorithms and generally not suitable for use
+with the library at present.<tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_custom_point.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_custom_point.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,161 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Custom Point</title>
+</head>
+
+<body>
+
+<p><font face="Courier New">/*<br>
+Copyright 2008 Intel Corporation<br>
+<br>
+Use, modification and distribution are subject to the Boost Software License,<br>
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at<br>
+
http://www.boost.org/LICENSE_1_0.txt).<br>
+*/<br>
+#include &lt;boost/polygon/polygon.hpp&gt;<br>
+#include &lt;cassert&gt;<br>
+namespace gtl = boost::polygon;<br>
+using namespace boost::polygon::operators;<br><br>
+//lets make the body of main from point_usage.cpp<br>//a generic function parameterized by point type<br>template &lt;typename Point&gt;<br>void test_point() {<br>&nbsp;
+&nbsp; //constructing a gtl point<br>&nbsp; &nbsp;
+int x = 10;<br>&nbsp; &nbsp;
+int y = 20;<br>&nbsp; &nbsp;
+//Point pt(x, y);<br>&nbsp; &nbsp;
+Point pt = gtl::construct&lt;Point&gt;(x, y);<br>&nbsp; &nbsp;
+assert(gtl::x(pt) == 10);<br>&nbsp; &nbsp;
+assert(gtl::y(pt) == 20);<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+//a quick primer in isotropic point access<br>&nbsp; &nbsp;
+typedef gtl::orientation_2d O;<br>&nbsp; &nbsp;
+using gtl::HORIZONTAL;<br>&nbsp; &nbsp;
+using gtl::VERTICAL;<br>&nbsp; &nbsp;
+O o = HORIZONTAL;<br>&nbsp; &nbsp;
+assert(gtl::x(pt) == gtl::get(pt, o));<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+o = o.get_perpendicular();<br>&nbsp; &nbsp;
+assert(o == VERTICAL);<br>&nbsp; &nbsp;
+assert(gtl::y(pt) == gtl::get(pt, o));<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+gtl::set(pt, o, 30);<br>&nbsp; &nbsp;
+assert(gtl::y(pt) == 30);<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+//using some of the library functions<br>&nbsp; &nbsp;
+//Point pt2(10, 30);<br>&nbsp; &nbsp;
+Point pt2 = gtl::construct&lt;Point&gt;(10, 30);<br>&nbsp; &nbsp;
+assert(gtl::equivalence(pt, pt2));<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+gtl::transformation&lt;int&gt; tr(gtl::axis_transformation::SWAP_XY);<br>&nbsp; &nbsp;
+gtl::transform(pt, tr);<br>&nbsp; &nbsp;
+assert(gtl::equivalence(pt, gtl::construct&lt;Point&gt;(30, 10)));<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+gtl::transformation&lt;int&gt; tr2 = tr.inverse();<br>&nbsp; &nbsp;
+assert(tr == tr2); //SWAP_XY is its own inverse transform<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+gtl::transform(pt, tr2);<br>&nbsp; &nbsp;
+assert(gtl::equivalence(pt, pt2)); //the two points are equal again<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+gtl::move(pt, o, 10); //move pt 10 units in y<br>&nbsp; &nbsp;
+assert(gtl::euclidean_distance(pt, pt2) == 10.0f);<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+gtl::move(pt, o.get_perpendicular(), 10); //move pt 10 units in x<br>&nbsp; &nbsp;
+assert(gtl::manhattan_distance(pt, pt2) == 20);<br>}<br>&nbsp; &nbsp;
+<br>//Now lets declare our own point type<br>//Bjarne says that if a class doesn't maintain an<br>//invariant just use a struct.<br>struct CPoint {<br>&nbsp; &nbsp;
+int x;<br>&nbsp; &nbsp;
+int y;<br>};<br>&nbsp; &nbsp;
+<br>//There, nice a simple...but wait, it doesn't do anything<br>//how do we use it to do all the things a point needs to do?<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+<br>//First we register it as a point with boost polygon<br>namespace boost {
+namespace polygon {<br>&nbsp;&nbsp;&nbsp;
+template &lt;&gt;<br>&nbsp; &nbsp;
+struct geometry_concept&lt;CPoint&gt; { typedef point_concept type; };<br>&nbsp;<br>&nbsp; &nbsp;
+<br>&nbsp;&nbsp;&nbsp; //Then we specialize the gtl point traits for our point type<br>&nbsp; &nbsp;
+template &lt;&gt;<br>&nbsp; &nbsp;
+struct point_traits&lt;CPoint&gt; {<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+typedef int coordinate_type;<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+static inline coordinate_type get(const CPoint&amp; point, <br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+orientation_2d orient) {<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+if(orient == HORIZONTAL)<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+return point.x;<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+return point.y;<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+}<br>&nbsp; &nbsp;
+};<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+template &lt;&gt;<br>&nbsp; &nbsp;
+struct point_mutable_traits&lt;CPoint&gt; {<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+static inline void set(CPoint&amp; point, orientation_2d orient, int value) {<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+if(orient == HORIZONTAL)<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+point.x = value;<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+else<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+point.y = value;<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+}<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+static inline CPoint construct(int x_value, int y_value) {<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+CPoint retval;<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+retval.x = x_value;<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+retval.y = y_value; <br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+&nbsp; &nbsp;
+return retval;<br>&nbsp; &nbsp;
+&nbsp; &nbsp;
+}<br>&nbsp; &nbsp;
+};<br>} }<br>&nbsp; &nbsp;
+<br>//Now lets see if the CPoint works with the library functions<br>int main() {<br>&nbsp; &nbsp;
+test_point&lt;CPoint&gt;(); //yay! All your testing is done for you.<br>&nbsp; &nbsp;
+return 0;<br>}<br>&nbsp; &nbsp;
+<br>//Now you know how to map a user type to the library point concept<br>//and how to write a generic function parameterized by point type<br>//using the library interfaces to access it.<br>&nbsp; &nbsp;
+&nbsp;</font></p>
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/gtl_custom_polygon.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_custom_polygon.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,179 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Custom Polygon</title>
+</head>
+
+<body>
+
+<p><font face="Courier New">/*<br>
+Copyright 2008 Intel Corporation<br>
+<br>
+Use, modification and distribution are subject to the Boost Software License,<br>
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at<br>
+
http://www.boost.org/LICENSE_1_0.txt).<br>
+*/<br>
+#include &lt;boost/polygon/polygon.hpp&gt;<br>
+#include &lt;cassert&gt;<br>
+#include &lt;list&gt;<br>
+namespace gtl = boost::polygon;<br>
+using namespace boost::polygon::operators;<br><br>
+//first lets turn our polygon usage code into a generic<br>
+//function parameterized by polygon type<br>
+template &lt;typename Polygon&gt;<br>
+void test_polygon() {<br>
+&nbsp; //lets construct a 10x10 rectangle shaped polygon<br>
+&nbsp; typedef typename gtl::polygon_traits&lt;Polygon&gt;::point_type Point;<br>
+&nbsp; Point pts[] = {gtl::construct&lt;Point&gt;(0, 0),<br>
+&nbsp; gtl::construct&lt;Point&gt;(10, 0),<br>
+&nbsp; gtl::construct&lt;Point&gt;(10, 10),<br>
+&nbsp; gtl::construct&lt;Point&gt;(0, 10) };<br>
+&nbsp; Polygon poly;<br>
+&nbsp; gtl::set_points(poly, pts, pts+4);<br>
+<br>
+&nbsp; //now lets see what we can do with this polygon<br>
+&nbsp; assert(gtl::area(poly) == 100.0f);<br>
+&nbsp; assert(gtl::contains(poly, gtl::construct&lt;Point&gt;(5, 5)));<br>
+&nbsp; assert(!gtl::contains(poly, gtl::construct&lt;Point&gt;(15, 5)));<br>
+&nbsp; gtl::rectangle_data&lt;int&gt; rect;<br>
+&nbsp; assert(gtl::extents(rect, poly)); //get bounding box of poly<br>
+&nbsp; assert(gtl::equivalence(rect, poly)); //hey, that's slick<br>
+&nbsp; assert(gtl::winding(poly) == gtl::COUNTERCLOCKWISE);<br>
+&nbsp; assert(gtl::perimeter(poly) == 40.0f);<br>
+<br>
+&nbsp; //add 5 to all coords of poly<br>
+&nbsp; gtl::convolve(poly, gtl::construct&lt;Point&gt;(5, 5));<br>
+&nbsp; //multiply all coords of poly by 2<br>
+&nbsp; gtl::scale_up(poly, 2);<br>
+&nbsp; gtl::set_points(rect, gtl::point_data&lt;int&gt;(10, 10),<br>
+&nbsp; gtl::point_data&lt;int&gt;(30, 30));<br>
+&nbsp; assert(gtl::equivalence(poly, rect));<br>
+}<br>
+<br>
+//Now lets declare our own polygon class<br>
+//Oops, we need a point class to support our polygon, lets borrow<br>
+//the CPoint example<br>
+struct CPoint {<br>
+&nbsp; int x;<br>
+&nbsp; int y;<br>
+};<br>
+<br>
+//we have to get CPoint working with boost polygon to make our polygon<br>
+//that uses CPoint working with boost polygon<br>
+namespace boost { namespace polygon {<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct geometry_concept&lt;CPoint&gt; { typedef point_concept type; };<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct point_traits&lt;CPoint&gt; {<br>
+&nbsp;&nbsp;&nbsp; typedef int coordinate_type;<br>
+<br>
+&nbsp;&nbsp;&nbsp; static inline coordinate_type get(const CPoint&amp; point, <br>
+&nbsp;&nbsp;&nbsp; orientation_2d orient) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(orient == HORIZONTAL)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return point.x;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return point.y;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; };<br>
+<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct point_mutable_traits&lt;CPoint&gt; {<br>
+&nbsp;&nbsp;&nbsp; static inline void set(CPoint&amp; point, orientation_2d orient,
+int value) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(orient == HORIZONTAL)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point.x = value;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point.y = value;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; static inline CPoint construct(int x_value, int y_value) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CPoint retval;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retval.x = x_value;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retval.y = y_value; <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return retval;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; };<br>
+} }<br>
+<br>
+//I'm lazy and use the stl everywhere to avoid writing my own classes<br>
+//my toy polygon is a std::list&lt;CPoint&gt;<br>
+typedef std::list&lt;CPoint&gt; CPolygon;<br>
+<br>
+//we need to specialize our polygon concept mapping in boost polygon<br>
+namespace boost { namespace polygon {<br>
+&nbsp; //first register CPolygon as a polygon_concept type<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct geometry_concept&lt;CPolygon&gt;{ typedef polygon_concept type; };<br>
+<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct polygon_traits&lt;CPolygon&gt; {<br>
+&nbsp;&nbsp;&nbsp; typedef int coordinate_type;<br>
+&nbsp;&nbsp;&nbsp; typedef CPolygon::const_iterator iterator_type;<br>
+&nbsp;&nbsp;&nbsp; typedef CPoint point_type;<br>
+<br>
+&nbsp;&nbsp;&nbsp; // Get the begin iterator<br>
+&nbsp;&nbsp;&nbsp; static inline iterator_type begin_points(const CPolygon&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.begin();<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp;&nbsp;&nbsp; // Get the end iterator<br>
+&nbsp;&nbsp;&nbsp; static inline iterator_type end_points(const CPolygon&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.end();<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp;&nbsp;&nbsp; // Get the number of sides of the polygon<br>
+&nbsp;&nbsp;&nbsp; static inline std::size_t size(const CPolygon&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.size();<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp;&nbsp;&nbsp; // Get the winding direction of the polygon<br>
+&nbsp;&nbsp;&nbsp; static inline winding_direction winding(const CPolygon&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return unknown_winding;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; };<br>
+<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct polygon_mutable_traits&lt;CPolygon&gt; {<br>
+&nbsp;&nbsp;&nbsp; //expects stl style iterators<br>
+&nbsp;&nbsp;&nbsp; template &lt;typename iT&gt;<br>
+&nbsp;&nbsp;&nbsp; static inline CPolygon&amp; set_points(CPolygon&amp; t, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+iT input_begin, iT input_end) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.clear();<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.insert(t.end(), input_begin, input_end);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp; };<br>
+} }<br>
+<br>
+//now there's nothing left to do but test that our polygon<br>
+//works with library interfaces<br>
+int main() {<br>
+&nbsp; test_polygon&lt;CPolygon&gt;(); //woot!<br>
+&nbsp; return 0;<br>
+}<br>
+&nbsp;</font></p>
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/gtl_custom_polygon_set.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_custom_polygon_set.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,249 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Custom Polygon Set</title>
+</head>
+
+<body>
+
+<p><font face="Courier New">/*<br>
+Copyright 2008 Intel Corporation<br>
+<br>
+Use, modification and distribution are subject to the Boost Software License,<br>
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at<br>
+
http://www.boost.org/LICENSE_1_0.txt).<br>
+*/<br>
+#include &lt;boost/polygon/polygon.hpp&gt;<br>
+#include &lt;list&gt;<br>
+#include &lt;time.h&gt;<br>
+#include &lt;cassert&gt;<br>
+#include &lt;deque&gt;<br>
+#include &lt;iostream&gt;<br>
+namespace gtl = boost::polygon;<br>
+using namespace boost::polygon::operators;<br><br>
+//once again we make our usage of the library generic<br>
+//and parameterize it on the polygon set type<br>
+template &lt;typename PolygonSet&gt;<br>
+void test_polygon_set() {<br>
+&nbsp; using namespace gtl; <br>
+&nbsp; PolygonSet ps;<br>
+&nbsp; ps += rectangle_data&lt;int&gt;(0, 0, 10, 10);<br>
+&nbsp; PolygonSet ps2;<br>
+&nbsp; ps2 += rectangle_data&lt;int&gt;(5, 5, 15, 15);<br>
+&nbsp; PolygonSet ps3;<br>
+&nbsp; assign(ps3, ps * ps2); <br>
+&nbsp; PolygonSet ps4;<br>
+&nbsp; ps4 += ps + ps2;<br>
+&nbsp; assert(area(ps4) == area(ps) + area(ps2) - area(ps3));<br>
+&nbsp; assert(equivalence((ps + ps2) - (ps * ps2), ps ^ ps2));<br>
+&nbsp; rectangle_data&lt;int&gt; rect;<br>
+&nbsp; assert(extents(rect, ps ^ ps2));<br>
+&nbsp; assert(area(rect) == 225);<br>
+&nbsp; assert(area(rect ^ (ps ^ ps2)) == area(rect) - area(ps ^ ps2)); <br>
+}<br>
+<br>
+//first thing is first, lets include all the code from previous examples<br>
+<br>
+//the CPoint example<br>
+struct CPoint {<br>
+&nbsp; int x;<br>
+&nbsp; int y;<br>
+};<br>
+<br>
+namespace boost { namespace polygon {<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct geometry_concept&lt;CPoint&gt; { typedef point_concept type; };<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct point_traits&lt;CPoint&gt; {<br>
+&nbsp;&nbsp;&nbsp; typedef int coordinate_type;<br>
+<br>
+&nbsp;&nbsp;&nbsp; static inline coordinate_type get(const CPoint&amp; point, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+orientation_2d orient) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(orient == HORIZONTAL)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return point.x;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return point.y;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; };<br>
+<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct point_mutable_traits&lt;CPoint&gt; {<br>
+&nbsp;&nbsp;&nbsp; static inline void set(CPoint&amp; point, orientation_2d orient,
+int value) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(orient == HORIZONTAL)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point.x = value;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point.y = value;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; static inline CPoint construct(int x_value, int y_value) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CPoint retval;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retval.x = x_value;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retval.y = y_value; <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return retval;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; };<br>
+} }<br>
+<br>
+//the CPolygon example<br>
+typedef std::list&lt;CPoint&gt; CPolygon;<br>
+<br>
+//we need to specialize our polygon concept mapping in boost polygon<br>
+namespace boost { namespace polygon {<br>
+&nbsp; //first register CPolygon as a polygon_concept type<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct geometry_concept&lt;CPolygon&gt;{ typedef polygon_concept type; };<br>
+<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct polygon_traits&lt;CPolygon&gt; {<br>
+&nbsp;&nbsp;&nbsp; typedef int coordinate_type;<br>
+&nbsp;&nbsp;&nbsp; typedef CPolygon::const_iterator iterator_type;<br>
+&nbsp;&nbsp;&nbsp; typedef CPoint point_type;<br>
+<br>
+&nbsp;&nbsp;&nbsp; // Get the begin iterator<br>
+&nbsp;&nbsp;&nbsp; static inline iterator_type begin_points(const CPolygon&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.begin();<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp;&nbsp;&nbsp; // Get the end iterator<br>
+&nbsp;&nbsp;&nbsp; static inline iterator_type end_points(const CPolygon&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.end();<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp;&nbsp;&nbsp; // Get the number of sides of the polygon<br>
+&nbsp;&nbsp;&nbsp; static inline std::size_t size(const CPolygon&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.size();<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp;&nbsp;&nbsp; // Get the winding direction of the polygon<br>
+&nbsp;&nbsp;&nbsp; static inline winding_direction winding(const CPolygon&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return unknown_winding;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; };<br>
+<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct polygon_mutable_traits&lt;CPolygon&gt; {<br>
+&nbsp;&nbsp;&nbsp; //expects stl style iterators<br>
+&nbsp;&nbsp;&nbsp; template &lt;typename iT&gt;<br>
+&nbsp;&nbsp;&nbsp; static inline CPolygon&amp; set_points(CPolygon&amp; t, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+iT input_begin, iT input_end) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.clear();<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(input_begin != input_end) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.push_back(CPoint());<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gtl::assign(t.back(), *input_begin);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++input_begin;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp; };<br>
+} }<br>
+<br>
+//OK, finally we get to declare our own polygon set type<br>
+typedef std::deque&lt;CPolygon&gt; CPolygonSet;<br>
+<br>
+//deque isn't automatically a polygon set in the library<br>
+//because it is a standard container there is a shortcut<br>
+//for mapping it to polygon set concept, but I'll do it<br>
+//the long way that you would use in the general case.<br>
+namespace boost { namespace polygon {<br>
+&nbsp; //first we register CPolygonSet as a polygon set<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct geometry_concept&lt;CPolygonSet&gt; { typedef polygon_set_concept type;
+};<br>
+<br>
+&nbsp; //next we map to the concept through traits<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct polygon_set_traits&lt;CPolygonSet&gt; {<br>
+&nbsp;&nbsp;&nbsp; typedef int coordinate_type;<br>
+&nbsp;&nbsp;&nbsp; typedef CPolygonSet::const_iterator iterator_type;<br>
+&nbsp;&nbsp;&nbsp; typedef CPolygonSet operator_arg_type;<br>
+<br>
+&nbsp;&nbsp;&nbsp; static inline iterator_type begin(const CPolygonSet&amp;
+polygon_set) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return polygon_set.begin();<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp;&nbsp;&nbsp; static inline iterator_type end(const CPolygonSet&amp;
+polygon_set) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return polygon_set.end();<br>
+&nbsp;&nbsp;&nbsp; }<br>
+<br>
+&nbsp;&nbsp;&nbsp; //don't worry about these, just return false from them<br>
+&nbsp;&nbsp;&nbsp; static inline bool clean(const CPolygonSet&amp; polygon_set) {
+return false; }<br>
+&nbsp;&nbsp;&nbsp; static inline bool sorted(const CPolygonSet&amp; polygon_set) {
+return false; }<br>
+&nbsp; };<br>
+<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct polygon_set_mutable_traits&lt;CPolygonSet&gt; {<br>
+&nbsp;&nbsp;&nbsp; template &lt;typename input_iterator_type&gt;<br>
+&nbsp;&nbsp;&nbsp; static inline void set(CPolygonSet&amp; polygon_set,
+input_iterator_type input_begin, input_iterator_type input_end) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; polygon_set.clear();<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //this is kind of cheesy. I am copying the
+unknown input geometry<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //into my own polygon set and then calling get to
+populate the<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //deque<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; polygon_set_data&lt;int&gt; ps;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ps.insert(input_begin, input_end);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ps.get(polygon_set);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if you had your own odd-ball polygon set you
+would probably have<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //to iterate through each polygon at this point
+and do something<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //extra<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; };<br>
+} }<br>
+<br>
+int main() {<br>
+&nbsp; long long c1 = clock();<br>
+&nbsp; for(int i = 0; i &lt; 1000; ++i) <br>
+&nbsp;&nbsp;&nbsp; test_polygon_set&lt;CPolygonSet&gt;();<br>
+&nbsp; long long c2 = clock();<br>
+&nbsp; for(int i = 0; i &lt; 1000; ++i) <br>
+&nbsp;&nbsp;&nbsp; test_polygon_set&lt;gtl::polygon_set_data&lt;int&gt; &gt;();<br>
+&nbsp; long long c3 = clock();<br>
+&nbsp; long long diff1 = c2 - c1;<br>
+&nbsp; long long diff2 = c3 - c2;<br>
+&nbsp; if(diff1 &gt; 0 &amp;&amp; diff2)<br>
+&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;library polygon_set_data is &quot; &lt;&lt;
+float(diff1)/float(diff2) &lt;&lt; &quot;X faster than custom polygon set deque of CPolygon&quot;
+&lt;&lt; std::endl;<br>
+&nbsp; else<br>
+&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;operation was too fast&quot; &lt;&lt; std::endl;<br>
+&nbsp; return 0;<br>
+}</font></p>
+<p><font face="Courier New">//Now you know how to map your own data type to
+polygon set concept<br>
+//Now you also know how to make your application code that operates on geometry<br>
+//data type agnostic from point through polygon set
+&nbsp;</font></p>
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/gtl_design_overview.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_design_overview.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,176 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Overview</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>
+ Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon Library Design Overview</h1>
+
+<p>
+<p>The Polygon library uses C++-Concepts inspired template programming to
+provide generic library functions overloaded on concept type.&nbsp; There are
+currently thirteen concepts in the Polygon library type system.&nbsp; A concept
+object in the Polygon library is just an empty struct similar to a tag that
+would be used for tag dispatching.&nbsp;&nbsp; These concepts are shown in the
+refinement diagram below.</p>
+
+
+</body><img border="0" src="images/refinements.png" width="466" height="369"><p>
+The arrows between diagram bubbles show concept refinement relationships.&nbsp; This is
+similar, but not identical to, inheritance relationships between normal classes.&nbsp;
+A refinement of a concept narrows down the definition of a more general concept.&nbsp;
+For example, the rectangle concept is a refinement of a polygon concept because
+it restricts the polygon to a four sided, axis-parallel, rectilinear figure.&nbsp; A refinement
+of a concept is always acceptable to an API that expects read only access to a
+given concept, but never acceptable to an API that expects to write to that
+concept.&nbsp; There are three types of geometry in the polygon library, the
+general case, the case restricted to angles that are multiples of 45 degrees,
+and the Manhattan/rectilinear case where angles are restricted to multiples of
+90 degrees.&nbsp;&nbsp; The refinement diagram shows that 90 degree concepts are
+refinements of 45 degree concepts, which are themselves refinements of the
+general case.&nbsp; This allows the compiler to choose between the three
+implementations of algorithms to select the best algorithm for the conceptual
+data types passed to an overload of a function including heterogeneous
+combinations of 90, 45 and general case geometry.&nbsp; To provide the
+<font face="Courier New">operator&amp;</font> that performs the intersection on any
+pair of objects from the ten conceptual types related to each other through
+refinement in the diagraph above fully one hundred distinct combinations of
+conceptual types are supported by the library, but only three overloads are
+required to implement the operator (one for 90, one for 45 and one for arbitrary
+angle version of the intersection operation) because refinement generalizes the
+implementation of the interface.&nbsp; In this way a fully symmetric, complete
+and internally consistent API is implemented to provide meaningful and correct
+behaviors for all combinations of argument types in all APIs where those types
+make sense.&nbsp; For example, it doesn't make sense to copy data from a polygon
+into a rectangle, so attempting to do so yields a syntax error, while copying a
+rectangle into a polygon does make sense.&nbsp; The <font face="Courier New">
+assign()</font> function that is used to copy geometry data between concepts
+instantiates for the 49 combinations of concepts that make sense, but not for
+the 51 combinations that are illegal.&nbsp; The syntax error you will see when
+attempting an illegal assign operation is simple and clear because use of SFINAE
+by the library to overload generic functions means no matching function is found
+by the compiler in cases where no overload is provided.</p>
+<p>
+<font face="Courier New">error: no matching function for call to 'assign(rectangle_data&lt;int&gt;&amp;,
+polygon_data&lt;int&gt;&amp;)'</font></p>
+<p>Associated with each concept is a traits struct that generally must be
+specialized for a given data type to provide the concept mapping between the
+interfaces of the data type and the expected behaviors of an object of that type
+required by the library.&nbsp; The library also provides its own data types for
+each concept that conform to the default traits definition.&nbsp; These library
+provided data types are no more than dumb containers that provide access to
+their data and rely on the generic library functions to enforce invariants and
+provide useful behaviors specific to their type of geometry that would normally
+be member functions of the data type in an OO design.&nbsp; The library data
+types conform to the default traits associated with their related geometry
+concept and are registered as models of that concept.&nbsp; When a data
+type has been mapped to a concept through traits it needs to be registered
+as that conceptual type with the library by
+specializing the geometry_concept meta-function.&nbsp; Once mapped and
+registered, a user data type can be used interchangeably with library data types
+in the generic free functions that are overloaded on concept.<p>Traits for
+mapping a data type to a concept are broken down into mutable and read only
+traits.&nbsp; Read only traits are specialized internally to work with any types
+that are refinements of a concept.&nbsp; The mutable traits are defined only for
+objects that exactly model the concept.&nbsp; Both read only traits and mutable
+traits need to be defined for a type to model a concept, but a type can be used
+without defining the mutable traits as long as no API that needs to modify the
+object is used with that type.&nbsp; For example, a triangle type could be
+registered as a polygon_concept and the read only traits but not the mutable
+traits defined for that triangle type.&nbsp; This would allow the triangle type
+to be passed into any API that expects a const reference to an object that models
+polygon.&nbsp;
+<p>An object that is a model of a given concept can usually be viewed as a model of any of its
+refinements if it is determined at runtime to conform to the restrictions of
+those concepts.&nbsp; This concept casting is accomplished through the
+<font face="Courier New">view_as&lt;&gt;()</font> function.&nbsp; For example if
+an object of conceptual type polygon 90 has four sides it must be a rectangle,
+and can be viewed as a rectangle with the following syntax:</p>
+<p><font face="Courier New">view_as&lt;rectangle_concept&gt;(polygon_90_object)</font></p>
+<p>The return value of <font face="Courier New">view_as&lt;&gt;()</font> can be
+passed into any interface that expects an object of the conceptual type
+specified in its template parameter.&nbsp; The exception to this ability to
+concept cast geometric objects is that polygon set objects cannot be viewed as
+individual polygons or rectangles.</p> <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_interval_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_interval_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,524 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Interval Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Interval Concept</h1>
+
+<p>
+<p>The interval concept tag is <font face="Courier New">
+interval_concept</font></p>
+<p>
+To register a user defined type as a model of interval concept, specialize the
+geometry concept meta-function for that type.&nbsp; In the example below
+CInterval is registered as a model of interval&nbsp; concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CInterval&gt; { typedef interval_concept type; };</font><p>
+<font face="Times New Roman">The semantic of an interval is that it has a low
+and high coordinate and there is an invariant that low is less than or equal to
+high.&nbsp; This invariant is enforced by the generic library functions that
+operate on intervals, and is not expected of the data type itself or the concept
+mapping of that data type to the interval concept through its traits.&nbsp; In
+this way a std::pair&lt;int, int&gt;, boost::tuple&lt;int, int&gt; or boost::array&lt;int, 2&gt;
+could all be made models of interval by simply providing indirect access to their
+elements through traits.</font><p>
+<font face="Times New Roman">Below is shown the default interval traits.&nbsp;
+Specialization of these traits is required for types that don't conform to the
+default behavior.</font><p>
+<font face="Courier New">template &lt;typename T&gt;<br>
+struct interval_traits {<br>
+&nbsp; typedef typename T::coordinate_type coordinate_type;<br>
+<br>
+&nbsp; static inline coordinate_type get(const T&amp; interval, direction_1d dir) {<br>
+&nbsp;&nbsp;&nbsp; return interval.get(dir); <br>
+&nbsp; }<br>
+};<br>
+<br>
+template &lt;typename T&gt;<br>
+struct interval_mutable_traits {<br>
+&nbsp; static inline void set(T&amp; interval, direction_1d dir, </font>
+<br>
+<font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typename interval_traits&lt;T&gt;::coordinate_type value) {<br>
+&nbsp;&nbsp;&nbsp;
+interval.set(dir, value); <br>
+&nbsp;
+}<br>
+&nbsp;
+static inline T construct(typename interval_traits&lt;T&gt;::coordinate_type low_value,
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+typename interval_traits&lt;T&gt;::coordinate_type high_value) {<br>
+&nbsp;&nbsp;&nbsp;
+return T(low_value, high_value); <br>
+&nbsp;
+}<br>
+};</font><h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_type <b>get</b>(const T&amp; interval, direction_1d)</font></td>
+ <td><font face="Times New Roman">Expects a model of interval.&nbsp;
+ Returns the low or high coordinate of the interval, depending on the
+ direction_1d value.</font><font face="Courier New"><br>
+&nbsp;</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ coordinate_type&gt;<br>
+ void <b>set</b>(T&amp; interval, direction_1d, coordinate_type)</font></td>
+ <td><font face="Times New Roman">Expects a model of interval.&nbsp;&nbsp;
+ Sets the low or high coordinate of the interval to the coordinate,
+ depending on the direction_1d value.&nbsp; If low would be greater than
+ high after this change then both are set to the input coordinate value.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T <b>construct</b>(coordinate_type low, coordinate_type high)</font></td>
+ <td>Construct an object that is a model of interval given low and high
+ coordinate values.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
+ <td>Copies data from right object that models interval into left object
+ that models interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ T2&gt;<br>
+ bool <b>equivalence</b>(const T&amp; interval1, const T2&amp; interval2)</font></td>
+ <td>Given two objects that model interval, compares and returns true if
+ their low and high values are respectively equal to each other.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ bool <b>contains</b>(const T&amp;, coordinate_type, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch=true)</font></td>
+ <td>Given an object that models interval and a coordinate, returns true
+ if the interval contains the coordinate.&nbsp; If the consider_touch
+ flag is true will return true if the coordinate is equal to one of the
+ interval ends.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>contains</b>(const T1&amp; a, const T2&amp; b, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch = true) </font></td>
+ <td>Returns true if model of interval a contains both ends of model of
+ interval b.&nbsp; If the consider_touch flag is true will consider the
+ end of b contained within a even if it is equal to an end of a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ coordinate_type <b>low</b>(const interval_type&amp; interval)</font></td>
+ <td>Returns the low end of an object that models interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ coordinate_type <b>high</b>(const interval_type&amp; interval)</font></td>
+ <td>Returns the high end of an object that models interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">// get the center coordinate<br>
+ template &lt;typename interval_type&gt;<br>
+ coordinate_type <b>center</b>(const interval_type&amp; interval)</font></td>
+ <td>Returns the center coordinate of an object that models interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ void <b>low</b>(interval_type&amp; interval, coordinate_type )</font></td>
+ <td>Sets the low end of the object that models interval to the
+ coordinate value.&nbsp; If the low end would be set to larger than high
+ end then both are set to the coordinate value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ void <b>high</b>(interval_type&amp; interval, coordinate_type )</font></td>
+ <td>Sets the high end of the object that models interval to the
+ coordinate value.&nbsp; If the high end would be set to less than low
+ end then both are set to the coordinate value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ coordinate_difference <b>delta</b>(const interval_type&amp; interval)</font></td>
+ <td>Returns the distance from low to high end of an object that models
+ interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ interval_type&amp; <b>flip</b>(interval_type&amp; interval,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ coordinate_type axis = 0)</font></td>
+ <td>Flips an object that models interval about the axis coordinate.&nbsp;
+ If no axis is provided the interval is flipped across the the origin.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ interval_type&amp; <b>scale_up</b>(interval_type&amp; interval, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ unsigned_area_type factor)</font></td>
+ <td>Multiplies low and high ends of an object that models interval by
+ unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ interval_type&amp; <b>scale_down</b>(interval_type&amp; interval, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ unsigned_area_type factor)</font></td>
+ <td>Divides low and high ends of an object that models interval by
+ unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ interval_type&amp; <b>scale</b>(interval_type&amp; interval,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ double factor) </font></td>
+ <td>Multiplies low and high ends of an object that models interval by
+ floating point value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ interval_type&amp; <b>move</b>(interval_type&amp; interval,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ coordinate_difference displacement)</font></td>
+ <td>Adds displacement value to low and high ends of an object that
+ models interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ interval_type&amp; <b>convolve</b>(interval_type&amp; interval,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ coordinate_type b)</font></td>
+ <td>Adds coordinate value to low and high ends of an object that models
+ interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ interval_type&gt;<br>
+ interval_type&amp; <b>deconvolve</b>(interval_type&amp; interval,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ coordinate_type b)</font></td>
+ <td>Subtracts coordinate value from low and high ends of an object that
+ models interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>convolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Adds low end of b to low end of a and adds high end of b to high end
+ of a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>deconvolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Subtracts low end of b from low end of a and subtracts high end of b
+ from high end of a. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>reflected_convolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Adds high end of b to low end of a and adds low end of b to high end
+ of a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>reflected_deconvolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Subtracts high end of b from low end of a and subtracts low end of b
+ from high end of a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_difference <b>euclidean_distance</b>(const T&amp;,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ coordinate_type)</font></td>
+ <td>Returns the distance from an object that models interval to a
+ coordinate.&nbsp; Returns zero if the coordinate is equal to an end of
+ the interval or contained within the interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>intersects</b>(const T1&amp; interval, const T2&amp; b, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch = true)</font></td>
+ <td>Returns true if two objects that model interval overlap.&nbsp; If
+ the consider_touch flag is true touching at the endpoints is considered
+ overlap.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>boundaries_intersect</b>(const T1&amp; interval, const T2&amp; b, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch = true)</font></td>
+ <td>Returns true is two objects that model interval partially overlap
+ such that one end point of each is contained within the other.&nbsp; If
+ the consider_touch flag is true a coordinate is considered contained
+ even if it is equal to an end.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>abuts</b>(const T1&amp; a, const T2&amp; b,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; direction_1d dir)
+ </font></td>
+ <td>Returns true if interval b abuts but down not overlap interval a on
+ the end of interval a specified by dir.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>abuts</b>(const T1&amp; a, const T2&amp; b)</font></td>
+ <td>Returns true if interval b abuts but down not overlap interval a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>intersect</b>(T1&amp; a, const T2&amp; b,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch = true) </font></td>
+ <td>Sets interval a to the intersection of interval a and interval b and
+ return true.&nbsp; If the two intervals do not intersect interval a is
+ unchanged and the function returns false.&nbsp; If the flag
+ consider_touch is true intervals that abut are considered to intersect.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T&amp; <b>generalized_intersect</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Same as intersect, but if they do not intersect set a to the
+ interval between a and b.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; interval, coordinate_type)</font></td>
+ <td>Adds the coordinate value to high end of interval and subtracts it
+ from low end of interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; interval, direction_1d, coordinate_type)</font></td>
+ <td>Adds the coordinate value to high end of interval or subtracts it
+ from low end of interval depending on the direction_1d.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; interval, coordinate_type)</font></td>
+ <td>Subtracts the coordinate value from high end of interval and adds it
+ to low end of interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; interval, direction_1d, coordinate_type)</font></td>
+ <td>Subtracts the coordinate value from high end of interval or adds it
+ to low end of interval depending on the direction_1d.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>encompass</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Sets low of a to min of low of a and low of b and sets high of a to
+ max of high of a and high of b.&nbsp; Returns true if b was not
+ contained within a to begin with.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ bool <b>encompass</b>(T&amp; a, coordinate_type)</font></td>
+ <td>Sets low of a to min of low of a and coordinate value and sets high
+ of a to max of high of a and coordinate value.&nbsp; Returns true if
+ coordinate value was not contained within a to begin with.</td>
+ </tr>
+</table>
+ <h1>Interval Data</h1>
+
+<p>
+<p>The library provides a model of interval concept declared
+<font face="Courier New">
+template&lt;typename T&gt; interval_data </font>where T is the coordinate type.</p>
+<p>This data type is used internally when an interval is needed and is available
+to the library user who finds it convenient to use a library interval data type
+instead of providing their own.&nbsp; The data type is implemented to be
+convenient to use with the library traits.</p>
+<h2>Members</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><b><font face="Courier New">geometry_type</font></b></td>
+ <td><font face="Times New Roman">interval_concept</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">coordinate_type</font></b></td>
+ <td><font face="Times New Roman">T</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>interval_data</b>()</font></td>
+ <td><font face="Times New Roman">Default constructs the two coordinate
+ values of the interval.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>interval_data</b>(T low, T
+ high)</font></td>
+ <td><font face="Times New Roman">Constructs an interval with two
+ coordinates.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>interval_data</b>(const
+ interval_data&amp; that)</font></td>
+ <td><font face="Times New Roman">Copy construct</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">interval_data&amp; <b>operator=</b>(const
+ interval_data&amp; that)</font></td>
+ <td>Assignment operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>&nbsp;
+ <br> </b>interval_data&amp; <b>operator=</b>(const T2&amp; that) const</font></td>
+ <td>Assign from an object that is a model of interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator==</b>(const T2&amp; that) const</font></td>
+ <td>Compare equality to an object that is a model of interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator!=</b>(const T2&amp; that) const</font></td>
+ <td>Compare inequality to an object that is a model of interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator&lt;</b>(const T2&amp; that) const</font></td>
+ <td>Compares low coordinates then high coordinates to break ties.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator&lt;=</b>(const T2&amp; that) const</font></td>
+ <td>Compares low coordinates then high coordinates to break ties.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator&gt;</b>(const T2&amp; that) const</font></td>
+ <td>Compares low coordinates then high coordinates to break ties.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator&gt;=</b>(const T2&amp; that) const</font></td>
+ <td>Compares low coordinates then high coordinates to break ties.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">T <b>get</b>(direction_1d dir)
+ const</font></td>
+ <td>Get the coordinate in the given direction.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>set</b>(direction_1d
+ dir, T value)</font></td>
+ <td>Sets the coordinate in the given direction to the value.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table3">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_isotropy.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_isotropy.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,521 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Isotropy</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Isotropy</h1>
+
+<p>
+<p align="left">What is isotropy?</p>
+<P:COLORSCHEME
+colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00" />
+<div class="O" style="TEXT-ALIGN: center; mso-line-spacing: '90 0 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1" v:shape="_x0000_s1026">
+ <p style="TEXT-ALIGN: left">
+ <span style="mso-bidi-font-family: Arial">Isotropy - Function: <i>adjective</i> Etymology: International
+ Scientific Vocabulary<br>
+ <b>:</b> exhibiting properties (as velocity of light transmission) with the
+ same values when measured along axes in all directions &lt;an <i>isotropic</i>
+ crystal&gt;</span></div>
+<p align="left">In computational geometry things are often symmetric and
+invariant to direction and orientation.&nbsp; This invariance to direction is
+called isotropy.&nbsp; In such situations it is convenient to parameterize
+direction or orientation and write code that is invariant to the direction or
+orientation in which it is applied.&nbsp; To do this effectively we provide an
+internally consistent set of isotropic data types to represent program
+data that describes orientations and directions.&nbsp; These data types are:</p>
+ <ul>
+ <li>direction_1d - has one of the following 2 states: LOW, HIGH </li>
+ <li>orientation_2d - has one of the following 2 states: HORIZONTAL,
+ VERTICAL</li>
+ <li>direction_2d - has one of the following 4 states: WEST, EAST, SOUTH,
+ NORTH</li>
+ <li>orientation_3d - has one of the following 3 states: HORIZONTAL,
+ VERTICAL, PROXIMAL</li>
+ <li>direction_3d - has one of the following 6 states: WEST, EAST, SOUTH,
+ NORTH, DOWN, UP</li>
+ </ul>
+
+<p align="left">The isotropic types create a system and interact with each other
+in various ways, such as casting.&nbsp; Together they create a language for
+describing isotropic situations programmatically.&nbsp; For instance, to get the
+positive direction_2d from an orientation_2d you would call a member function of
+orientation_2d and pass a direction_1d:</p>
+<p align="left"><font face="Courier New">orientation_2d orient = HORIZONTAL;<br>
+direction_2d dir = orient.get_direction(direction_1d(HIGH));<br>
+assert(dir == EAST);</font></p>
+<p align="left">The motivation for providing isotropic data types is to
+encourage programming at a higher level of abstraction where program behavior is
+controlled by program data passed into function calls rather than flow control
+syntax.&nbsp; Isotropic programming style is particularly applicable to working
+with points, intervals and rectangles.&nbsp; Often times the implementation of
+such logic is identical when implemented for the x or y coordinates, except that
+the names of functions and data members are changed in a mechanical way leading
+to code duplication and bloat that results in copy-paste programming errors and
+maintenance problems where changes made to a given code block relating to x
+coordiantes are not duplicated to the code block that refers to y.&nbsp;
+Isotropy therefore represents an opportunity to refactor and improve the quality
+of low level geometry code especially in regard to inter-relating coordinates,
+points, intervals and rectangles.</p>
+<h2>direction_1d</h2>
+
+<p>
+<p align="left">The direction_1d data type has two possible states.&nbsp; These
+are the positive and negative directions on a continuum such as the number line.&nbsp;&nbsp;
+These states can be described by one of several direction_1d_enum values:&nbsp;
+We make clockwise and counterclockwise winding orientation of polygons a
+direction 1d value instead of providing a separate winding_orientation data
+type.&nbsp; This is because winding orientation can be thought of as positive
+and negative directions in a 1d (although cyclic) space.&nbsp; We assign
+counterclockwise to be the positive direction of travel in the 1d cyclic space
+to conform with the mathematical convention frequently described as the &quot;right
+hand rule&quot; which assigns positive normal value to counterclockwise and negative
+normal value to clockwise as well as the common convention that counterclockwise
+polygon winding corresponds to positive polygonal regions where as clockwise
+polygon winding corresponds to hole (negative) polygonal regions.</p>
+<p align="left"><font face="Courier New">enum direction_1d_enum {LOW = 0, HIGH =
+1,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+LEFT = 0, RIGHT = 1,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+CLOCKWISE = 0, COUNTERCLOCKWISE = 1,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+REVERSE = 0, FORWARD = 1,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+NEGATIVE = 0, POSITIVE = 1 };</font></p>
+<h2>Member Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New"><b>direction_1d</b>(direction_1d_enum
+ val = LOW)</font></td>
+ <td>Constructor defaults to LOW. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">direction_1d</font></b><font face="Courier New">(const
+ direction_1d&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">direction_1d</font></b><font face="Courier New">(const
+ direction_2d&amp; that)</font></td>
+ <td>Down cast direction_2d, extracting out whether positive or negative</td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">direction_1d</font></b><font face="Courier New">(const
+ direction_3d&amp; that)</font></td>
+ <td>Down cast direction_3d, extracting out whether positive or negative</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_1d&amp; <b>operator=</b>(const direction_1d dir)</font></td>
+ <td>Assignment</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_1d&amp; <b>operator==</b>(const direction_1d dir)
+const</font></td>
+ <td>Equivalence</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_1d&amp; <b>operator!=</b>(const direction_1d dir)
+const</font></td>
+ <td>Inequivalence</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">unsigned int <b>to_int</b>() const</font></td>
+ <td>Convert to the integer enum value of current state to use as index.&nbsp;
+ Auto-cast to int is disallowed for type safety reasons.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_1d&amp; <b>backward</b>()</font></td>
+ <td>Inverts direction.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">int <b>get_sign</b>() const</font></td>
+ <td>Returns positive 1 if positive direction and negative one if
+ negative direction.</td>
+ </tr>
+ </table>
+<h2>orientation_2d</h2>
+
+<p>
+<p align="left">The orientation_2d data type has two possible states.&nbsp;
+These are the horizontal and vertical axis of a 2d Cartesian coordinate system.&nbsp;&nbsp;
+These states can be described by one of the two orientation_2d_enum values:</p>
+<p align="left"><font face="Courier New">enum orientation_2d_enum { HORIZONTAL =
+0, VERTICAL = 1 };</font></p>
+<h2>Member Functions</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><b><font face="Courier New">orientation_2</font></b><font face="Courier New"><b>d</b>(orientation_2d_enum
+ val = HORIZONTAL)</font></td>
+ <td>Constructor defaults to HORIZONTAL. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">orientation_2</font></b><font face="Courier New"><b>d</b>(const
+ orientation_2d&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">explicit </font><b>
+ <font face="Courier New">orientation_2</font></b><font face="Courier New"><b>d</b>(const
+ direction_2d&amp; that)</font></td>
+ <td>Down cast direction_2d, extracting out whether horizontal or
+ vertical direction type</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">orientation_2d&amp; <b>operator=</b>(const orientation_2d
+o)</font></td>
+ <td>Assignment</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">orientation_2d&amp; <b>operator==</b>(const orientation_2d
+o) const</font></td>
+ <td>Equivalence</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">orientation_2d&amp; <b>operator!=</b>(const orientation_2d
+o) const</font></td>
+ <td>Inequivalence</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">unsigned int <b>to_int</b>() const</font></td>
+ <td>Convert to the integer enum value of current state to use as index.&nbsp;
+ Auto-cast to int is disallowed for type safety reasons</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">orientation_2d&amp; <b>turn_90</b>()</font></td>
+ <td>Change to orthogonal orientation</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">int <b>get_perpendicular</b>() const</font></td>
+ <td>Returns orthogonal orientation</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">int <b>get_direction</b>(direction_1d dir) const</font></td>
+ <td>Returns the positive or negative direction_2d depending on the value
+ of dir</td>
+ </tr>
+ </table>
+<h2>direction_2d</h2>
+
+<p>
+<p align="left">The direction_2d data type has four possible states.&nbsp; These
+are the cardinal directions of the 2D Cartesian coordinate system.&nbsp;&nbsp;
+These states can be described by one of several direction_2d_enum values:</p>
+<p align="left"><font face="Courier New">enum direction_2d_enum { WEST = 0, EAST
+= 1, SOUTH = 2, NORTH = 3 };</font></p>
+<h2>Member Functions</h2>
+<table border="1" width="100%" id="table3">
+ <tr>
+ <td width="586"><font face="Courier New"><b>direction_2d</b>(direction_2d_enum
+ val = WEST)</font></td>
+ <td>Constructor defaults to WEST. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">direction_2d</font></b><font face="Courier New">(const
+ direction_2d&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_1d&amp; <b>operator=</b>(const direction_2d dir)</font></td>
+ <td>Assignment</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_1d&amp; <b>operator==</b>(const direction_2d dir)
+const</font></td>
+ <td>Equivalence</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_1d&amp; <b>operator!=</b>(const direction_2d dir)
+const</font></td>
+ <td>Inequivalence</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">unsigned int <b>to_int</b>() const</font></td>
+ <td>Convert to the integer enum value of current state to use as index.&nbsp;
+ Auto-cast to int is disallowed for type safety reasons.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_2d&amp; <b>backward</b>()</font></td>
+ <td>Inverts direction.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_2d&amp; <b>turn</b>(direction_1d dir)</font></td>
+ <td>Changes to direction_2d to the left if dir is LOW, to the right if
+ dir is HIGH</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_2d&amp; <b>left</b>()</font></td>
+ <td>Changes to the direction_2d to the left</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_2d&amp; <b>right</b>()</font></td>
+ <td>Changes to the direction_2d to the right</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">int <b>is_positive</b>() const</font></td>
+ <td>Returns true if EAST or NORTH</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">int <b>is_negative</b>() const</font></td>
+ <td>Returns true if WEST or SOUTH</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">int <b>get_sign</b>() const</font></td>
+ <td>Returns positive 1 if positive direction and negative one if
+ negative direction.</td>
+ </tr>
+ </table>
+<h2>orientation_3d</h2>
+
+<p>
+<p align="left">The orientation_3d data type has three possible states.&nbsp;
+These are the horizontal, vertical and proximal (x, y, z) axis of a 3d Cartesian
+coordinate system.&nbsp;&nbsp; These states can be described by one of the
+orientation_2d_enum values or by the orientation_3d_enum value:</p>
+<p align="left"><font face="Courier New">enum orientation_3d_enum { PROXIMAL = 2
+};</font></p>
+<h2>Member Functions</h2>
+<table border="1" width="100%" id="table6">
+ <tr>
+ <td width="586"><b><font face="Courier New">orientation_3</font></b><font face="Courier New"><b>d</b>(orientation_2d_enum
+ val = HORIZONTAL)</font></td>
+ <td>Constructor defaults to HORIZONTAL. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">orientation_3</font></b><font face="Courier New"><b>d</b>(const
+ orientation_3d&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">explicit </font><b>
+ <font face="Courier New">orientation_3</font></b><font face="Courier New"><b>d</b>(const
+ direction_2d&amp; that)</font></td>
+ <td>Extract out the orientation of the direction</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">explicit </font><b>
+ <font face="Courier New">orientation_3</font></b><font face="Courier New"><b>d</b>(const
+ direction_3d&amp; that)</font></td>
+ <td>Extract out the orientation of the direction</td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">orientation_3</font></b><font face="Courier New"><b>d</b>(const
+ orientation_2d&amp; that)</font></td>
+ <td>Up cast orientation_2d to orientation_3d.</td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">orientation_3</font></b><font face="Courier New"><b>d</b>(const
+ orientation_3d_enum&amp; that)</font></td>
+ <td>Construct from constant value</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">orientation_3d&amp; <b>operator=</b>(const orientation_3d
+o)</font></td>
+ <td>Assignment</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">orientation_3d&amp; <b>operator==</b>(const orientation_3d
+o) const</font></td>
+ <td>Equivalence</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">orientation_3d&amp; <b>operator!=</b>(const orientation_3d
+o) const</font></td>
+ <td>Inequivalence</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">unsigned int <b>to_int</b>() const</font></td>
+ <td>Convert to the integer enum value of current state to use as index.&nbsp;
+ Auto-cast to int is disallowed for type safety reasons</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">int <b>get_direction</b>(direction_1d dir) const</font></td>
+ <td>Returns the positive or negative direction_2d depending on the value
+ of dir</td>
+ </tr>
+ </table>
+<h2>direction_3d</h2>
+
+<p>
+<p align="left">The direction_3d data type has six possible states.&nbsp; These
+are the cardinal directions of the 3D Cartesian coordinate system.&nbsp;&nbsp;
+These states can be described by one of the direction_2d_enum values or the
+direction_3d_enum values:</p>
+<p align="left"><font face="Courier New">enum direction_3d_enum { DOWN = 4, UP =
+5 };</font></p>
+<h2>Member Functions</h2>
+<table border="1" width="100%" id="table5">
+ <tr>
+ <td width="586"><font face="Courier New"><b>direction_3d</b>(direction_2d_enum
+ val = WEST)</font></td>
+ <td>Constructor defaults to LOW. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">direction_3d</font></b><font face="Courier New">(direction_3d_enum that)</font></td>
+ <td>Construct from constant value</td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">direction_3d</font></b><font face="Courier New">(const
+ direction_3d&amp; that)</font></td>
+ <td>Copy construct</td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">direction_3d</font></b><font face="Courier New">(direction_2d that)</font></td>
+ <td>Up cast direction_2d to direction_3d</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_3d&amp; <b>operator=</b>(const direction_3d dir)</font></td>
+ <td>Assignment</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_3d&amp; <b>operator==</b>(const direction_3d dir)
+const</font></td>
+ <td>Equivalence</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_2d&amp; <b>operator!=</b>(const direction_3d dir)
+const</font></td>
+ <td>Inequivalence</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">unsigned int <b>to_int</b>() const</font></td>
+ <td>Convert to the integer enum value of current state to use as index.&nbsp;
+ Auto-cast to int is disallowed for type safety reasons.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">direction_1d&amp; <b>backward</b>()</font></td>
+ <td>Inverts direction.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">int <b>is_positive</b>() const</font></td>
+ <td>Returns true if direction is EAST, NORTH or UP.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">int <b>is_negative</b>() const</font></td>
+ <td>Returns true if direction is WEST, SOUTH or DOWN</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">int <b>get_sign</b>() const</font></td>
+ <td>Returns positive 1 if positive direction and negative one if
+ negative direction.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table7">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_minkowski_tutorial.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_minkowski_tutorial.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,230 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Polygon Usage</title>
+</head>
+
+<body>
+
+<h1>Minkowski Sum Tutorial</h1>
+<p>In this tutorial we will implement an algorithm to compute the Minkowski sum
+of two polygon sets.&nbsp; The Minkowski sum of two polygon sets is the
+convolution of the two polygon sets and is defined as the set of points which is
+produced if you sum all pairs of points in the two polygon sets.&nbsp; The sum
+of two points is implemented in Boost.Polygon by the <font face="Courier New">
+convolve</font> function for
point_concept.&nbsp;
+Similarly there is a <font face="Courier New">
+convolve</font> function for rectangle_concept.&nbsp;
+The convolution of two polygon sets produces a polygon set as its output.&nbsp;
+An example of the convolution of two polygons is shown below.&nbsp; The center
+point of the green
+star can be imagined to slide around freely inside the blue picture frame shape
+painting the area the star touches to produce the red bloated picture frame.</p>
+<p>&nbsp;<img border="0" src="images/convolution1.PNG" width="438" height="404"></p>
+<p>The above image was produced using the code presented in this tutorial.&nbsp;
+We can see that the algorithm for Minkowski sum should support non-convex
+polygons that may potentially have holes.&nbsp; It should also support disjoint
+polygons in both input polygon sets.&nbsp; Shown below is what happens when
+multiple polygons are present in each input polygon set.</p>
+<p><img border="0" src="images/convolution2.PNG" width="547" height="432"></p>
+<p>In each of these examples the origin of the coordinate system is in the lower
+left corner of the image and the sum of the x and y locations of the input
+polygons places the result in the upper right hand corner of the images.&nbsp;
+In the example above the lower left red triangle is the convolution of the small
+blue triangle with the small green triangle.&nbsp; The upper right red triangle
+is the convolution of the large blue and large green triangle.&nbsp; The two
+medium sized red polygons are the result of the convolution of the small with
+large and large with small blue and green triangles.&nbsp; The test case was
+carefully contrived to prevent the result from merging together, though that
+could certainly happen.</p>
+<p>The algorithm implemented for Minkowski sum in this tutorial is very simple.&nbsp;
+It is based on the convolution of polygon edges.&nbsp; The convolution of two
+edges is very easy to compute and is in general a parallelogram.&nbsp; An
+example of two edges being convolved to produce a parallelogram is shown below.</p>
+<p><img border="0" src="images/convolve_edges.PNG" width="491" height="461"></p>
+<p>Now that we know what we need from a function to convolve two edges, let's
+implement one now.&nbsp; Below we show the code for convolving two edges along
+with some type definitions we will be using throughout the tutorial.&nbsp; The
+code for this tutorial is available in <a href="tutorial/minkowski.cpp">
+minkowski.cpp</a>.</p>
+<p><font face="Courier New" size="2">typedef boost::polygon::point_data&lt;int&gt;
+point;<br>
+typedef boost::polygon::polygon_set_data&lt;int&gt; polygon_set;<br>
+typedef boost::polygon::polygon_with_holes_data&lt;int&gt; polygon;<br>
+typedef std::pair&lt;point, point&gt; edge;<br>
+using namespace boost::polygon::operators;<br>
+<br>
+void convolve_two_segments(std::vector&lt;point&gt;&amp; figure, const edge&amp; a, const
+edge&amp; b) {<br>
+&nbsp; using namespace boost::polygon;<br>
+&nbsp; figure.clear();<br>
+&nbsp; figure.push_back(point(a.first));<br>
+&nbsp; figure.push_back(point(a.first));<br>
+&nbsp; figure.push_back(point(a.second));<br>
+&nbsp; figure.push_back(point(a.second));<br>
+&nbsp; convolve(figure[0], b.second);<br>
+&nbsp; convolve(figure[1], b.first);<br>
+&nbsp; convolve(figure[2], b.first);<br>
+&nbsp; convolve(figure[3], b.second);<br>
+}</font></p>
+<p>This function for convolving two line segments just convolves the end points
+of the two line segments in all combinations to produce the four points of a
+parallelogram and populates a vector of points with them in the correct order.&nbsp;
+We are using the Boost.Polygon library function for convolving two points and
+the library point data structure.</p>
+<p>To compute the convolution of two polygon sets we start by taking the union
+of the convolution of all pairs of edges between the two polygon sets.&nbsp;
+Given an operation for convolving two edges it is pretty easy to convolve all
+pairs of edges of two polygon sets.&nbsp; The result is the convolution the
+perimeters of the polygon sets, but doesn't handle the convolution of their
+interiors.&nbsp; To illustrate this we show what happens when one of the above
+examples is computed using just the all pairs of edges convolution.</p>
+<p>&nbsp; <img border="0" src="images/perimeter_convolve.PNG" width="546" height="432"></p>
+<p>As we can see, the result is as if the small triangles were slid around the
+perimeter of the large triangles leaving a hole in the center that should be
+filled in if the small triangle were allowed to slide freely within the large
+triangle.&nbsp; Also available in Boost.Polygon is the <font face="Courier New">
+convolve</font> function for polygon_concept
+that convolves a polygon over a point.&nbsp; All this does is translate the
+polygon by the x and y value of the point.&nbsp; To fill in the interior regions
+of the result of the convolution of two polygon sets we perform an all pairs of
+polygon convolution to the first vertex of the other polygon and merge that into
+the union of edge convolutions.</p>
+<p>Let's implement the rest of Minkowski sum of two polygon sets as the union of
+all pairs edges convolutions and the all pairs of polygons to point
+convolutions.&nbsp; First we implement a function that convolves all pairs of
+edges represented by iterator pairs over points.&nbsp; We assume that the first
+point is equal to the last point in each sequence because we know the polygons
+that gave rise to the iterators were produce by the Boost.Polygon algorithm for
+general polygon formation.</p>
+<p><font face="Courier New" size="2">template &lt;typename itrT1, typename itrT2&gt;<br>
+void convolve_two_point_sequences(polygon_set&amp; result, itrT1 ab, itrT1 ae, itrT2
+bb, itrT2 be) {<br>
+&nbsp; using namespace boost::polygon;<br>
+&nbsp; if(ab == ae || bb == be)<br>
+&nbsp;&nbsp;&nbsp; return;<br>
+&nbsp; point prev_a = *ab;<br>
+&nbsp; std::vector&lt;point&gt; vec;<br>
+&nbsp; polygon poly;<br>
+&nbsp; ++ab;<br>
+&nbsp; for( ; ab != ae; ++ab) {<br>
+&nbsp;&nbsp;&nbsp; point prev_b = *bb;<br>
+&nbsp;&nbsp;&nbsp; itrT2 tmpb = bb;<br>
+&nbsp;&nbsp;&nbsp; ++tmpb;<br>
+&nbsp;&nbsp;&nbsp; for( ; tmpb != be; ++tmpb) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; convolve_two_segments(vec, std::make_pair(prev_b,
+*tmpb), std::make_pair(prev_a, *ab));<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set_points(poly, vec.begin(), vec.end());<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result.insert(poly);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prev_b = *tmpb;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; prev_a = *ab;<br>
+&nbsp; }<br>
+}</font></p>
+<p>Using the function defined above we can implement a function for computing
+the convolution of all pairs of edges represented by an iterator pair over
+points and edges in a collection of polygons.&nbsp; We just call the
+convolve_two_point_sequences for the input point sequence and all outer shell
+and hole point sequences from the container of polygons.</p>
+<p><font face="Courier New" size="2">template &lt;typename itrT&gt;<br>
+void convolve_point_sequence_with_polygons(polygon_set&amp; result, itrT b, itrT e,
+const std::vector&lt;polygon&gt;&amp; polygons) {<br>
+&nbsp; using namespace boost::polygon;<br>
+&nbsp; for(std::size_t i = 0; i &lt; polygons.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; convolve_two_point_sequences(result, b, e,
+begin_points(polygons[i]), end_points(polygons[i]));<br>
+&nbsp;&nbsp;&nbsp; for(polygon_with_holes_traits&lt;polygon&gt;::iterator_holes_type
+itrh = begin_holes(polygons[i]);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; itrh != end_holes(polygons[i]); ++itrh)
+{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; convolve_two_point_sequences(result, b, e,
+begin_points(*itrh), end_points(*itrh));<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; }<br>
+}</font></p>
+<p>Using the function defined above we can implement a function for computing
+the convolution of all pairs of edges from polygons contained within two polygon
+sets.&nbsp; We also convolve each polygon with the first vertex of every polygon
+from the other set to fill in the interiors of the result.</p>
+<p><font face="Courier New" size="2">void convolve_two_polygon_sets(polygon_set&amp;
+result, const polygon_set&amp; a, const polygon_set&amp; b) {<br>
+&nbsp; using namespace boost::polygon;<br>
+&nbsp; result.clear();<br>
+&nbsp; std::vector&lt;polygon&gt; a_polygons;<br>
+&nbsp; std::vector&lt;polygon&gt; b_polygons;<br>
+&nbsp; a.get(a_polygons);<br>
+&nbsp; b.get(b_polygons);<br>
+&nbsp; for(std::size_t ai = 0; ai &lt; a_polygons.size(); ++ai) {<br>
+&nbsp;&nbsp;&nbsp; convolve_point_sequence_with_polygons(result,
+begin_points(a_polygons[ai]), <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+end_points(a_polygons[ai]), b_polygons);<br>
+&nbsp;&nbsp;&nbsp; for(polygon_with_holes_traits&lt;polygon&gt;::iterator_holes_type
+itrh = begin_holes(a_polygons[ai]);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; itrh != end_holes(a_polygons[ai]); ++itrh)
+{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; convolve_point_sequence_with_polygons(result,
+begin_points(*itrh), <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+end_points(*itrh), b_polygons);<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; for(std::size_t bi = 0; bi &lt; b_polygons.size(); ++bi) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; polygon tmp_poly = a_polygons[ai];<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result.insert(convolve(tmp_poly, *(begin_points(b_polygons[bi]))));<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp_poly = b_polygons[bi];<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result.insert(convolve(tmp_poly, *(begin_points(a_polygons[ai]))));<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; }<br>
+}</font></p>
+<p>We test the convolution of two polygon set with the code shown below that
+produces the first example shown in this tutorial.<font face="Courier New" size="2">
+</font></p>
+<p><font face="Courier New" size="2">polygon_set a, b, c;<br>
+a += boost::polygon::rectangle_data&lt;int&gt;(0+300, 0, 200+300, 200);<br>
+a -= boost::polygon::rectangle_data&lt;int&gt;(50+300, 50, 150+300, 150);<br>
+std::vector&lt;polygon&gt; polys;<br>
+std::vector&lt;point&gt; pts;<br>
+pts.push_back(point(-40, 0+300));<br>
+pts.push_back(point(-10, 10+300));<br>
+pts.push_back(point(0, 40+300));<br>
+pts.push_back(point(10, 10+300));<br>
+pts.push_back(point(40, 0+300));<br>
+pts.push_back(point(10, -10+300));<br>
+pts.push_back(point(0, -40+300));<br>
+pts.push_back(point(-10, -10+300));<br>
+pts.push_back(point(-40, 0+300));<br>
+polygon poly;<br>
+boost::polygon::set_points(poly, pts.begin(), pts.end());<br>
+b+=poly;<br>
+polys.clear();<br>
+convolve_two_polygon_sets(c, a, b);</font></p>
+<p>Output (a is blue, b is green and c is red):</p>
+<p><img border="0" src="images/convolution1.PNG" width="438" height="404"></p>
+<p>This concludes our tutorial on how to implement Minkowski sum of polygons as
+the convolution of polygon sets based on the Boolean OR operation of geometry
+produced by simpler convolution features provided by the Boost.Polygon library.</p>
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</body>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_point_3d_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_point_3d_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,298 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Point 3D Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Point3D Concept</h1>
+
+<p>
+<p>
+The point_3d concept type identifier is <font face="Courier New">
+point_3d_concept</font><p>
+To register a user defined type as a model of point_3d concept, specialize the
+geometry concept meta-function for that type.&nbsp; In the example below
+CPoint3D is registered as a model of point_3d&nbsp; concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CPoint3D&gt; { typedef point_3d_concept type; };</font><p>
+<font face="Times New Roman">The semantic of an point_3d is that it has an x and
+y coordinate.&nbsp; An int[3], boost::tuple&lt;int, int, int, int&gt; or boost::array&lt;int,
+3&gt;
+could all be made models of point_3d by simply providing indirect access to their
+elements through traits.</font><p>
+<font face="Times New Roman">Below is shown the default point_3d traits.&nbsp;
+Specialization of these traits is required for types that don't conform to the
+default behavior.</font><p>
+template &lt;typename T&gt;<br>
+struct point_3d_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::coordinate_type coordinate_type;<br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline coordinate_type get(const T&amp; point,
+orientation_3d orient) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return point.get(orient);
+}<br>
+};<br>
+<br>
+template &lt;typename T&gt;<br>
+struct point_3d_mutable_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline void set(T&amp; point, orientation_3d orient,
+typename point_3d_traits&lt;T&gt;::coordinate_type value) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point.set(orient, value);
+}<br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline T construct(typename point_3d_traits&lt;T&gt;::coordinate_type
+x_value, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+typename point_3d_traits&lt;T&gt;::coordinate_type y_value, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+typename point_3d_traits&lt;T&gt;::coordinate_type z_value) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return T(x_value, y_value,
+z_value); }<br>
+};<h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_type <b>get</b>(const T&amp; point_3d, orientation_3d)</font></td>
+ <td><font face="Times New Roman">Expects a model of point_3d.&nbsp;
+ Returns the x or y coordinate of the point_3d, depending on the
+ orientation_3d value.</font><font face="Courier New"><br>
+&nbsp;</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ coordinate_type&gt;<br>
+ void <b>set</b>(T&amp; point_3d, orientation_3d, coordinate_type)</font></td>
+ <td><font face="Times New Roman">Expects a model of point_3d.&nbsp;&nbsp;
+ Sets the x, y or z coordinate of the point_3d to the coordinate, depending
+ on the orientation_3d&nbsp; value. </font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T <b>construct</b>(coordinate_type x, coordinate_type y, </font>
+ <br><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_type z)</font></td>
+ <td>Construct an object that is a model of point_3d given x, y and z
+ coordinate values.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
+ <td>Copies data from right object that models point_3d into left object
+ that models point_3d.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ T2&gt;<br>
+ bool <b>equivalence</b>(const T&amp; point_3d1, const T2&amp; point_3d2)</font></td>
+ <td>Given two objects that model point_3d, compares and returns true if
+ their x, y and z values are respectively equal to each other.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ point_3d_type&gt;<br>
+ coordinate_type <b>x</b>(const point_3d_type&amp; point_3d)</font></td>
+ <td>Returns the x coordinate of an object that models point_3d.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ point_3d_type&gt;<br>
+ coordinate_type <b>y</b>(const point_3d_type&amp; point_3d)</font></td>
+ <td>Returns the y coordinate of an object that models point_3d.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ point_3d_type&gt;<br>
+ coordinate_type <b>z</b>(const point_3d_type&amp; point_3d)</font></td>
+ <td>Returns the z coordinate of an object that models point_3d.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ point_3d_type&gt;<br>
+ void <b>x</b>(point_3d_type&amp; point_3d, coordinate_type )</font></td>
+ <td>Sets the x coordinate of the object that models point_3d to the
+ coordinate value.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ point_3d_type&gt;<br>
+ void <b>y</b>(point_3d_type&amp; point_3d, coordinate_type )</font></td>
+ <td>Sets the y coordinate of the object that models point_3d to the
+ coordinate value.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ point_3d_type&gt;<br>
+ void <b>z</b>(point_3d_type&amp; point_3d, coordinate_type )</font></td>
+ <td>Sets the z coordinate of the object that models point_3d to the
+ coordinate value. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ point_3d_type&gt;<br>
+ point_3d_type&amp; <b>scale_up</b>(point_3d_type&amp; point_3d, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ unsigned_area_type factor)</font></td>
+ <td>Multiplies x, y and z coordinate of an object that models point_3d by
+ unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ point_3d_type&gt;<br>
+ point_3d_type&amp; <b>scale_down</b>(point_3d_type&amp; point_3d, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ unsigned_area_type factor)</font></td>
+ <td>Divides x, y and z coordinate of an object that models point_3d by
+ unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ point_3d_type, typename scaling_type&gt;<br>
+ point_3d_type&amp; <b>scale</b>(point_3d_type&amp; point_3d,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const scaling_type&amp; factor) </font></td>
+ <td>Calls the scale member function of scaling type on the x, y and z value
+ of an object that models point_3d and sets the point_3d to the scaled
+ values.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ point_3d_type, typename transform_type&gt;<br>
+ point_3d_type&amp; <b>transform</b>(point_3d_type&amp; point_3d,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const transform_type&amp; transform) </font></td>
+ <td>Calls the transform member function of transform type on the x, y and
+ z
+ value of an object that models point_3d and sets the point_3d to the
+ transformed values.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_3d_type&amp; <b>move</b>(T&amp; point_3d, orientation_3d<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_difference displacement)</font></td>
+ <td>Adds displacement value to the coordinate of an object that models
+ point_3d indicated by the orientation_3d.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>convolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Adds x coordinate of b to x coordinate of a and adds y coordinate of
+ b to y coordinate of a and adds z coordinate of b to z coordinate of a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>deconvolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Subtracts x coordinate of b from x coordinate of a and subtracts y
+ coordinate of b from y coordinate of a and subtracts z coordinate of b
+ from z coordinate of a. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ coordinate_distance <b>euclidean_distance</b>(const T1&amp;,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T2&amp;)</font></td>
+ <td>Returns the distance from an object that models point_3d to a second
+ object that models point_3d.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_difference <b>euclidean_distance</b>(const T&amp;,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orientation_3d, coordinate_type)</font></td>
+ <td>Returns the distance from an object that models point_3d to a
+ coordinate in the given orientation_3d.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ coordinate_distance <b>manhattan_distance</b>(const T1&amp;,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T2&amp;)</font></td>
+ <td>Returns the distance in x plus the distance in y plus the distance
+ in z from an object that
+ models point_3d to a second object that models point_3d.</td>
+ </tr>
+ </table>
+<p>&nbsp;<tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table2">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_point_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_point_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,400 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Point Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Point Concept</h1>
+
+<p>
+<p>
+The point concept tag is <font face="Courier New">
+point_concept</font><p>
+To register a user defined type as a model of point concept, specialize the
+geometry concept meta-function for that type.&nbsp; In the example below CPoint is registered as a model of
+point&nbsp; concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CPoint&gt; { typedef point_concept type; };</font><p>
+<font face="Times New Roman">The semantic of a point is that it has an x and y
+coordinate.&nbsp; A std::pair&lt;int, int&gt;, boost::tuple&lt;int, int&gt; or boost::array&lt;int, 2&gt;
+could all be made models of point by simply providing indirect access to their
+elements through traits, however, these objects cannot be made a model of both
+point and interval in the same compilation unit, for obvious reason that
+duplicate specialization of the geometry_concept struct is illegal, but also
+because it would make overloading generic function by concept ambiguous if a
+type modeled more than one concept.</font><p>
+<font face="Times New Roman">Below is shown the default point traits.&nbsp;
+Specialization of these traits is required for types that don't conform to the
+default behavior.</font><p>
+template &lt;typename T&gt;<br>
+struct point_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::coordinate_type coordinate_type;<br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline coordinate_type get(const T&amp; point,
+orientation_2d orient) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return point.get(orient);
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};<br>
+<br>
+template &lt;typename T&gt;<br>
+struct point_mutable_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline void set(T&amp; point, orientation_2d orient,
+typename point_traits&lt;T&gt;::coordinate_type value) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point.set(orient, value);
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline T construct(typename point_traits&lt;T&gt;::coordinate_type
+x_value, typename point_traits&lt;T&gt;::coordinate_type y_value) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return T(x_value, y_value);
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};<p>
+Example code custom_point.cpp demonstrates
+how to map a
+ user defined point class to the library point_concept<h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_type <b>get</b>(const T&amp; point, orientation_2d)</font></td>
+ <td><font face="Times New Roman">Expects a model of point.&nbsp; Returns
+ the x or y coordinate of the point, depending on the orientation_2d
+ value.</font><font face="Courier New"><br>
+&nbsp;</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ coordinate_type&gt;<br>
+ void <b>set</b>(T&amp; point, orientation_2d, coordinate_type)</font></td>
+ <td><font face="Times New Roman">Expects a model of point.&nbsp;&nbsp;
+ Sets the x or y coordinate of the point to the coordinate, depending on
+ the orientation_2d&nbsp; value. </font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T <b>construct</b>(coordinate_type x, coordinate_type y)</font></td>
+ <td>Construct an object that is a model of point given x and y
+ coordinate values.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
+ <td>Copies data from right object that models point into left object
+ that models point.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ T2&gt;<br>
+ bool <b>equivalence</b>(const T&amp; point1, const T2&amp; point2)</font></td>
+ <td>Given two objects that model point, compares and returns true if
+ their x and y values are respectively equal to each other.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename point_type&gt;<br>
+ coordinate_type <b>x</b>(const point_type&amp; point)</font></td>
+ <td>Returns the x coordinate of an object that models point.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename point_type&gt;<br>
+ coordinate_type <b>y</b>(const point_type&amp; point)</font></td>
+ <td>Returns the y coordinate of an object that models point.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename point_type&gt;<br>
+ void <b>x</b>(point_type&amp; point, coordinate_type )</font></td>
+ <td>Sets the x coordinate of the object that models point to the
+ coordinate value.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename point_type&gt;<br>
+ void <b>y</b>(point_type&amp; point, coordinate_type )</font></td>
+ <td>Sets the y coordinate of the object that models point to the
+ coordinate value.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename point_type&gt;<br>
+ point_type&amp; <b>scale_up</b>(point_type&amp; point, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ unsigned_area_type factor)</font></td>
+ <td>Multiplies x and y coordinate of an object that models point by
+ unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename point_type&gt;<br>
+ point_type&amp; <b>scale_down</b>(point_type&amp; point, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ unsigned_area_type factor)</font></td>
+ <td>Divides x and y coordinate of an object that models point by
+ unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename point_type,
+ typename scaling_type&gt;<br>
+ point_type&amp; <b>scale</b>(point_type&amp; point,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const scaling_type&amp; factor) </font></td>
+ <td>Calls the scale member function of scaling type on the x and y value
+ of an object that models point and sets the point to the scaled values.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename point_type,
+ typename transform_type&gt;<br>
+ point_type&amp; <b>transform</b>(point_type&amp; point,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const transform_type&amp; transform) </font></td>
+ <td>Calls the transform member function of transform type on the x and y
+ value of an object that models point and sets the point to the
+ transformed values.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename point_type&gt;<br>
+ point_type&amp; <b>move</b>(point_type&amp; point, orientation_2d<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ coordinate_difference displacement)</font></td>
+ <td>Adds displacement value to the coordinate of an object that models
+ point indicated by the orientation_2d.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>convolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Adds x coordinate of b to x coordinate of a and adds y coordinate of
+ b to y coordinate of a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>deconvolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Subtracts x coordinate of b from x coordinate of a and subtracts y
+ coordinate of b from y coordinate of a. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ coordinate_distance <b>euclidean_distance</b>(const T1&amp;,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T2&amp;)</font></td>
+ <td>Returns the distance from an object that models point to a second
+ object that models point.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_difference <b>euclidean_distance</b>(const T&amp;,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orientation_2d,
+ coordinate_type)</font></td>
+ <td>Returns the distance from an object that models point to a
+ coordinate in the given orientation_2d.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ coordinate_difference <b>manhattan_distance</b>(const T1&amp;,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T2&amp;)</font></td>
+ <td>Returns the distance in x plus the distance in y from an object that
+ models point to a second object that models point.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ coordinate_difference <b>distance_squared</b>(const T1&amp;,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T2&amp;)</font></td>
+ <td>Returns the square of the distance in x plus the square of the
+ distance in y from an object that models point to a second object that
+ models point.</td>
+ </tr>
+</table>
+<h1>Point Data</h1>
+
+<p>
+<p>The library provides a model of point concept declared
+<font face="Courier New">
+template&lt;typename T&gt; point_data </font>where T is the coordinate type.</p>
+<p>This data type is used internally when a point is needed and is available to
+the library user who finds it convenient to use a library point data type
+instead of providing their own.&nbsp; The data type is implemented to be
+convenient to use with the library traits.</p>
+<p>Example code point_usage.cpp demonstrates using the
+ library provided point data type and functions</p>
+<h2>Members</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><b><font face="Courier New">geometry_type</font></b></td>
+ <td><font face="Times New Roman">point_concept</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">coordinate_type</font></b></td>
+ <td><font face="Times New Roman">T</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>point_data</b>()</font></td>
+ <td><font face="Times New Roman">Default constructs the two coordinate
+ values of the </font>point<font face="Times New Roman">.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>point_data</b>(T x, T y)</font></td>
+ <td><font face="Times New Roman">Constructs an interval with two
+ coordinates.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>point_data</b>(const point_data*
+ that)</font></td>
+ <td><font face="Times New Roman">Copy construct</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">point_data&amp; <b>operator=</b>(const
+ point_data&amp; that)</font></td>
+ <td>Assignment operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>&nbsp;
+ <br> </b>point_data&amp; <b>operator=</b>(const T2&amp; that) const</font></td>
+ <td>Assign from an object that is a model of point.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator==</b>(const T2&amp; that) const</font></td>
+ <td>Compare equality to an object that is a model of point.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator!=</b>(const T2&amp; that) const</font></td>
+ <td>Compare inequality to an object that is a model of point.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator&lt;</b>(const T2&amp; that) const</font></td>
+ <td>Compares y coordinates then x coordinates to break ties.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator&lt;=</b>(const T2&amp; that) const</font></td>
+ <td>Compares y coordinates then x coordinates to break ties.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator&gt;</b>(const T2&amp; that) const</font></td>
+ <td>Compares low coordinates then high coordinates to break ties.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator&gt;=</b>(const T2&amp; that) const</font></td>
+ <td>Compares low coordinates then high coordinates to break ties.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">T <b>get</b>(orientation_2d
+ orient) const</font></td>
+ <td>Get the coordinate in the given orientation.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">T <b>x</b>() const</font></td>
+ <td>Get the coordinate in the horizontal orientation.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">T <b>y</b>() const</font></td>
+ <td>Get the coordinate in the vertical orientation.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>set</b>(orientation_2d
+ orient, T value)</font></td>
+ <td>Sets the coordinate in the given orientation to the value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>x</b>(T value)</font></td>
+ <td>Sets the coordinate in the horizontal orientation to the value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>y</b>(T value)</font></td>
+ <td>Sets the coordinate in the vertical orientation to the value.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table3">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_point_usage.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_point_usage.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,90 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Point Usage</title>
+</head>
+
+<body>
+
+<p><font face="Courier New">/*<br>
+Copyright 2008 Intel Corporation<br>
+<br>
+Use, modification and distribution are subject to the Boost Software License,<br>
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at<br>
+
http://www.boost.org/LICENSE_1_0.txt).<br>
+*/<br>
+#include &lt;boost/polygon/polygon.hpp&gt;<br>
+#include &lt;cassert&gt;<br>
+namespace gtl = boost::polygon;<br>
+using namespace boost::polygon::operators;<br><br>
+int main() {<br>
+&nbsp; //constructing a gtl point<br>
+&nbsp; typedef gtl::point_data&lt;int&gt; Point;<br>
+&nbsp; int x = 10;<br>
+&nbsp; int y = 20;<br>
+&nbsp; Point pt(x, y);<br>
+&nbsp; assert(gtl::x(pt) == 10);<br>
+&nbsp; assert(gtl::y(pt) == 20);<br>
+&nbsp; <br>
+&nbsp; //a quick primer in isotropic point access<br>
+&nbsp; typedef gtl::orientation_2d O;<br>
+&nbsp; using gtl::HORIZONTAL;<br>
+&nbsp; using gtl::VERTICAL;<br>
+&nbsp; O o = HORIZONTAL;<br>
+&nbsp; assert(gtl::x(pt) == gtl::get(pt, o));<br>
+&nbsp; <br>
+&nbsp; o = o.get_perpendicular();<br>
+&nbsp; assert(o == VERTICAL);<br>
+&nbsp; assert(gtl::y(pt) == gtl::get(pt, o));<br>
+<br>
+&nbsp; gtl::set(pt, o, 30);<br>
+&nbsp; assert(gtl::y(pt) == 30);<br>
+<br>
+&nbsp; //using some of the library functions<br>
+&nbsp; Point pt2(10, 30);<br>
+&nbsp; assert(gtl::equivalence(pt, pt2));<br>
+<br>
+&nbsp; gtl::transformation&lt;int&gt; tr(gtl::axis_transformation::SWAP_XY);<br>
+&nbsp; gtl::transform(pt, tr);<br>
+&nbsp; assert(gtl::equivalence(pt, Point(30, 10)));<br>
+<br>
+&nbsp; gtl::transformation&lt;int&gt; tr2 = tr.inverse();<br>
+&nbsp; assert(tr == tr2); //SWAP_XY is its own inverse transform<br>
+<br>
+&nbsp; gtl::transform(pt, tr2);<br>
+&nbsp; assert(gtl::equivalence(pt, pt2)); //the two points are equal again<br>
+<br>
+&nbsp; gtl::move(pt, o, 10); //move pt 10 units in y<br>
+&nbsp; assert(gtl::euclidean_distance(pt, pt2) == 10.0f);<br>
+<br>
+&nbsp; gtl::move(pt, o.get_perpendicular(), 10); //move pt 10 units in x<br>
+&nbsp; assert(gtl::manhattan_distance(pt, pt2) == 20);<br>
+<br>
+&nbsp; return 0;<br>
+}<br>
+&nbsp;</font></p>
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/gtl_polygon_45_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_45_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,360 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Polygon 45 Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon 45 Concept</h1>
+
+<p>
+<p>The polygon_45 concept tag is <font face="Courier New">
+polygon_45_concept</font></p>
+<p>
+To register a user defined type as a model of
+<font face="Times New Roman">polygon_45 </font>concept, specialize the
+geometry concept meta-function for that type.&nbsp; In the example below CPolygon45 is registered as a model of
+polygon_45&nbsp; concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CPolygon45&gt; { typedef polygon_45_concept type; };</font><p>
+<font face="Times New Roman">The semantic of a polygon_45 is that it can provide
+iterators over the points that represent its vertices, angles formed as these
+vertices must be multiple of 45-degree relative to the coordinate axis.&nbsp; It
+is acceptable to have the last edge explict with the first and last point equal
+to each other or implied by this segement that would connect the first and last
+point.&nbsp; A mutable polygon_45 must also be able to set its geometry based on
+an interator range over such points.&nbsp;&nbsp; A std::vector&lt;point_data&lt;int&gt; &gt;
+or std::list&lt;point_data&lt;int&gt; &gt;
+could be made models of polygon_45_concept by simply providing access to their
+iterators through traits.&nbsp; Library functions that create polygon objects
+require that those objects provide a default constructor.</font><p>
+<font face="Times New Roman">Below is shown the default polygon traits.&nbsp;
+Specialization of these traits is required for types that don't conform to the
+default behavior.&nbsp; Note that these traits are also used by several other
+polygon concepts through SFINAE enable template parameter.&nbsp; The SFINAE enable
+parameter also allows the library to provide default specialization that work
+for any object that models the 90 degree polygon concepts.</font><p>
+<font face="Courier New">template &lt;typename T, typename enable = gtl_yes&gt;<br>
+struct polygon_traits {};<br>
+<br>
+template &lt;typename T&gt;<br>
+struct polygon_traits&lt;T, <br>
+&nbsp; typename gtl_or_4&lt;<br>
+&nbsp;&nbsp;&nbsp; typename gtl_same_type&lt;typename geometry_concept&lt;T&gt;::type,
+polygon_concept&gt;::type,<br>
+&nbsp;&nbsp;&nbsp; typename gtl_same_type&lt;typename geometry_concept&lt;T&gt;::type,
+polygon_45_concept&gt;::type,<br>
+&nbsp;&nbsp;&nbsp; typename gtl_same_type&lt;typename geometry_concept&lt;T&gt;::type,
+polygon_with_holes_concept&gt;::type,<br>
+&nbsp;&nbsp;&nbsp; typename gtl_same_type&lt;typename geometry_concept&lt;T&gt;::type,
+polygon_45_with_holes_concept&gt;::type<br>
+&nbsp; &gt;::type&gt; {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::coordinate_type coordinate_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::iterator_type iterator_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::point_type point_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_type begin_points(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.begin();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_type end_points(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.end();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline unsigned int size(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.size();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline winding_direction winding(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return unknown_winding;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p><font face="Courier New">template &lt;typename T, typename enable = void&gt;<br>
+struct polygon_mutable_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; template &lt;typename iT&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline T&amp; set_points(T&amp; t, iT input_begin, iT
+input_end) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.set(input_begin,
+input_end);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p>An object that is a model of <font face="Courier New">
+polygon_45_concept</font> can be viewed as a model of any of its
+refinements if it is determined at runtime to conform to the restriction of
+those concepts.&nbsp; This concept casting is accomplished through the
+<font face="Courier New">view_as&lt;&gt;()</font> function.</p>
+<p><font face="Courier New">view_as&lt;rectangle_concept&gt;(polygon_45_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_90_concept&gt;(polygon_45_object)</font></p>
+<p>The return value of <font face="Courier New">view_as&lt;&gt;()</font> can be
+passed into any interface that expects an object of the conceptual type
+specified in its template parameter.</p>
+<h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>begin_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_45.&nbsp;
+ Returns the begin iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>end_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_45.&nbsp;
+ Returns the end iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_points</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_45.&nbsp;&nbsp;
+ Sets the polygon to the point data range [b,e) that corresponds to
+ vertices of a polygon.&nbsp; Non-45 edges between successive input
+ points is disallowed.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ unsigned int <b>size</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Returns the number of edges in the
+ polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
+ <td>Copies data from right object that models polygon_45 into left object
+ that models polygon_45.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ bool <b>contains</b>(const T&amp;, const point_type&amp; point, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch=true)</font></td>
+ <td>Given an object that models polygon_45 and an object that models
+ point, returns true
+ if the polygon contains the point.&nbsp; If the consider_touch
+ flag is true will return true if the point lies along the boundary of
+ the polygon.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">// get the center coordinate<br>
+ template &lt;typename T, typename point_type&gt;<br>
+ void <b>center</b>(point_type&amp; p, const T&amp; polygon)</font></td>
+ <td>Sets object that models point to the center point of the bounding
+ box of an object that models polygon_45.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename rectangle_type&gt;<br>
+ bool <b>extents</b>(rectangle_type&amp; bbox, const T&amp; polygon)</font></td>
+ <td>Sets object that models rectangle to the bounding box of an object
+ that models polygon_45 and returns true.&nbsp; Returns false and leaves
+ bbox unchanged if polygon is empty.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ area_type <b>area</b>(const T&amp; polygon)</font></td>
+ <td>Returns the area of an object
+ that models polygon_45.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ direction_1d <b>winding</b>(const T&amp; polygon)</font></td>
+ <td>Returns the winding direction of an object
+ that models polygon_45, LOW == CLOCKWISE, HIGH = COUNTERCLOCKWISE.&nbsp;
+ Complexity depends upon winding trait.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_distance <b>perimeter</b>(const T&amp; polygon)</font></td>
+ <td>Returns the perimeter length of an object
+ that models polygon_45.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename transform_type&gt;<br>
+ T&amp; <b>transform</b>(T&amp; polygon, const transform_type&amp;)</font></td>
+ <td>Applies transform() on the vertices of polygon and sets the polygon to that described by the result of
+ transforming its vertices.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_up</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales up coordinate of an object that models
+ polygon_45 by unsigned factor.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_down</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales down coordinates of an object that models
+ polygon_45 by unsigned factor.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, scaling_type&gt;<br>
+ T&amp; <b>scale</b>(T&amp; rectangle, double scaling) </font></td>
+ <td>Scales coordinates of an object that models polygon_45 by floating
+ point factor.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>move</b>(T&amp; polygon, orientation_2d,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_difference displacement)</font></td>
+ <td>Adds displacement value to coordinate indicated by orientation_2d of
+ vertices of an object that models polygon_45.&nbsp; Linear wrt.
+ vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename polygon_type, typename point_type&gt;<br>
+ polygon_type&amp; <b>convolve</b>(polygon_type&amp; polygon,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const point_type&amp; point)</font></td>
+ <td>Convolves coordinate values of point with vertices of an
+ object that models polygon_45.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ </table>
+ <h1>Polygon 45 Data</h1>
+
+<p>
+<p>The library provides a model of polygon 45 concept declared
+<font face="Courier New">
+template&lt;typename T&gt; polygon_45_data </font>where T is the coordinate type.</p>
+<p>This data type is used internally when a 45-degree polygon is needed and is
+available to the library user who finds it convenient to use a library polygon
+data type instead of providing their own.&nbsp; The data type is implemented to
+be convenient to use with the library traits.</p>
+<h2>Members</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><b><font face="Courier New">geometry_type</font></b></td>
+ <td><font face="Times New Roman">polygon_45_concept</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">coordinate_type</font></b></td>
+ <td><font face="Times New Roman">T</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">iterator_type</font></b></td>
+ <td>Iterator over vertices point_data&lt;T&gt; vertices of polygon</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_45_data</b>()</font></td>
+ <td><font face="Times New Roman">Default constructs the </font>polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_45_data</b>(const
+ polygon_45_data&amp; that)</font></td>
+ <td><font face="Times New Roman">Copy construct</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_45_data&amp; <b>operator=</b>(const
+ polygon_45_data&amp; that)</font></td>
+ <td>Assignment operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>&nbsp;
+ <br> </b>polygon_45_data&amp; <b>operator=</b>(const T2&amp; that) const</font></td>
+ <td>Assign from an object that is a model of polygon 45.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>begin</b>()
+ const</font></td>
+ <td>Get the begin iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>end</b>()
+ const</font></td>
+ <td>Get the end iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">std::size_t <b>size</b>() const</font></td>
+ <td>Get the number of elements in the sequence stored to the polygon,
+ usually equal to the number of edges of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set</b>(iT begin_points, iT end_points)</font></td>
+ <td>Sets the polygon to the iterator range of points.&nbsp; No check is
+ performed to ensure the points describe corners that are multiples of 45
+ degrees relative to the coordinate axis.</td>
+ </tr>
+</table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table3">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_polygon_45_set_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_45_set_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,739 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Polygon 45 Set Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon 45 Set Concept</h1>
+
+<p>
+<p>The polygon_45_set concept tag is <font face="Courier New">
+polygon_45_set_concept</font></p>
+<p>
+<font face="Times New Roman">The semantic of a polygon_45_set is zero or more
+geometry regions which have angles at the vertices that are multiples of
+45-degrees relative to the coordinate axis.&nbsp; A Polygon 45 Set Concept makes
+no sense in floating point, but currently does not provide a static assert to
+prevent it from being used with floating point coordinates.&nbsp; The result of
+such use is undefined.&nbsp; When the intersection of two 45 degree edges
+results in a vertex that is off the integer grid that case is handled by
+inserting a unit length edge between the two 45 degree edges near the off grid
+intersection point.&nbsp; In the case that data represented contains no
+45-degree angles and is Manhattan a runtime check will default to the Manhattan
+algorithm.&nbsp; The results of which are identical to what the 45-degree
+algorithm would do, but obtained more efficiently.</font><p>
+<font face="Times New Roman">The motivation for providing the polygon_45_set is
+to extend the special case of Manhattan geometry capability of the library to
+encompass the slightly less common, but still important special case of geometry
+that is described by angles that are multiples of 45-degress with respect to the
+coordinate axis.&nbsp; This simplifies the implementation of geometry algorithms
+and affords many opportunities for optimization.&nbsp; 45-degree algorithms can
+be 50X faster than arbitrary angle algorithms and are required to provide a
+complete feature set that meets the performance requirements of application
+domains in which Manhattan and 45-degree geometry are a common special case.</font><p>Users are recommended to use std::vector and std::list of user defined polygons
+or library provided polygon_45_set_data&lt;coordinate_type&gt; objects.&nbsp; Lists
+and vectors of models of polygon_45_concept or polygon_45_with_holes_concept are automatically models of polygon_45_set_concept.</p>
+<p>An object that is a model of <font face="Courier New">
+polygon_45_set_concept</font> can be viewed as a model of <font face="Courier New">
+polygon_90_set_concept</font> if it is determined at runtime to conform to the
+restriction that all edges are axis-parallel.&nbsp; This concept casting is
+accomplished through the <font face="Courier New">view_as&lt;&gt;()</font> function.</p>
+<p><font face="Courier New">view_as&lt;polygon_90_set_concept&gt;(polygon_set_object)</font></p>
+<p>The return value of <font face="Courier New">view_as&lt;&gt;()</font> can be passed
+into any interface that expects an object of the conceptual type specified in
+its template parameter.&nbsp; Polygon sets cannot be viewed as single polygons
+or rectangles since it generally cannot be known whether a polygon set contains
+only a single polygon without converting to polygons.</p>
+<h2>Operators</h2>
+<p>The return type of some operators is the <font face="Courier New">polygon_45_set_view</font>
+operator template type.&nbsp; This type is itself a model of the polygon 90 set
+concept, but furthermore can be used as an argument to the <font face="Courier New">polygon_45_set_data</font>
+constructor and assignment operator.&nbsp; The operator template exists to
+eliminate temp copies of intermediate results when Boolean operators are chained
+together.</p>
+<p>Operators are declared inside the namespace <font face="Courier New">boost::polygon::operators</font>.</p>
+<table border="1" width="100%" id="table5">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_45_set_view <b>operator</b>|(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean OR operation (polygon set union).&nbsp; Accepts two objects
+ that model polygon_45_set or one of its refinements.&nbsp; Returns an
+ operator template that performs the operation on demand when chained or
+ or nested in a library function call such as assign().&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_45_set_view <b>operator</b>+(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator|.&nbsp; The plus sign is also used for OR
+ operations in Boolean logic expressions.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_45_set_view <b>operator</b>&amp;(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean AND operation (polygon set intersection).&nbsp; Accepts two
+ objects that model polygon_45_set or one of its refinements.&nbsp; O( n
+ log n) runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_45_set_view <b>operator</b>*(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator&amp;.&nbsp; The multiplication symbol is also used for
+ AND operations in Boolean logic expressions.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_45_set_view <b>operator</b>^(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean XOR operation (polygon set disjoint-union).&nbsp; Accepts
+ two objects that model polygon_45_set or one of its refinements.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_45_set_view <b>operator</b>-(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean SUBTRACT operation (polygon set difference).&nbsp; Accepts
+ two objects that model polygon_45_set or one of its refinements.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>|=(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator|, but with self assignment, left operand must model
+ polygon_45_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>+=(T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator+, but with self assignment, left operand must model
+ polygon_45_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>&amp;=(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator&amp;, but with self assignment, left operand must model
+ polygon_45_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>*=(T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator*, but with self assignment, left operand must model
+ polygon_45_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>^=(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator^, but with self assignment, left operand must model
+ polygon_45_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>-=(T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator-, but with self assignment, left operand must model
+ polygon_45_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1&gt;<br>
+ T1 <b>operator</b>+(const T1&amp;, coordinate_type bloating)</font></td>
+ <td>Performs resize operation, inflating by bloating ammount.&nbsp; If
+ negative the result is a shrink instead of bloat.&nbsp; Note: returns
+ result by value.&nbsp; O( n log n) runtime complexity and O(n) memory
+ wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1 <b>operator</b>-(const T1&amp;, coordinate_type shrinking)</font></td>
+ <td>Performs resize operation, deflating by bloating ammount.&nbsp; If
+ negative the result is a bloat instead of shrink.&nbsp; Note: returns
+ result by value.&nbsp; O( n log n) runtime complexity and O(n) memory
+ wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>+=(const T1&amp;, coordinate_type bloating)</font></td>
+ <td>Performs resize operation, inflating by bloating ammount.&nbsp; If
+ negative the result is a shrink instead of bloat.&nbsp; Returns
+ reference to modified argument.&nbsp; O( n log n) runtime complexity and
+ O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>-=(const T1&amp;, coordinate_type shrinking)</font></td>
+ <td>Performs resize operation, deflating by bloating ammount.&nbsp; If
+ negative the result is a bloat instead of shrink.&nbsp; Returns
+ reference to modified argument.&nbsp; O( n log n) runtime complexity and
+ O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ </table>
+<h2>Functions</h2>
+<table border="1" width="100%" id="table3">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; lvalue, const T2&amp; rvalue)</font></td>
+ <td>Eliminates overlaps in geometry and copies from an object that
+ models polygon_45_set or any of its refinements into an object that
+ models polygon_45_set.&nbsp; O( n log n) runtime complexity and O(n)
+ memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>equivalence</b>(const T1&amp; lvalue, const T2&amp; rvalue) </font></td>
+ <td>Returns true if an object that models polygon_45_set or one of its
+ refinements covers the exact same geometric regions as another object
+ that models polygon_45_set or one of its refinements.&nbsp; For example:
+ two of polygon_45 objects.&nbsp; O( n log n) runtime complexity and O(n)
+ memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ output_container_type, typename T&gt;<br>
+ void <b>get_trapezoids</b>(output_container_type&amp; output, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T&amp; polygon_set)</font></td>
+ <td>Output container is expected to be a standard container.&nbsp;
+ Slices geometry of an object that models polygon_45_set or one of its
+ refinements into non overlapping trapezoids along a vertical slicing
+ orientation and appends them to the
+ output, which must have a value type that models polygon_45,
+ polygon_45_with_holes, polygon or polygon_with_holes.&nbsp;&nbsp; O( n
+ log n) runtime complexity and O(n) memory wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ output_container_type, typename T&gt;<br>
+ void <b>get_trapezoids</b>(output_container_type&amp; output, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T&amp; polygon_set,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orientation_2d orient)</font></td>
+ <td>Output container is expected to be a standard container.&nbsp;
+ Slices geometry of an object that models polygon_45_set or one of its
+ refinements into non overlapping trapezoids along a the specified slicing
+ orientation and appends them to the
+ output, which must have a value type that models polygon_45,
+ polygon_45_with_holes, polygon or polygon_with_holes.&nbsp;&nbsp; O( n
+ log n) runtime complexity and O(n) memory wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ polygon_set_type&gt;<br>
+ void <b>clear</b>(polygon_set_type&amp; polygon_set)</font></td>
+ <td>Makes the object empty of geometry.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ polygon_set_type&gt;<br>
+ bool <b>empty</b>(const polygon_set_type&amp; polygon_set)</font></td>
+ <td>Checks whether the object is empty of geometry.&nbsp; Polygons that
+ are completely covered by holes will result in empty returning true.&nbsp;&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ rectangle_type&gt;<br>
+ bool <b>extents</b>(rectangle_type&amp; extents_rectangle, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const
+ T&amp; polygon_set)</font></td>
+ <td>Computes bounding box of an object that models polygon_45_set and
+ stores it in an object that models rectangle.&nbsp; If the polygon set
+ is empty returns false.&nbsp; If there are holes outside of shells they
+ do not contribute to the extents of the polygon set.&nbsp;&nbsp; O( n
+ log n) runtime complexity and O(n) memory wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ area_type <b>area</b>(const T&amp; polygon_set)</font></td>
+ <td>Computes the area covered by geometry in an object that models
+ polygon_45_set.&nbsp;&nbsp; O( n log n) runtime complexity and O(n)
+ memory wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>interact</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Given an object that models polygon_45_set and an object that models
+ polygon_45_set or one of its refinements, modifies a to retain only
+ regions that overlap or touch regions in b.&nbsp;&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices plus intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>self_intersect</b>(T&amp; polygon_set)</font></td>
+ <td>Given an object that models polygon_45_set that has self overlapping
+ regions, modifies the argument to contain only the regions of overlap.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>self_xor</b>(T&amp; polygon_set)</font></td>
+ <td>Given an object that models polygon_45_set that has self overlapping
+ regions, modifies the argument to contain only the regions that do not
+ overlap.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; polygon_set, unsigned_area_type bloating)</font></td>
+ <td>Same as getting all the polygons, bloating them and putting them
+ back.&nbsp; O( n log n) runtime complexity and O(n) memory wrt vertices
+ + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; polygon_set, unsigned_area_type shrinking)</font></td>
+ <td>Same as getting all the polygons, shrinking them and overwriting
+ the polygon set with the resulting regions.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ coord_type&gt;<br>
+ T&amp; <b>resize</b>(T&amp; polygon_set, coord_type resizing,<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ RoundingOption rounding = CLOSEST, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CornerOption corner = INTERSECTION)</font></td>
+ <td>Same as bloat if resizing is positive, same as shrink if resizing is
+ negative.&nbsp; RoundingOption is an enum that controls snapping of
+ non-integer results of resizing 45 degree edges.&nbsp; CornerOption is
+ an enum that controls how corner filling is performed.&nbsp;
+ polygon_45_set_data.hpp defines these enums.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>grow_and</b>(T&amp; polygon_set, unsigned_area_type bloating)</font></td>
+ <td>Same as bloating non-overlapping regions and then applying self
+ intersect to retain only the overlaps introduced by the bloat.&nbsp; O(
+ n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>scale_up</b>(T&amp; polygon_set, unsigned_area_type factor)</font></td>
+ <td>Scales geometry up by unsigned factor.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>scale_down</b>(T&amp; polygon_set, unsigned_area_type factor)</font></td>
+ <td>Scales geometry down by unsigned factor.&nbsp; Snaps 45 degree edges
+ back to 45 degrees after division truncation leads to small changes in
+ angle.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename scaling_type&gt;<br>
+T&amp; <b>scale</b>(polygon_set_type&amp; polygon_set, double scaling)</font></td>
+ <td>Scales geometry by multiplying by floating point factor.&nbsp;&nbsp;
+ Snaps 45 degree edges back to 45 degrees after truncation of fractional
+ results of multiply leads to small changes in angle.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename transformation_type&gt;<br>
+T&amp; <b>transform</b>(T&amp; polygon_set,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const
+transformation_type&amp; transformation)</font></td>
+ <td>Applies transformation.transform() on all vertices.&nbsp; O( n log
+ n) runtime complexity and O(n) memory wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>keep</b>(T&amp; polygon_set, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type min_area,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type max_area,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type min_width,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type max_width,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type min_height,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type max_height)</font></td>
+ <td>Retains only regions that satisfy the min/max criteria in the
+ argument list.&nbsp; Note: useful for visualization to cull too small
+ polygons.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices.</td>
+ </tr>
+ </table>
+ <h1>Polygon 45 Set Data Object</h1>
+
+<p>
+<p>The polygon 45 set data type encapsulates the internal data format that
+serves as the input to the sweep-line algorithm that implements polygon-clipping
+Boolean operations.&nbsp; It also internally keeps track of whether that data
+has been sorted or scanned and maintains the invariant that when its flags
+indicate that the data is sorted or scanned the data has not been changed to
+violate that assumption.&nbsp; Using the Polygon 45 Set Data type directly can
+be more efficient than using lists and vectors of polygons in the functions
+above because of the invariants it can enforce which provide the opportunity to
+maintain the data is sorted form rather than going all the way out to polygons
+then resorting those vertices for a subsequent operation.</p>
+<p>The declaration of Polygon 45 Set Data is the following:</p>
+<p><font face="Courier New">template &lt;typename T&gt;<br>
+class polygon_45_set_data;</font></p>
+<p>The class is parameterized on the coordinate data type.&nbsp; Algorithms that
+benefit from knowledge of the invariants enforced by the class are implemented
+as member functions to provide them access to information about those
+invariants.&nbsp; </p>
+<h2>Member Functions</h2>
+<table border="1" width="100%" id="table4">
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_45_set_data</b>()</font></td>
+ <td>Default constructor. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<br>
+ <b>polygon_45_set_data</b>(iT input_begin, iT
+ input_end)</font></td>
+ <td>Construct from an iterator range of
+ insertable objects.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+ <b>polygon_45_set_data</b>(const polygon_45_set_data&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">template &lt;typename l, typename r, typename op&gt;<br>
+<b>polygon_45_set_data</b>(const polygon_45_set_view&lt;l,r,op&gt;&amp;
+t)</font></td>
+ <td>Copy construct from a Boolean operator template.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">polygon_45_set_data&amp; <br><b>operator=</b>(const polygon_45_set_data&amp; that)</font></td>
+ <td>Assignment from another polygon set, may change scanning
+ orientation.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">template &lt;typename l, typename r, typename op&gt;<br>
+polygon_45_set_data&amp; <br><b>operator=</b>(const polygon_45_set_view&lt;l, r,
+op&gt;&amp; that)</font></td>
+ <td>Assignment from a Boolean operator template.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename geometry_object&gt;<br>
+polygon_45_set_data&amp; <b>operator=</b>(const geometry_object&amp; geo)</font></td>
+ <td>Assignment from an insertable object.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename iT&gt;<br>
+void <b>insert</b>(iT input_begin, iT input_end, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool is_hole = false)</font></td>
+ <td>Insert objects of an iterator range.&nbsp; If is_hole is true
+ inserts subtractive regions.&nbsp; Linear wrt the number of vertices
+ added.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+void <b>insert</b>(const polygon_45_set_data&amp; polygon_set, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool is_hole
+= false)</font></td>
+ <td>Insert a polygon set.&nbsp; Linear wrt the number of vertices added.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename geometry_type&gt;<br>
+void <b>insert</b>(const geometry_type&amp; geometry_object, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool is_hole
+= false)</font></td>
+ <td>Insert a geometry object, if is_hole is true then the inserted
+ region is subtractive rather than additive.&nbsp; Linear wrt the number
+ of vertices added.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get</b>(output_container&amp; output) const</font></td>
+ <td>Expects a standard container of geometry objects.&nbsp; Will scan
+ and eliminate overlaps.&nbsp; Converts polygon set geometry to objects
+ of that type and appends them to the container.&nbsp; Polygons will be
+ output with counterclockwise winding, hole polygons will be output with
+ clockwise winding.&nbsp; The last vertex of an output polygon is not the
+ duplicate of the first, and the number of points is equal to the number
+ of edges.&nbsp; O(n log n) runtime and O(n) memory wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get_polygons</b>(output_container&amp; output) const</font></td>
+ <td>Expects a standard container of polygon objects.&nbsp; Will scan and
+ eliminate overlaps.&nbsp; Converts polygon set geometry to polygons and
+ appends them to the container.&nbsp; Polygons will have holes fractured
+ out to the outer boundary along the positive y direction.&nbsp; O(n log
+ n) runtime and O(n) memory wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get_polygons_with_holes</b>(output_container&amp; o) const</font></td>
+ <td>Expects a standard container of polygon with holes objects.&nbsp; Will scan and
+ eliminate overlaps.&nbsp; Converts polygon set geometry to polygons and
+ appends them to the container.&nbsp; O(n log n) runtime and O(n) memory
+ wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get_trapezoids</b>(output_container&amp; output) const</font></td>
+ <td>Expects a standard container of polygon objects.&nbsp; Will scan
+ and eliminate overlaps.&nbsp; Slices polygon set geometry to trapezoids
+ vertically and appends them to the container.&nbsp; O(n log n) runtime
+ and O(n) memory wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get_trapezoids</b>(output_container&amp; output, <br>&nbsp; orientation_2d
+slicing_orientation) const </font>
+ </td>
+ <td>Expects a standard container of polygon objects.&nbsp; Will scan
+ and eliminate overlaps.&nbsp; Slices polygon set geometry to trapezoids
+ along the given orientation and appends them to the container.&nbsp; O(n
+ log n) runtime and O(n) memory wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+bool <b>operator==</b>(const polygon_45_set_data&amp; p) const</font></td>
+ <td>Once scanned the data representation of geometry within a polygon
+ set is in a mathematically canonical form.&nbsp; Comparison between two
+ sets is therefore a linear time operation once they are in the scanned
+ state. Will scan and eliminate overlaps in both polygon sets.&nbsp; O(n
+ log n) runtime and O(n) memory wrt. vertices + intersections the first
+ time and linear runtime and constant memory subsequently.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+bool <b>operator!=</b>(const polygon_45_set_data&amp; p) const</font></td>
+ <td>Inverse logic of equivalence operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>clear</b>()</font></td>
+ <td>Make the polygon set empty.&nbsp; Note: does not de-allocate memory.&nbsp;
+ Use shrink to fit idiom and assign default constructed polygon set to
+ de-allocate.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">bool <b>empty</b>() const </font>
+ </td>
+ <td>Check whether the polygon set contains no geometry.&nbsp; Will scan
+ and eliminate overlaps because subtractive regions might make the
+ polygon set empty.&nbsp; O(n log n) runtime and O(n) memory wrt.
+ vertices + intersections the first time and linear runtime and constant
+ memory subsequently.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">bool <b>is_manhattan</b>()
+ const</font></td>
+ <td>Returns in constant time the information about whether the geometry
+ contains only Manhattan (axis-parallel rectilinear) edges.&nbsp;
+ Constant time.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>clean</b>() const</font></td>
+ <td>Scan and eliminate overlaps.&nbsp; O(n log n) runtime and O(n)
+ memory wrt. vertices + intersections the first time and linear runtime
+ and constant memory subsequently.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename input_iterator_type&gt;<br>
+void <b>set</b>(input_iterator_type input_begin, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input_iterator_type input_end) </font>
+ </td>
+ <td>Overwrite geometry in polygon set with insertable objects in the
+ iterator range.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename rectangle_type&gt;<br>
+bool <b>extents</b>(rectangle_type&amp; extents_rectangle) const</font></td>
+ <td>Given an object that models rectangle, scans and eliminates overlaps
+ in the polygon set because subtractive regions may alter its extents
+ then computes the bounding box and assigns it to extents_rectangle.&nbsp;
+ O(n log n) runtime and O(n) memory wrt. vertices the first time and
+ linear runtime and constant memory subsequently.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+polygon_45_set_data&amp;<br>
+<b>resize</b>(coord_type resizing,<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RoundingOption rounding = CLOSEST, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CornerOption
+ corner = INTERSECTION)</font></td>
+ <td>Same as bloat if resizing is positive, same as shrink if resizing is
+ negative.&nbsp; RoundingOption is an enum that controls snapping of
+ non-integer results of resizing 45 degree edges.&nbsp; CornerOption is
+ an enum that controls how corner filling is performed.&nbsp;
+ polygon_45_set_data.hpp defines these enums.&nbsp; O(n log n) runtime
+ and O(n) memory wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename transformation_type&gt;<br>
+polygon_45_set_data&amp; <br><b>transform</b>(const transformation_type&amp; transformation) </font>
+ </td>
+ <td>Applies transformation.transform() on vertices stored within the
+ polygon set.&nbsp; O(n log n) runtime and O(n) memory wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+polygon_45_set_data&amp; <b>scale_up</b>(unsigned_area_type factor)</font></td>
+ <td>Scales vertices stored within the polygon set up by factor.&nbsp;
+ Linear wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">polygon_45_set_data&amp; <b>scale_down</b>(unsigned_area_type
+factor)</font>&nbsp;</td>
+ <td>Scales vertices stored within the polygon set down by factor.&nbsp;
+ Linear wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_45_set_data&amp; <b>scale</b>(double factor) </font></td>
+ <td>Scales vertices stored within the polygon set by floating point
+ factor.&nbsp; Linear wrt vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_45_set_data&amp; <b>self_xor</b>()</font></td>
+ <td>Retain only non-overlapping regions of geometry within polygon set.&nbsp;
+ O(n log n) runtime and O(n) memory wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_45_set_data&amp; <b>self_intersect</b>()</font></td>
+ <td>Retain only overlapping regions of geometry within a polygon set.&nbsp;
+ O(n log n) runtime and O(n) memory wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">bool <b>has_error_data</b>()
+ const </font></td>
+ <td>Returns true if non-integer intersections resulted in small
+ artifacts in the output of a boolean.&nbsp; Constant time.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">std::size_t <b>error_count</b>()
+ const</font></td>
+ <td>Returns the number of artifacts that may potentially be present in
+ the output due to non-integer intersections.&nbsp; Constant time.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>get_error_data</b>(polygon_45_set_data&amp;
+ p) const</font></td>
+ <td>Populates the input polygon set with 1x1 unit squares that bound the
+ error that may be present in the output due to non-integer
+ intersections.&nbsp; Linear wrt. vertices of error data.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_45_set_data&amp; <b>self_intersect</b>()</font></td>
+ <td>Retain only overlapping regions of geometry within a polygon set.&nbsp;
+ O(n log n) runtime and O(n) memory wrt. vertices + intersections.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table6">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_polygon_45_with_holes_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_45_with_holes_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,399 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Polygon 45 With Holes Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon 45 With Holes Concept</h1>
+
+<p>
+<p>The polygon_45_with_holes concept tag is <font face="Courier New">
+polygon_45_with_holes_concept</font></p>
+<p>
+To register a user defined type as a model of
+<font face="Times New Roman">polygon_45_with_holes </font>concept, specialize
+the geometry concept meta-function for that type.&nbsp; In the example below
+CPolygon45WithHoles is registered as a model of polygon<font face="Times New Roman">_45_with_holes&nbsp;</font> concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CPolygon45WithHoles&gt; { typedef polygon_45_with_holes_concept type; };</font><p>
+<font face="Times New Roman">The semantic of a polygon_45_with_holes is a
+polygon_45 that it can provide iterators over holes that are also polygon_45.&nbsp;
+A mutable polygon_45_with_holes must also be able to set its geometry based on
+an interator range over polygon_45 holes.&nbsp; There is no convention of
+winding of holes enforced within the library. </font><p>
+<font face="Times New Roman">Below is shown the default polygon with holes
+traits.&nbsp; Specialization of these traits is required for types that don't
+conform to the default behavior.</font><p><font face="Courier New">template &lt;typename
+T, typename enable = void&gt;<br>
+struct polygon_with_holes_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::iterator_holes_type
+iterator_holes_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::hole_type hole_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_holes_type begin_holes(const T&amp;
+t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.begin_holes();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_holes_type end_holes(const T&amp; t)
+{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.end_holes();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline unsigned int size_holes(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.size_holes();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p><font face="Courier New">template &lt;typename T, typename enable = void&gt;<br>
+struct polygon_with_holes_mutable_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; template &lt;typename iT&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline T&amp; set_holes(T&amp; t, iT inputBegin, iT
+inputEnd) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.set_holes(inputBegin,
+inputEnd);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p>An object that is a model of <font face="Courier New">
+polygon_45_with_holes_concept</font> can be viewed as a model of any of its
+refinements if it is determined at runtime to conform to the restriction of
+those concepts.&nbsp; This concept casting is accomplished through the
+<font face="Courier New">view_as&lt;&gt;()</font> function.</p>
+<p><font face="Courier New">view_as&lt;rectangle_concept&gt;(polygon_45_with_holes_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_90_concept&gt;(polygon_45_with_holes_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_90_with_holes_concept&gt;(polygon_45_with_holes_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_45_concept&gt;(polygon_45_with_holes_object)</font></p>
+<p>The return value of <font face="Courier New">view_as&lt;&gt;()</font> can be
+passed into any interface that expects an object of the conceptual type
+specified in its template parameter. </p>
+<h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>begin_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_45_with_holes.&nbsp;
+ Returns the begin iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>end_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_45_with_holes.&nbsp;
+ Returns the end iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ hole_iterator_type <b>begin_holes</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_45_with_holes.&nbsp;
+ Returns the begin iterator over the range of coordinates that correspond
+ to horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ hole_iterator_type <b>end_holes</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_45_with_holes.&nbsp;
+ Returns the end iterator over the range of coordinates that correspond
+ to horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_points</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_45_with_holes.&nbsp;&nbsp;
+ Sets the polygon to the point data range [b,e) that corresponds to
+ vertices of a polygon.&nbsp; </font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_holes</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_45_with_holes.&nbsp;&nbsp;
+ Sets the polygon holes to the hole data range [b,e)</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ unsigned int <b>size</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Returns the number of edges in the
+ outer shell of the polygon_45_with_holes.&nbsp; Does not include sizes
+ of the holes.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
+ <td>Copies data from right object that models polygon_45_with_holes or
+ one of its refinements into left object
+ that models polygon_45_with_holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ bool <b>contains</b>(const T&amp;, const point_type&amp; point, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch=true)</font></td>
+ <td>Given an object that models polygon_45_with_holes and an object that models
+ point, returns true
+ if the polygon shell contains the point and one of its holes does not
+ contain the point.&nbsp; If the consider_touch
+ flag is true will return true if the point lies along the boundary of
+ the polygon or one of its holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">// get the center coordinate<br>
+ template &lt;typename T, typename point_type&gt;<br>
+ void <b>center</b>(point_type&amp; p, const T&amp; polygon)</font></td>
+ <td>Sets object that models point to the center point of the bounding
+ box of an object that models polygon_45_with_holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename rectangle_type&gt;<br>
+ bool <b>extents</b>(rectangle_type&amp; bbox, const T&amp; polygon)</font></td>
+ <td>Sets object that models rectangle to the bounding box of an object
+ that models polygon_45_with_holes and returns true.&nbsp; Returns false
+ and leaves bbox unchanged if polygon is empty.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ manhattan_area_type <b>area</b>(const T&amp; polygon)</font></td>
+ <td>Returns the area of an object
+ that models polygon_45_with_holes including subtracting the area of its
+ holes from the area of the outer shell polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ direction_1d <b>winding</b>(const T&amp; polygon)</font></td>
+ <td>Returns the winding direction of an object
+ that models polygon_45_with_holes, LOW == CLOCKWISE, HIGH =
+ COUNTERCLOCKWISE.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_difference <b>perimeter</b>(const T&amp; polygon)</font></td>
+ <td>Returns the perimeter length of an object
+ that models polygon_45, including the perimeters of the holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename transform_type&gt;<br>
+ T&amp; <b>transform</b>(T&amp; polygon, const transform_type&amp;)</font></td>
+ <td>Applies transform() on the vertices of polygon and sets the polygon to that described by the result of
+ transforming its vertices.&nbsp; Also applies transform() on the holes
+ of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_up</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales up outer shell and holes of an object that models
+ polygon_45 by unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_down</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales down outer shell and holes of an object that models
+ polygon_45 by unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, scaling_type&gt;<br>
+ T&amp; <b>scale</b>(T&amp; rectangle, double scaling) </font></td>
+ <td>Scales outer shell and holes of an object that models polygon_45 by
+ floating point factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>move</b>(T&amp; polygon, orientation_2d,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_difference displacement)</font></td>
+ <td>Adds displacement value to coordinate indicated by orientation_2d of
+ vertices of an object that models polygon_45 .</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename polygon_type, typename point_type&gt;<br>
+ polygon_type&amp; <b>convolve</b>(polygon_type&amp; polygon,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const point_type&amp; point)</font></td>
+ <td>Convolves coordinate values of point with the outer shell and holes of an
+ object that models polygon_45_with_holes.</td>
+ </tr>
+ </table>
+ <h1>Polygon 45 With Holes Data</h1>
+
+<p>
+<p>The library provides a model of polygon 45 with holes concept declared
+<font face="Courier New">
+template&lt;typename T&gt; polygon_45_with_holes_data </font>where T is the
+coordinate type.</p>
+<p>This data type is used internally when a 45 degree polygon with holes is
+needed and is available to the library user who finds it convenient to use a
+library polygon data type instead of providing their own.&nbsp; The data type is
+implemented to be convenient to use with the library traits.</p>
+<h2>Members</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><b><font face="Courier New">geometry_type</font></b></td>
+ <td><font face="Times New Roman">polygon_45_with_holes_concept</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">coordinate_type</font></b></td>
+ <td><font face="Times New Roman">T</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">iterator_type</font></b></td>
+ <td>Iterator over vertices point_data&lt;T&gt; vertices of polygon</td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">iterator_holes_type</font></b></td>
+ <td><font face="Times New Roman">Iterator over hole polygons of type
+ polygon_45_data&lt;T&gt;.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_45_with_holes_data</b>()</font></td>
+ <td><font face="Times New Roman">Default constructs the </font>polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_45_with_holes_data</b>(const
+ polygon_45_with_holes_data&amp; that)</font></td>
+ <td><font face="Times New Roman">Copy construct</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_45_with_holes_data&amp; <b>
+ <br>operator=</b>(const polygon_45_with_holes_data&amp; that)</font></td>
+ <td>Assignment operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b> </b>
+ polygon_45_with_holes_data&amp;<b>&nbsp;
+ <br> operator=</b>(const T2&amp; that) const</font></td>
+ <td>Assign from an object that is a model of polygon 45 with holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>begin</b>()
+ const</font></td>
+ <td>Get the begin iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>end</b>()
+ const</font></td>
+ <td>Get the end iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_hole_type <b>begin_holes</b>()
+ const</font></td>
+ <td>Get the begin compact iterator over non-redundant coordinates of the
+ polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_hole_type <b>end_holes</b>()
+ const</font></td>
+ <td>Get the end compact iterator over non-redundant coordinates of the
+ polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">std::size_t <b>size</b>() const</font></td>
+ <td>Get the number of elements in the sequence stored to the polygon,
+ usually equal to the number of edges of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">std::size_t <b>size_holes</b>() const</font></td>
+ <td>Get the number of holes in the polygon</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set</b>(iT begin_points, iT end_points)</font></td>
+ <td>Sets the polygon to the iterator range of points.&nbsp; No check is
+ performed to ensure the points describe a 45 degree figure.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set_holes</b>(iT begin_holes, iT end_choless)</font></td>
+ <td>Sets the polygon holes the iterator range of hole polygons.&nbsp; These
+ polygons in the input range may be either polygon_45_data or
+ polygon_45_with_holes_data or any type that provides begin and end
+ member functions to iterate over point_data&lt;T&gt;.</td>
+ </tr>
+</table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table3">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_polygon_90_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_90_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,395 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Polygon 90 Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon 90 Concept</h1>
+
+<p>
+<p>The polygon_90 concept tag is <font face="Courier New">
+polygon_90_concept</font></p>
+<p>
+To register a user defined type as a model of
+<font face="Times New Roman">polygon_90 </font>concept, specialize the
+geometry concept meta-function for that type.&nbsp; In the example below CPolygon90 is registered as a model of
+polygon_90&nbsp; concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CPolygon90&gt; { typedef polygon_90_concept type; };</font><p>
+<font face="Times New Roman">The semantic of a polygon_90 is that it can provide
+iterators over the x and y coordinates that correspond to its horizontal and
+vertical sides, starting with an x coordinate.&nbsp; A mutable polygon_90 must
+also be able to set its geometry based on an interator range over such
+coordinates.&nbsp; Since most polygons use vertex points in internal storage
+iterator adaptors for converting to and from point sequences are provided in
+iterator_points_to_compact.hpp and iterator_compact_to_points.hpp to aid in the
+specialization of polygon_90_traits.&nbsp; A std::vector&lt;int&gt; or std::list&lt;int&gt;
+could be made models of polygon_90_concept by simply providing access to their
+iterators through traits.&nbsp; Library functions that create polygon objects
+require that those objects provide a default constructor.</font><p>
+<font face="Times New Roman">Below is shown the default polygon traits.&nbsp;
+Specialization of these traits is required for types that don't conform to the
+default behavior.&nbsp; Note that these traits are also used by the
+polygon_90_with_holes concept.</font><p><font face="Courier New">template &lt;typename
+T&gt;<br>
+struct polygon_90_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::coordinate_type coordinate_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::compact_iterator_type
+compact_iterator_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline compact_iterator_type begin_compact(const
+T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.begin_compact();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline compact_iterator_type end_compact(const
+T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.end_compact();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline unsigned int size(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.size();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline winding_direction winding(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return unknown_winding;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p><font face="Courier New">template &lt;typename T&gt;<br>
+struct polygon_90_mutable_traits { <br>
+&nbsp;&nbsp;&nbsp;&nbsp; template &lt;typename iT&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline T&amp; set_compact(T&amp; t, iT input_begin, iT
+input_end) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.set_compact(input_begin,
+input_end);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }</font><br>
+<font face="Courier New">};</font></p>
+<p>An object that is a model of <font face="Courier New">
+polygon_90_concept</font> can be viewed as a model of any of its
+refinements if it is determined at runtime to conform to the restriction of
+those concepts.&nbsp; This concept casting is accomplished through the
+<font face="Courier New">view_as&lt;&gt;()</font> function.</p>
+<p><font face="Courier New">view_as&lt;rectangle_concept&gt;(polygon_90_object)</font></p>
+<p>The return value of <font face="Courier New">view_as&lt;&gt;()</font> can be
+passed into any interface that expects an object of the conceptual type
+specified in its template parameter.</p>
+<h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ compact_iterator_type <b>begin_compact</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_90.&nbsp;
+ Returns the begin iterator over the range of coordinates that correspond
+ to horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ compact_iterator_type <b>end_compact</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_90.&nbsp;
+ Returns the end iterator over the range of coordinates that correspond
+ to horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>begin_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_90.&nbsp;
+ Returns the begin iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>end_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_90.&nbsp;
+ Returns the end iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_compact</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_90.&nbsp;&nbsp;
+ Sets the polygon to the coordinate data range [b,e) that corresponds to
+ .horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_points</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_90.&nbsp;&nbsp;
+ Sets the polygon to the point data range [b,e) that corresponds to
+ vertices of a manhattan polygon.&nbsp; Non-manhattan edges between
+ successive input points results in undefined behavior.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ unsigned int <b>size</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Returns the number of edges in the
+ polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
+ <td>Copies data from right object that models polygon_90 into left object
+ that models polygon_90.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ bool <b>contains</b>(const T&amp;, const point_type&amp; point, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch=true)</font></td>
+ <td>Given an object that models polygon_90 and an object that models
+ point, returns true
+ if the polygon contains the point.&nbsp; If the consider_touch
+ flag is true will return true if the point lies along the boundary of
+ the polygon.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">// get the center coordinate<br>
+ template &lt;typename T, typename point_type&gt;<br>
+ void <b>center</b>(point_type&amp; p, const T&amp; polygon)</font></td>
+ <td>Sets object that models point to the center point of the bounding
+ box of an object that models polygon_90.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename rectangle_type&gt;<br>
+ bool <b>extents</b>(rectangle_type&amp; bbox, const T&amp; polygon)</font></td>
+ <td>Sets object that models rectangle to the bounding box of an object
+ that models polygon_90 and returns true.&nbsp; Returns false and leaves
+ bbox unchanged if polygon is empty.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ manhattan_area_type <b>area</b>(const T&amp; polygon)</font></td>
+ <td>Returns the area of an object
+ that models polygon_90.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ direction_1d <b>winding</b>(const T&amp; polygon)</font></td>
+ <td>Returns the winding direction of an object
+ that models polygon_90, LOW == CLOCKWISE, HIGH = COUNTERCLOCKWISE.&nbsp;
+ Complexity depends upon winding trait.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_difference <b>perimeter</b>(const T&amp; polygon)</font></td>
+ <td>Returns the perimeter length of an object
+ that models polygon_90.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename transform_type&gt;<br>
+ T&amp; <b>transform</b>(T&amp; polygon, const transform_type&amp;)</font></td>
+ <td>Applies transform() on the vertices of polygon and sets the polygon to that described by the result of
+ transforming its vertices.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_up</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales up coordinate of an object that models
+ polygon_90 by unsigned factor.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_down</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales down coordinates of an object that models
+ polygon_90 by unsigned factor.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, scaling_type&gt;<br>
+ T&amp; <b>scale</b>(T&amp; rectangle, double scaling) </font></td>
+ <td>Scales coordinates of an object that models polygon_90 by floating
+ point factor.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>move</b>(T&amp; polygon, orientation_2d,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_difference displacement)</font></td>
+ <td>Adds displacement value to coordinate indicated by orientation_2d of
+ vertices of an object that models polygon_90 .&nbsp; Linear wrt.
+ vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename polygon_type, typename point_type&gt;<br>
+ polygon_type&amp; <b>convolve</b>(polygon_type&amp; polygon,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const point_type&amp; point)</font></td>
+ <td>Convolves coordinate values of point with vertices of an
+ object that models polygon_90.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ </table>
+ <h1>Polygon 90 Data</h1>
+
+<p>
+<p>The library provides a model of polygon 90 concept declared
+<font face="Courier New">
+template&lt;typename T&gt; polygon_90_data </font>where T is the coordinate type.</p>
+<p>This data type is used internally when a Manhattan polygon is needed and is
+available to the library user who finds it convenient to use a library polygon
+data type instead of providing their own.&nbsp; The data type is implemented to
+be convenient to use with the library traits.</p>
+<h2>Members</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><b><font face="Courier New">geometry_type</font></b></td>
+ <td><font face="Times New Roman">polygon_90_concept</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">coordinate_type</font></b></td>
+ <td><font face="Times New Roman">T</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">iterator_type</font></b></td>
+ <td>Iterator over vertices point_data&lt;T&gt; vertices of polygon</td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">compact_iterator_type</font></b></td>
+ <td><font face="Times New Roman">Iterator over non-redundant coordinates
+ of the polygon, alternating x, y, x, y starting with an x, where each x
+ corresponds to a vertical edge and each y corresponds to a horizontal
+ edge.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_90_data</b>()</font></td>
+ <td><font face="Times New Roman">Default constructs the </font>polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_90_data</b>(const
+ polygon_90_data&amp; that)</font></td>
+ <td><font face="Times New Roman">Copy construct</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_90_data&amp; <b>operator=</b>(const
+ polygon_90_data&amp; that)</font></td>
+ <td>Assignment operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>&nbsp;
+ <br> </b>polygon_90_data&amp; <b>operator=</b>(const T2&amp; that) const</font></td>
+ <td>Assign from an object that is a model of polygon 90.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>begin</b>()
+ const</font></td>
+ <td>Get the begin iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>end</b>()
+ const</font></td>
+ <td>Get the end iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">compact_iterator_type <b>
+ begin_compact</b>() const</font></td>
+ <td>Get the begin compact iterator over non-redundant coordinates of the
+ polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">compact_iterator_type <b>
+ end_compact</b>() const</font></td>
+ <td>Get the end compact iterator over non-redundant coordinates of the
+ polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">std::size_t <b>size</b>() const</font></td>
+ <td>Get the number of elements in the sequence stored to the polygon,
+ usually equal to the number of edges of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set</b>(iT begin_points, iT end_points)</font></td>
+ <td>Sets the polygon to the iterator range of points.&nbsp; No check is
+ performed to ensure the points describe a Manhattan figure, every other
+ x and y value of the points is used to initialize the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set_compact</b>(iT begin_coords, iT end_coords)</font></td>
+ <td>Sets the polygon to the iterator range of coordinates.&nbsp; These
+ coordinates correspond to the x values of vertical edges and y values of
+ horizontal edges.&nbsp; It is expected that the sequence start with an x
+ value and proceed x then y then x then y.</td>
+ </tr>
+</table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table3">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_polygon_90_set_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_90_set_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,901 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Polygon 90 Set Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon 90 Set Concept</h1>
+
+<p>
+<p>The polygon_90_set concept tag is <font face="Courier New">
+polygon_90_set_concept</font></p>
+<p>
+<font face="Times New Roman">The semantic of a polygon_90_set is zero or more
+Manhattan geometry regions.</font><p>
+<font face="Times New Roman">The motivation for providing the
+polygon_90_set_concept is that it is a very common special case of planar
+geometry which afford the implementation of a variety of optimizations on the
+general planar geometry algorithms.&nbsp; Manhattan geometry processing by the
+polygon_90_set_concept can be 100X faster than arbitrary angle polygon
+manipulation.&nbsp; Because the performance benefits are so large and the
+special case is important enough, the library provides these performance
+benefits for those application domains that require them.</font><p>Users are recommended to use std::vector and std::list of user defined polygons
+or library provided polygon_90_set_data&lt;coordinate_type&gt; objects.&nbsp; Lists
+and vectors of models of polygon_90_concept or polygon_90_with_holes_concept or
+rectangle_concept are automatically models of polygon_90_set_concept.</p>
+<h2>Operators</h2>
+<p>The return type of some operators is the <font face="Courier New">polygon_90_set_view</font>
+operator template type.&nbsp; This type is itself a model of the polygon_90_set
+concept, but furthermore can be used as an argument to the <font face="Courier New">polygon_90_set_data</font>
+constructor and assignment operator.&nbsp; The operator template exists to
+eliminate temp copies of intermediate results when Boolean operators are chained
+together.</p>
+<p>Operators are declared inside the namespace <font face="Courier New">boost::polygon::operators</font>.</p>
+<table border="1" width="100%" id="table3">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_90_set_view <b>operator</b>|(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean OR operation (polygon set union).&nbsp; Accepts two objects
+ that model polygon_90_set or one of its refinements.&nbsp; Returns an
+ operator template that performs the operation on demand when chained or
+ or nested in a library function call such as assign().&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_90_set_view <b>operator</b>+(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator|.&nbsp; The plus sign is also used for OR
+ operations in Boolean logic expressions.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_90_set_view <b>operator</b>&amp;(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean AND operation (polygon set intersection).&nbsp; Accepts two
+ objects that model polygon_90_set or one of its refinements.&nbsp; O( n
+ log n) runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_90_set_view <b>operator</b>*(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator&amp;.&nbsp; The multiplication symbol is also used for
+ AND operations in Boolean logic expressions.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_90_set_view <b>operator</b>^(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean XOR operation (polygon set disjoint-union).&nbsp; Accepts
+ two objects that model polygon_90_set or one of its refinements.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_90_set_view <b>operator</b>-(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean SUBTRACT operation (polygon set difference).&nbsp; Accepts
+ two objects that model polygon_90_set or one of its refinements.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>|=(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator|, but with self assignment, left operand must model
+ polygon_90_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>+=(T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator+, but with self assignment, left operand must model
+ polygon_90_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>&amp;=(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator&amp;, but with self assignment, left operand must model
+ polygon_90_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>*=(T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator*, but with self assignment, left operand must model
+ polygon_90_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>^=(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator^, but with self assignment, left operand must model
+ polygon_90_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>-=(T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator-, but with self assignment, left operand must model
+ polygon_90_set and not one of it's refinements.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1&gt;<br>
+ T1 <b>operator</b>+(const T1&amp;, coordinate_type bloating)</font></td>
+ <td>Performs resize operation, inflating by bloating ammount.&nbsp; If
+ negative the result is a shrink instead of bloat.&nbsp; Note: returns
+ result by value.&nbsp; O( n log n) runtime complexity and O(n) memory
+ wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1 <b>operator</b>-(const T1&amp;, coordinate_type shrinking)</font></td>
+ <td>Performs resize operation, deflating by bloating ammount.&nbsp; If
+ negative the result is a bloat instead of shrink.&nbsp; Note: returns
+ result by value.&nbsp; O( n log n) runtime complexity and O(n) memory
+ wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>+=(const T1&amp;, coordinate_type bloating)</font></td>
+ <td>Performs resize operation, inflating by bloating ammount.&nbsp; If
+ negative the result is a shrink instead of bloat.&nbsp; Returns
+ reference to modified argument.&nbsp; O( n log n) runtime complexity and
+ O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>-=(const T1&amp;, coordinate_type shrinking)</font></td>
+ <td>Performs resize operation, deflating by bloating ammount.&nbsp; If
+ negative the result is a bloat instead of shrink.&nbsp; Returns
+ reference to modified argument.&nbsp; O( n log n) runtime complexity and
+ O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ </table>
+<h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; lvalue, const T2&amp; rvalue)</font></td>
+ <td>Eliminates overlaps in geometry and copies from an object that
+ models polygon_90_set or any of its refinements into an object that
+ models polygon_90_set.&nbsp; O( n log n) runtime complexity and O(n)
+ memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>equivalence</b>(const T1&amp; lvalue, const T2&amp; rvalue) </font></td>
+ <td>Returns true if an object that models polygon_90_set or one of its
+ refinements covers the exact same geometric regions as another object
+ that models polygon_90_set or one of its refinements.&nbsp; For example:
+ two of polygon_90 objects.&nbsp; O( n log n) runtime complexity and O(n)
+ memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ output_container_type, typename T&gt;<br>
+ void <b>get_rectangles</b>(output_container_type&amp; output, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T&amp; polygon_set)</font></td>
+ <td>Output container is expected to be a standard container.&nbsp;
+ Slices geometry of an object that models polygon_90_set or one of its
+ refinements into non overlapping rectangles and appends them to the
+ output.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ output_container_type, typename T&gt;<br>
+ void <b>get_max_rectangles</b>(output_container_type&amp; output, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T&amp; polygon_set)</font></td>
+ <td>Output container is expected to be a standard container.&nbsp; Given
+ an object that models polygon_90_set or one of its refinements finds all
+ overlapping rectangles that are maximal in area and appends them to the
+ output.&nbsp; Expected n log n runtime, worst case quadratic rutnime.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ polygon_set_type&gt;<br>
+ void <b>clear</b>(polygon_set_type&amp; polygon_set)</font></td>
+ <td>Makes the object empty of geometry.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ polygon_set_type&gt;<br>
+ bool <b>empty</b>(const polygon_set_type&amp; polygon_set)</font></td>
+ <td>Checks whether the object is empty of geometry.&nbsp; Polygons that
+ are completely covered by holes will result in empty returning true.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ rectangle_type&gt;<br>
+ bool <b>extents</b>(rectangle_type&amp; extents_rectangle, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const
+ T&amp; polygon_set)</font></td>
+ <td>Computes bounding box of an object that models polygon_90_set and
+ stores it in an object that models rectangle.&nbsp; If the polygon set
+ is empty returns false.&nbsp; If there are holes outside of shells they
+ do not contribute to the extents of the polygon set.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ manhattan_area_type <b>area</b>(const T&amp; polygon_set)</font></td>
+ <td>Computes the area covered by geometry in an object that models
+ polygon_90_set.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>interact</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Given an object that models polygon_90_set and an object that models
+ polygon_90_set or one of its refinements, modifies a to retain only
+ regions that overlap or touch regions in b.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>self_intersect</b>(T&amp; polygon_set)</font></td>
+ <td>Given an object that models polygon_90_set that has self overlapping
+ regions, modifies the argument to contain only the regions of overlap.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>self_xor</b>(T&amp; polygon_set)</font></td>
+ <td>Given an object that models polygon_90_set that has self overlapping
+ regions, modifies the argument to contain only the regions that do not
+ overlap.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; polygon_set, unsigned_area_type bloating)</font></td>
+ <td>Same as getting all the rectangles, bloating them and putting them
+ back.&nbsp; O( n log n) runtime complexity and O(n) memory wrt vertices
+ + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; polygon_set, orientation_2d orient,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type bloating)</font></td>
+ <td>Same as getting all the rectangles, bloating them and putting them
+ back.&nbsp; O( n log n) runtime complexity and O(n) memory wrt vertices
+ + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; polygon_set, orientation_2d orient,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type low_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ high_bloating)</font></td>
+ <td>Same as getting all the rectangles, bloating them and putting them
+ back.&nbsp; O( n log n) runtime complexity and O(n) memory wrt vertices
+ + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; polygon_set, direction_2d dir,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type bloating)</font></td>
+ <td>Same as getting all the rectangles, bloating them and putting them
+ back.&nbsp; O( n log n) runtime complexity and O(n) memory wrt vertices
+ + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; polygon_set, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ west_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ east_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ south_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ north_bloating)</font></td>
+ <td>Same as getting all the rectangles, bloating them and putting them
+ back.&nbsp; O( n log n) runtime complexity and O(n) memory wrt vertices
+ + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; polygon_set, unsigned_area_type shrinking)</font></td>
+ <td>Same as getting all the rectangles of the inverse, bloating them and overwriting
+ the polygon set with the resulting regions then negating.&nbsp; O( n log
+ n) runtime complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; polygon_set, orientation_2d orient,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ shrinking)</font></td>
+ <td>Same as getting all the rectangles of the inverse, bloating them and overwriting
+ the polygon set with the resulting regions then negating.&nbsp; O( n log
+ n) runtime complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; polygon_set, orientation_2d orient,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ low_shrinking,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ high_shrinking)</font></td>
+ <td>Same as getting all the rectangles of the inverse, bloating them and overwriting
+ the polygon set with the resulting regions then negating.&nbsp; O( n log
+ n) runtime complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; polygon_set, direction_2d dir,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ shrinking)</font></td>
+ <td>Same as getting all the rectangles of the inverse, bloating them and overwriting
+ the polygon set with the resulting regions then negating.&nbsp; O( n log
+ n) runtime complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; polygon_set, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ west_shrinking,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ east_shrinking,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ south_shrinking,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type
+ north_shrinking)</font></td>
+ <td>Same as getting all the rectangles of the inverse, bloating them and overwriting
+ the polygon set with the resulting regions then negating.&nbsp; O( n log
+ n) runtime complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ coord_type&gt;<br>
+ T&amp; <b>resize</b>(T&amp; polygon_set, coord_type resizing)</font></td>
+ <td>Same as bloat if resizing is positive, same as shrink if resizing is
+ negative.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ coord_type&gt;<br>
+ T&amp; <b>resize</b>(polygon_set_type&amp; polygon_set, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coord_type west, coord_type east,
+ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coord_type south, coord_type north)</font></td>
+ <td>Same as bloat if resizing is positive, same as shrink if resizing is
+ negative.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>grow_and</b>(T&amp; polygon_set, unsigned_area_type bloating)</font></td>
+ <td>Same as bloating non-overlapping regions and then applying self
+ intersect to retain only the overlaps introduced by the bloat.&nbsp; O(
+ n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>grow_and</b>(T&amp; polygon_set, orientation_2d orient,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type bloating)</font></td>
+ <td>Same as bloating non-overlapping regions and then applying self
+ intersect to retain only the overlaps introduced by the bloat.&nbsp; O(
+ n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>grow_and</b>(T&amp; polygon_set, orientation_2d orient,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type low_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type high_bloating)</font></td>
+ <td>Same as bloating non-overlapping regions and then applying self
+ intersect to retain only the overlaps introduced by the bloat.&nbsp; O(
+ n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>grow_and</b>(T&amp; polygon_set, direction_2d dir,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type bloating)</font></td>
+ <td>Same as bloating non-overlapping regions and then applying self
+ intersect to retain only the overlaps introduced by the bloat.&nbsp; O(
+ n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>grow_and</b>(T&amp; polygon_set, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type west_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type east_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type south_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type north_bloating)</font></td>
+ <td>Same as bloating non-overlapping regions and then applying self
+ intersect to retain only the overlaps introduced by the bloat.&nbsp; O(
+ n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>scale_up</b>(T&amp; polygon_set, unsigned_area_type factor)</font></td>
+ <td>Scales geometry up by unsigned factor.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>scale_down</b>(T&amp; polygon_set, unsigned_area_type factor)</font></td>
+ <td>Scales geometry down by unsigned factor.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename scaling_type&gt;<br>
+T&amp; <b>scale</b>(polygon_set_type&amp; polygon_set, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const scaling_type&amp; scaling)</font></td>
+ <td>Scales geometry by applying scaling.scale() on all vertices.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename coord_type&gt;<br>
+T&amp; <b>move</b>(T&amp; polygon_set,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orientation_2d orient, coord_type
+displacement)</font></td>
+ <td>Moves geometry by displacement amount in the orientation.&nbsp;&nbsp;&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename coord_type&gt;<br>
+T&amp; <b>move</b>(T&amp; polygon_set, coord_type x_displacement, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coord_type y_displacement)</font></td>
+ <td>Moves the geometry by x_dispacement in x and y_displacement in y.&nbsp;
+ Note: for consistency should be convolve(polygon_set, point).&nbsp; O( n
+ log n) runtime complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename transformation_type&gt;<br>
+T&amp; <b>transform</b>(T&amp; polygon_set,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const
+transformation_type&amp; transformation)</font></td>
+ <td>Applies transformation.transform() on all vertices.&nbsp; O( n log
+ n) runtime complexity and O(n) memory wrt vertices + intersections. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>keep</b>(T&amp; polygon_set, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type min_area,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type max_area,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type min_width,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type max_width,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type min_height,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type max_height)</font></td>
+ <td>Retains only regions that satisfy the min/max criteria in the
+ argument list.&nbsp; Note: useful for visualization to cull too small
+ polygons.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices + intersections. </td>
+ </tr>
+ </table>
+ <h1>Polygon 90 Set Data Object</h1>
+
+<p>
+<p>The polygon 90 set data type encapsulates the internal data format that
+serves as the input to the sweep-line algorithm that implements polygon-clipping
+boolean operations.&nbsp; It also internally keeps track of whether that data
+has been sorted or scanned and maintains the invariant that when its flags
+indicate that the data is sorted or scanned the data has not been changed to
+violate that assumption.&nbsp; Using the Polygon 90 Set Data type directly can
+be more efficient than using lists and vectors of polygons in the functions
+above because of the invariants it can enforce which provide the opportunity to
+maintain the data is sorted form rather than going all the way out to polygons
+then resorting those vertices for a subsequent operation.</p>
+<p>The declaration of Polygon 90 Set Data is the following:</p>
+<p><font face="Courier New">template &lt;typename T&gt;<br>
+class polygon_90_set_data;</font></p>
+<p>The class is parameterized on the coordinate data type.&nbsp; Algorithms that
+benefit from knowledge of the invariants enforced by the class are implemented
+as member functions to provide them access to information about those
+invariants.&nbsp; </p>
+<h2>Member Functions</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_90_set_data</b>()</font></td>
+ <td>Default constructor.&nbsp; Scanning orientation defaults to
+ HORIZONTAL</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_90_set_data</b>(orientation_2d
+ orient)</font></td>
+ <td>Construct with scanning orientation.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<br>
+ <b>polygon_90_set_data</b>(orientation_2d orient, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iT input_begin, iT
+ input_end)</font></td>
+ <td>Construct with scanning orientation from an iterator range of
+ insertable objects.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+ <b>polygon_90_set_data</b>(const polygon_90_set_data&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">template &lt;typename l, typename r, typename op&gt;<br>
+<b>polygon_90_set_data</b>(const polygon_90_set_view&lt;l,r,op&gt;&amp;
+t)</font></td>
+ <td>Copy construct from a Boolean operator template.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+<b>polygon_90_set_data</b>(orientation_2d orient, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const polygon_90_set_data&amp;
+that)</font></td>
+ <td>Construct with scanning orientation and copy from another polygon
+ set.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">polygon_90_set_data&amp; <br><b>operator=</b>(const polygon_90_set_data&amp; that)</font></td>
+ <td>Assignment from another polygon set, may change scanning
+ orientation.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">template &lt;typename l, typename r, typename op&gt;<br>
+polygon_90_set_data&amp; <br><b>operator=</b>(const polygon_90_set_view&lt;l, r,
+op&gt;&amp; that)</font></td>
+ <td>Assignment from a Boolean operator template.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename geometry_object&gt;<br>
+polygon_90_set_data&amp; <b>operator=</b>(const geometry_object&amp; geo)</font></td>
+ <td>Assignment from an insertable object.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename iT&gt;<br>
+void <b>insert</b>(iT input_begin, iT input_end)</font></td>
+ <td>Insert objects of an iterator range.&nbsp; Linear wrt. inserted
+ vertices.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+void <b>insert</b>(const polygon_90_set_data&amp; polygon_set)</font></td>
+ <td>Insert a polygon set.&nbsp; Linear wrt. inserted vertices.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename geometry_type&gt;<br>
+void <b>insert</b>(const geometry_type&amp; geometry_object, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool is_hole
+= false)</font></td>
+ <td>Insert a geometry object, if is_hole is true then the inserted
+ region is subtractive rather than additive.&nbsp; Linear wrt. inserted
+ vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get</b>(output_container&amp; output) const</font></td>
+ <td>Expects a standard container of geometry objects.&nbsp; Will scan
+ and eliminate overlaps.&nbsp; Converts polygon set geometry to objects
+ of that type and appends them to the container.&nbsp; Polygons will be
+ output with counterclockwise winding, hole polygons will be output with
+ clockwise winding.&nbsp; The last vertex of an output polygon is not the
+ duplicate of the first, and the number of points is equal to the number
+ of edges.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get_polygons</b>(output_container&amp; output) const</font></td>
+ <td>Expects a standard container of polygon objects.&nbsp; Will scan and
+ eliminate overlaps.&nbsp; Converts polygon set geometry to polygons and
+ appends them to the container.&nbsp; Polygons will have holes fractured
+ out to the outer boundary along the positive direction of the scanline
+ orientation of the polygon set.&nbsp; O( n log n) runtime complexity and
+ O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get_rectangles</b>(output_container&amp; output) const</font></td>
+ <td>Expects a standard container of rectangle objects.&nbsp; Will scan
+ and eliminate overlaps.&nbsp; Slices polygon set geometry to rectangles
+ along the scanning orientation and appends them to the container.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get_rectangles</b>(output_container&amp; output, <br>&nbsp; orientation_2d
+slicing_orientation) const </font>
+ </td>
+ <td>Expects a standard container of rectangle objects.&nbsp; Will scan
+ and eliminate overlaps.&nbsp; Slices polygon set geometry to rectangles
+ along the given orientation and appends them to the container.&nbsp; O(
+ n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+bool <b>operator==</b>(const polygon_90_set_data&amp; p) const</font></td>
+ <td>Once scanned the data representation of geometry within a polygon
+ set is in a mathematically canonical form.&nbsp; Comparison between two
+ sets is therefore a linear time operation once they are in the scanned
+ state. Will scan and eliminate overlaps in both polygon sets.&nbsp; O( n
+ log n) runtime complexity and O(n) memory wrt vertices + intersections
+ the first time, linear subsequently.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+bool <b>operator!=</b>(const polygon_90_set_data&amp; p) const</font></td>
+ <td>Inverse logic of equivalence operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>clear</b>()</font></td>
+ <td>Make the polygon set empty.&nbsp; Note: does not de-allocate memory.&nbsp;
+ Use shrink to fit idiom and assign default constructed polygon set to
+ de-allocate.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">bool <b>empty</b>() const </font>
+ </td>
+ <td>Check whether the polygon set contains no geometry.&nbsp; Will scan
+ and eliminate overlaps because subtractive regions might make the
+ polygon set empty.&nbsp; O( n log n) runtime complexity and O(n) memory
+ wrt vertices + intersections the first time, linear subsequently.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">orientation_2d <b>orient</b>() const</font></td>
+ <td>Get the scanning orientation.&nbsp; Depending on the data it is
+ sometimes more efficient to scan in a specific orientation.&nbsp; This
+ is particularly true of Manhattan geometry data.&nbsp; Constant time.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>clean</b>() const</font></td>
+ <td>Scan and eliminate overlaps.&nbsp; O( n log n) runtime complexity
+ and O(n) memory wrt vertices + intersections the first time, constant
+ time subsequently.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename input_iterator_type&gt;<br>
+void <b>set</b>(input_iterator_type input_begin, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input_iterator_type input_end,
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orientation_2d orient) </font>
+ </td>
+ <td>Overwrite geometry in polygon set with insertable objects in the
+ iterator range.&nbsp; Also sets the scanning orientation to that
+ specified.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename rectangle_type&gt;<br>
+bool <b>extents</b>(rectangle_type&amp; extents_rectangle) const</font></td>
+ <td>Given an object that models rectangle, scans and eliminates overlaps
+ in the polygon set because subtractive regions may alter its extents
+ then computes the bounding box and assigns it to extents_rectangle.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections the first time, linear subsequently.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+polygon_90_set_data&amp;<br>
+<b>bloat</b>(unsigned_area_type west_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type east_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type south_bloating,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type north_bloating) </font></td>
+ <td>Scans to eliminate overlaps and subtractive regions.&nbsp; Inserts
+ rectangles of width specified by bloating values to the indicated side
+ of geometry within the polygon set and fills corners with rectangles of
+ the length and width specified for the adjacent sides.&nbsp; O( n log n)
+ runtime complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+polygon_90_set_data&amp;<br>
+<b>shrink</b>(unsigned_area_type west_shrinking,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type east_shrinking,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type south_shrinking,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned_area_type north_shrinking)</font></td>
+ <td>Scans to eliminate overlaps and subtractive regions.&nbsp; Inserts
+ subtractiive rectangles of width specified by bloating values to the
+ indicated side of geometry within the polygon set and subtractive
+ rectangle at convex corners of the length and width specified for the
+ adjacent sides.&nbsp; Scans to eliminate overlapping subtractive
+ regions.&nbsp; O( n log n) runtime complexity and O(n) memory wrt
+ vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+polygon_90_set_data&amp;<br>
+<b>resize</b>(coordinate_type west, coordinate_type east, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_type south, coordinate_type north)</font></td>
+ <td>Call bloat or shrink or shrink then bloat depending on whether the
+ resizing values are positive or negative.&nbsp; O( n log n) runtime
+ complexity and O(n) memory wrt vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+polygon_90_set_data&amp; <b>move</b>(coordinate_type x_delta, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_type
+y_delta) </font>
+ </td>
+ <td>Add x_delta to x values and y_delta to y values of vertices stored
+ within the polygon set.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename transformation_type&gt;<br>
+polygon_90_set_data&amp; <br><b>transform</b>(const transformation_type&amp; transformation) </font>
+ </td>
+ <td>Applies transformation.transform() on vertices stored within the
+ polygon set.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+polygon_90_set_data&amp; <b>scale_up</b>(unsigned_area_type factor)</font></td>
+ <td>Scales vertices stored within the polygon set up by factor.&nbsp;
+ Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<p><font face="Courier New">polygon_90_set_data&amp; <b>scale_down</b>(unsigned_area_type
+factor)</font>&nbsp;</td>
+ <td>Scales vertices stored within the polygon set down by factor.&nbsp;
+ Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename scaling_type&gt;<br>
+polygon_90_set_data&amp;<br> <b>scale</b>(const anisotropic_scale_factor&lt;scaling_type&gt;&amp;
+ f)</font></td>
+ <td>Scales vertices stored within the polygon set by applying f.scale().&nbsp;
+ Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_90_set_data&amp; <b>scale</b>(double factor) </font></td>
+ <td>Scales vertices stored within the polygon set by floating point
+ factor.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_90_set_data&amp; <b>self_xor</b>()</font></td>
+ <td>Retain only non-overlapping regions of geometry within polygon set.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_90_set_data&amp; <b>self_intersect</b>()</font></td>
+ <td>Retain only overlapping regions of geometry within a polygon set.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_90_set_data&amp;<br> <b>interact</b>(const polygon_90_set_data&amp; that)</font></td>
+ <td>Retain only regions that touch or overlap regions in argument.&nbsp;
+ O( n log n) runtime complexity and O(n) memory wrt vertices +
+ intersections.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table4">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_polygon_90_with_holes_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_90_with_holes_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,448 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Polygon 90 With Holes Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon 90 With Holes Concept</h1>
+
+<p>
+<p>The polygon_90_with_holes concept tag is <font face="Courier New">
+polygon_90_with_holes_concept</font></p>
+<p>
+To register a user defined type as a model of
+<font face="Times New Roman">polygon_90_with_holes </font>concept, specialize the
+geometry concept meta-function for that type.&nbsp; In the example below CPolygon90WithHoles is registered as a model of
+polygon<font face="Times New Roman">_90_with_holes&nbsp;</font> concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CPolygon90WithHoles&gt; { typedef polygon_90_with_holes_concept type; };</font><p>
+<font face="Times New Roman">The semantic of a polygon_90_with_holes is a
+polygon_90 that it can provide iterators over holes that are also polygon_90.&nbsp;
+A mutable polygon_90_with_holes must also be able to set its geometry based on
+an interator range over polygon_90 holes.&nbsp; There is no convention of
+winding of holes enforced within the library. </font><p>
+<font face="Times New Roman">Below is shown the default polygon with holes
+traits.&nbsp; Specialization of these traits is required for types that don't
+conform to the default behavior.</font><p><font face="Courier New">template &lt;typename
+T, typename enable = void&gt;<br>
+struct polygon_with_holes_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::iterator_holes_type
+iterator_holes_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::hole_type hole_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_holes_type begin_holes(const T&amp;
+t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.begin_holes();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_holes_type end_holes(const T&amp; t)
+{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.end_holes();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline unsigned int size_holes(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.size_holes();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p><font face="Courier New">template &lt;typename T, typename enable = void&gt;<br>
+struct polygon_with_holes_mutable_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; template &lt;typename iT&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline T&amp; set_holes(T&amp; t, iT inputBegin, iT
+inputEnd) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.set_holes(inputBegin,
+inputEnd);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p>An object that is a model of <font face="Courier New">
+polygon_90_with_holes_concept</font> can be viewed as a model of any of its
+refinements if it is determined at runtime to conform to the restriction of
+those concepts.&nbsp; This concept casting is accomplished through the
+<font face="Courier New">view_as&lt;&gt;()</font> function.</p>
+<p><font face="Courier New">view_as&lt;rectangle_concept&gt;(polygon_90_with_holes_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_90_concept&gt;(polygon_90_with_holes_object)</font></p>
+<p>The return value of <font face="Courier New">view_as&lt;&gt;()</font> can be
+passed into any interface that expects an object of the conceptual type
+specified in its template parameter.</p>
+<h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ compact_iterator_type <b>begin_compact</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_90.&nbsp;
+ Returns the begin iterator over the range of coordinates that correspond
+ to horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ compact_iterator_type <b>end_compact</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_90.&nbsp;
+ Returns the end iterator over the range of coordinates that correspond
+ to horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>begin_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_90_with_holes.&nbsp;
+ Returns the begin iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>end_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_90_with_holes.&nbsp;
+ Returns the end iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ hole_iterator_type <b>begin_holes</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_90_with_holes.&nbsp;
+ Returns the begin iterator over the range of coordinates that correspond
+ to horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ hole_iterator_type <b>end_</b><b>holes</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_90_with_holes.&nbsp;
+ Returns the end iterator over the range of coordinates that correspond
+ to horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_compact</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_90_with_holes.&nbsp;&nbsp;
+ Sets the polygon to the coordinate data range [b,e) that corresponds to
+ .horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_points</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_90_with_holes.&nbsp;&nbsp;
+ Sets the polygon to the point data range [b,e) that corresponds to
+ vertices of a manhattan polygon.&nbsp; Non-manhattan edges between
+ successive input points results in undefined behavior.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_holes</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of
+ polygon_90_with_holes.&nbsp;&nbsp;
+ Sets the polygon holes to the hole data range [b,e)</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ unsigned int <b>size</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Returns the number of edges in the
+ outer shell of the polygon_90_with_holes.&nbsp; Does not include sizes
+ of the holes.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
+ <td>Copies data from right object that models polygon_90_with_holes or
+ one of its refinements into left object
+ that models polygon_90_with_holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ bool <b>contains</b>(const T&amp;, const point_type&amp; point, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch=true)</font></td>
+ <td>Given an object that models polygon_90_with_holes and an object that models
+ point, returns true
+ if the polygon shell contains the point and one of its holes does not
+ contain the point.&nbsp; If the consider_touch
+ flag is true will return true if the point lies along the boundary of
+ the polygon or one of its holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">// get the center coordinate<br>
+ template &lt;typename T, typename point_type&gt;<br>
+ void <b>center</b>(point_type&amp; p, const T&amp; polygon)</font></td>
+ <td>Sets object that models point to the center point of the bounding
+ box of an object that models polygon_90_with_holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename rectangle_type&gt;<br>
+ bool <b>extents</b>(rectangle_type&amp; bbox, const T&amp; polygon)</font></td>
+ <td>Sets object that models rectangle to the bounding box of an object
+ that models polygon_90_with_holes and returns true.&nbsp; Returns false
+ and leaves bbox unchanged if polygon is empty.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ manhattan_area_type <b>area</b>(const T&amp; polygon)</font></td>
+ <td>Returns the area of an object
+ that models polygon_90_with_holes including subtracting the area of its
+ holes from the area of the outer shell polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ direction_1d <b>winding</b>(const T&amp; polygon)</font></td>
+ <td>Returns the winding direction of an object
+ that models polygon_90_with_holes, LOW == CLOCKWISE, HIGH =
+ COUNTERCLOCKWISE.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_difference <b>perimeter</b>(const T&amp; polygon)</font></td>
+ <td>Returns the perimeter length of an object
+ that models polygon_90, including the perimeters of the holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename transform_type&gt;<br>
+ T&amp; <b>transform</b>(T&amp; polygon, const transform_type&amp;)</font></td>
+ <td>Applies transform() on the vertices of polygon and sets the polygon to that described by the result of
+ transforming its vertices.&nbsp; Also applies transform() on the holes
+ of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_up</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales up outer shell and holes of an object that models
+ polygon_90 by unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_down</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales down outer shell and holes of an object that models
+ polygon_90 by unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, scaling_type&gt;<br>
+ T&amp; <b>scale</b>(T&amp; rectangle, double scaling) </font></td>
+ <td>Scales outer shell and holes of an object that models polygon_90 by
+ floating point factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>move</b>(T&amp; polygon, orientation_2d,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_difference displacement)</font></td>
+ <td>Adds displacement value to coordinate indicated by orientation_2d of
+ vertices of an object that models polygon_90 .</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename polygon_type, typename point_type&gt;<br>
+ polygon_type&amp; <b>convolve</b>(polygon_type&amp; polygon,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const point_type&amp; point)</font></td>
+ <td>Convolves coordinate values of point with the outer shell and holes of an
+ object that models polygon_90_with_holes.</td>
+ </tr>
+ </table>
+ <h1>Polygon 90 With Holes Data</h1>
+
+<p>
+<p>The library provides a model of polygon 90 with holes concept declared
+<font face="Courier New">
+template&lt;typename T&gt; polygon_90_with_holes_data </font>where T is the
+coordinate type.</p>
+<p>This data type is used internally when a Manhattan polygon with holes is
+needed and is available to the library user who finds it convenient to use a
+library polygon data type instead of providing their own.&nbsp; The data type is
+implemented to be convenient to use with the library traits.</p>
+<h2>Members</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><b><font face="Courier New">geometry_type</font></b></td>
+ <td><font face="Times New Roman">polygon_90_with_holes_concept</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">coordinate_type</font></b></td>
+ <td><font face="Times New Roman">T</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">iterator_type</font></b></td>
+ <td>Iterator over vertices point_data&lt;T&gt; vertices of polygon</td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">compact_iterator_type</font></b></td>
+ <td><font face="Times New Roman">Iterator over non-redundant coordinates
+ of the polygon, alternating x, y, x, y starting with an x, where each x
+ corresponds to a vertical edge and each y corresponds to a horizontal
+ edge.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">iterator_holes_type</font></b></td>
+ <td><font face="Times New Roman">Iterator over hole polygons of type
+ polygon_90_data&lt;T&gt;.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_90_with_holes_data</b>()</font></td>
+ <td><font face="Times New Roman">Default constructs the </font>polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_90_with_holes_data</b>(const
+ polygon_90_with_holes_data&amp; that)</font></td>
+ <td><font face="Times New Roman">Copy construct</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_90_with_holes_data&amp; <b>
+ <br>operator=</b>(const polygon_90_with_holes_data&amp; that)</font></td>
+ <td>Assignment operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b> </b>polygon_90_with_holes_data&amp;<b>&nbsp;
+ <br> operator=</b>(const T2&amp; that) const</font></td>
+ <td>Assign from an object that is a model of polygon 90 with holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>begin</b>()
+ const</font></td>
+ <td>Get the begin iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>end</b>()
+ const</font></td>
+ <td>Get the end iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">compact_iterator_type <b>begin_compact</b>()
+ const</font></td>
+ <td>Get the begin compact iterator over non-redundant coordinates of the
+ polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">compact_iterator_type <b>end_compact</b>()
+ const</font></td>
+ <td>Get the end compact iterator over non-redundant coordinates of the
+ polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_hole_type <b>begin_holes</b>()
+ const</font></td>
+ <td>Get the begin compact iterator over non-redundant coordinates of the
+ polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_hole_type <b>end_holes</b>()
+ const</font></td>
+ <td>Get the end compact iterator over non-redundant coordinates of the
+ polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">std::size_t <b>size</b>() const</font></td>
+ <td>Get the number of elements in the sequence stored to the polygon,
+ usually equal to the number of edges of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">std::size_t <b>size_holes</b>() const</font></td>
+ <td>Get the number of holes in the polygon</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set</b>(iT begin_points, iT end_points)</font></td>
+ <td>Sets the polygon to the iterator range of points.&nbsp; No check is
+ performed to ensure the points describe a Manhattan figure, every other
+ x and y value of the points is used to initialize the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set_compact</b>(iT begin_coords, iT end_coords)</font></td>
+ <td>Sets the polygon to the iterator range of coordinates.&nbsp; These
+ coordinates correspond to the x values of vertical edges and y values of
+ horizontal edges.&nbsp; It is expected that the sequence start with an x
+ value and proceed x then y then x then y.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set_holes</b>(iT begin_holes, iT end_choless)</font></td>
+ <td>Sets the polygon holes the iterator range of hole polygons.&nbsp; These
+ polygons in the input range may be either polygon_90_data or
+ polygon_90_with_holes_data or any type that provides begin_compact and
+ end_compact member functions.</td>
+ </tr>
+</table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table3">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_polygon_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,362 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Polygon Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon Concept</h1>
+
+<p>
+<p>The polygon concept tag is <font face="Courier New">
+polygon_concept</font></p>
+<p>
+To register a user defined type as a model of
+<font face="Times New Roman">polygon </font>concept, specialize the
+geometry concept meta-function for that type.&nbsp; In the example below CPolygon is registered as a model of
+polygon&nbsp; concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CPolygon&gt; { typedef polygon_concept type; };</font><p>
+<font face="Times New Roman">The semantic of a polygon is that it can provide
+iterators over the points that represent its vertices.&nbsp; It is acceptable to
+have the last edge explict with the first and last point equal to each other or
+implied by this segement that would connect the first and last point.&nbsp; A
+mutable polygon must also be able to set its geometry based on an interator
+range over such points.&nbsp; A std::vector&lt;point_data&lt;int&gt; &gt; or std::list&lt;point_data&lt;int&gt;
+&gt;
+could be made models of polygon_concept by simply providing access to their
+iterators through traits.&nbsp; Library functions that create polygon objects
+require that those objects provide a default constructor.</font><p>
+<font face="Times New Roman">Below is shown the default polygon traits.&nbsp;
+Specialization of these traits is required for types that don't conform to the
+default behavior.&nbsp; Note that these same traits are also used by several
+other polygon concepts through SFINE enable template parameter.&nbsp; The SFINE
+enable parameter also allows the library to provide default specialization that
+work for any object that models the 90 degree polygon concepts.</font><p>
+<font face="Courier New">template &lt;typename T, typename enable = gtl_yes&gt;<br>
+struct polygon_traits {};<br>
+<br>
+template &lt;typename T&gt;<br>
+struct polygon_traits&lt;T, <br>
+&nbsp; typename gtl_or_4&lt;<br>
+&nbsp;&nbsp;&nbsp; typename gtl_same_type&lt;typename geometry_concept&lt;T&gt;::type,
+polygon_concept&gt;::type,<br>
+&nbsp;&nbsp;&nbsp; typename gtl_same_type&lt;typename geometry_concept&lt;T&gt;::type,
+polygon_concept&gt;::type,<br>
+&nbsp;&nbsp;&nbsp; typename gtl_same_type&lt;typename geometry_concept&lt;T&gt;::type,
+polygon_with_holes_concept&gt;::type,<br>
+&nbsp;&nbsp;&nbsp; typename gtl_same_type&lt;typename geometry_concept&lt;T&gt;::type,
+polygon_with_holes_concept&gt;::type<br>
+&nbsp; &gt;::type&gt; {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::coordinate_type coordinate_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::iterator_type iterator_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::point_type point_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_type begin_points(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.begin();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_type end_points(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.end();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline unsigned int size(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.size();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline winding_direction winding(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return unknown_winding;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p><font face="Courier New">template &lt;typename T, typename enable = void&gt;<br>
+struct polygon_mutable_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; template &lt;typename iT&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline T&amp; set_points(T&amp; t, iT input_begin, iT
+input_end) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.set(input_begin,
+input_end);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p>Example code custom_polygon.cpp
+demonstrates mapping a
+ user defined polygon class to the library polygon_concept</p>
+<p>An object that is a model of <font face="Courier New">
+polygon_concept</font> can be viewed as a model of any of its
+refinements if it is determined at runtime to conform to the restriction of
+those concepts.&nbsp; This concept casting is accomplished through the
+<font face="Courier New">view_as&lt;&gt;()</font> function.</p>
+<p><font face="Courier New">view_as&lt;rectangle_concept&gt;(polygon_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_90_concept&gt;(polygon_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_45_concept&gt;(polygon_object)</font></p>
+<p>The return value of <font face="Courier New">view_as&lt;&gt;()</font> can be
+passed into any interface that expects an object of the conceptual type
+specified in its template parameter. </p>
+<h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>begin_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon.&nbsp;
+ Returns the begin iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>end_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon.&nbsp;
+ Returns the end iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_points</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon.&nbsp;&nbsp;
+ Sets the polygon to the point data range [b,e) that corresponds to
+ vertices of a manhattan polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ unsigned int <b>size</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Returns the number of edges in the
+ polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
+ <td>Copies data from right object that models polygon into left object
+ that models polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ bool <b>contains</b>(const T&amp;, const point_type&amp; point, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch=true)</font></td>
+ <td>Given an object that models polygon and an object that models
+ point, returns true
+ if the polygon contains the point.&nbsp; If the consider_touch
+ flag is true will return true if the point lies along the boundary of
+ the polygon.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">// get the center coordinate<br>
+ template &lt;typename T, typename point_type&gt;<br>
+ void <b>center</b>(point_type&amp; p, const T&amp; polygon)</font></td>
+ <td>Sets object that models point to the center point of the bounding
+ box of an object that models polygon.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename rectangle_type&gt;<br>
+ bool <b>extents</b>(rectangle_type&amp; bbox, const T&amp; polygon)</font></td>
+ <td>Sets object that models rectangle to the bounding box of an object
+ that models polygon and returns true.&nbsp; Returns false and leaves
+ bbox unchanged if polygon is empty.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ area_type <b>area</b>(const T&amp; polygon)</font></td>
+ <td>Returns the area of an object
+ that models polygon.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ direction_1d <b>winding</b>(const T&amp; polygon)</font></td>
+ <td>Returns the winding direction of an object
+ that models polygon, LOW == CLOCKWISE, HIGH = COUNTERCLOCKWISE.&nbsp;
+ Complexity depends upon winding trait.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_distance <b>perimeter</b>(const T&amp; polygon)</font></td>
+ <td>Returns the perimeter length of an object
+ that models polygon.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename transform_type&gt;<br>
+ T&amp; <b>transform</b>(T&amp; polygon, const transform_type&amp;)</font></td>
+ <td>Applies transform() on the vertices of polygon and sets the polygon to that described by the result of
+ transforming its vertices.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_up</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales up coordinate of an object that models
+ polygon by unsigned factor.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_down</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales down coordinates of an object that models
+ polygon by unsigned factor.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, scaling_type&gt;<br>
+ T&amp; <b>scale</b>(T&amp; rectangle, double scaling) </font></td>
+ <td>Scales coordinates of an object that models polygon by floating
+ point factor.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>move</b>(T&amp; polygon, orientation_2d,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_difference displacement)</font></td>
+ <td>Adds displacement value to coordinate indicated by orientation_2d of
+ vertices of an object that models polygon .&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename polygon_type, typename point_type&gt;<br>
+ polygon_type&amp; <b>convolve</b>(polygon_type&amp; polygon,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const point_type&amp; point)</font></td>
+ <td>Convolves coordinate values of point with vertices of an
+ object that models polygon.&nbsp; Linear wrt. vertices.</td>
+ </tr>
+ </table>
+ <h1>Polygon Data</h1>
+
+<p>
+<p>The library provides a model of polygon concept declared
+<font face="Courier New">
+template&lt;typename T&gt; polygon_data </font>where T is the coordinate type.</p>
+<p>This data type is used internally when a polygon is needed and is available
+to the library user who finds it convenient to use a library polygon data type
+instead of providing their own.&nbsp; The data type is implemented to be
+convenient to use with the library traits.</p>
+<p>Example code polygon_usage.cpp
+demonstrates using
+ the library provided polygon data types and functions</p>
+<h2>Members</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><b><font face="Courier New">geometry_type</font></b></td>
+ <td><font face="Times New Roman">polygon_concept</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">coordinate_type</font></b></td>
+ <td><font face="Times New Roman">T</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">iterator_type</font></b></td>
+ <td>Iterator over vertices point_data&lt;T&gt; vertices of polygon</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_data</b>()</font></td>
+ <td><font face="Times New Roman">Default constructs the </font>polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_data</b>(const
+ polygon_data&amp; that)</font></td>
+ <td><font face="Times New Roman">Copy construct</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_data&amp; <b>operator=</b>(const
+ polygon_data&amp; that)</font></td>
+ <td>Assignment operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>&nbsp;
+ <br> </b>polygon_data&amp; <b>operator=</b>(const T2&amp; that) const</font></td>
+ <td>Assign from an object that is a model of polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>begin</b>()
+ const</font></td>
+ <td>Get the begin iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>end</b>()
+ const</font></td>
+ <td>Get the end iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">std::size_t <b>size</b>() const</font></td>
+ <td>Get the number of elements in the sequence stored to the polygon,
+ usually equal to the number of edges of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set</b>(iT begin_points, iT end_points)</font></td>
+ <td>Sets the polygon to the iterator range of points.&nbsp; </td>
+ </tr>
+</table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table3">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_polygon_set_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_set_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,653 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Polygon Set Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon Set Concept</h1>
+
+<p>
+<p>The polygon_set concept tag is <font face="Courier New">
+polygon_set_concept</font></p>
+<p>
+<font face="Times New Roman">The semantic of a polygon_set is zero or more
+geometry regions.&nbsp; A Polygon Set Concept may be defined with floating point
+coordinates, but a snap rounding distance of one integer unit will still be
+applied, furthermore, geometry outside the domain where one integer unit is
+sufficient to provide robustness may lead to undefined behavior in algorithms.&nbsp;
+It is recommended to use integer coordinates for robust operations.&nbsp; In the
+case that data represented contains only Manhattan geometry a runtime check will
+default to the Manhattan algorithm.&nbsp; The results of which are identical to
+what the general algorithm would do, but obtained more efficiently.&nbsp; In the
+case that the data represented contains only Manhattan and 45-degree geometry a
+runtime check will default to the faster 45-degree algorithm.&nbsp; The results
+of which may differ slight from what the general algorithm would do because
+non-integer intersections will be handled differently.</font><p>Users are recommended to use std::vector and std::list of user defined polygons
+or library provided polygon_set_data&lt;coordinate_type&gt; objects.&nbsp; Lists
+and vectors of models of polygon_concept or polygon_with_holes_concept are automatically models of polygon_set_concept.</p>
+<p>Example code custom_polygon_set.cpp
+ demonstrates mapping a user defined class to the library polygon_set_concept</p>
+<p>An object that is a model of <font face="Courier New">
+polygon_set_concept</font> can be viewed as a model of <font face="Courier New">
+polygon_90_set_concept</font> or <font face="Courier New">
+polygon_45_set_concept</font> if it is determined at runtime to conform to the
+restrictions of those concepts.&nbsp; This concept casting is accomplished
+through the <font face="Courier New">view_as&lt;&gt;()</font> function.</p>
+<p><font face="Courier New">view_as&lt;polygon_90_set_concept&gt;(polygon_set_object)<br>
+view_as&lt;polygon_45_set_concept&gt;(polygon_set_object)</font></p>
+<p>The return value of <font face="Courier New">view_as&lt;&gt;()</font> can be passed
+into any interface that expects an object of the conceptual type specified in
+its template parameter.&nbsp; Polygon sets cannot be viewed as single polygons
+or rectangles since it generally cannot be known whether a polygon set contains
+only a single polygon without converting to polygons.</p>
+<h2>Operators</h2>
+<p>The return type of some operators is the <font face="Courier New">polygon_set_view</font>
+operator template type.&nbsp; This type is itself a model of the polygon 90 set
+concept, but furthermore can be used as an argument to the <font face="Courier New">polygon_set_data</font>
+constructor and assignment operator.&nbsp; The operator template exists to
+eliminate temp copies of intermediate results when Boolean operators are chained
+together.</p>
+<p>Operators are declared inside the namespace <font face="Courier New">boost::polygon::operators</font>.</p>
+<table border="1" width="100%" id="table5">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_set_view <b>operator</b>|(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean OR operation (polygon set union).&nbsp; Accepts two objects
+ that model polygon_set or one of its refinements.&nbsp; Returns an
+ operator template that performs the operation on demand when chained or
+ or nested in a library function call such as assign().&nbsp; Expected n
+ log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_set_view <b>operator</b>+(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator|.&nbsp; The plus sign is also used for OR
+ operations in Boolean logic expressions.&nbsp; Expected n log n runtime,
+ worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_set_view <b>operator</b>&amp;(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean AND operation (polygon set intersection).&nbsp; Accepts two
+ objects that model polygon_set or one of its refinements.&nbsp; Expected
+ n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_set_view <b>operator</b>*(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator&amp;.&nbsp; The multiplication symbol is also used for
+ AND operations in Boolean logic expressions.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_set_view <b>operator</b>^(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean XOR operation (polygon set disjoint-union).&nbsp; Accepts
+ two objects that model polygon_set or one of its refinements.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ polygon_set_view <b>operator</b>-(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Boolean SUBTRACT operation (polygon set difference).&nbsp; Accepts
+ two objects that model polygon_set or one of its refinements.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>|=(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator|, but with self assignment, left operand must model
+ polygon_set and not one of it's refinements.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>+=(T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator+, but with self assignment, left operand must model
+ polygon_set and not one of it's refinements.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>&amp;=(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator&amp;, but with self assignment, left operand must model
+ polygon_set and not one of it's refinements.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>*=(T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator*, but with self assignment, left operand must model
+ polygon_set and not one of it's refinements.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>^=(const T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator^, but with self assignment, left operand must model
+ polygon_set and not one of it's refinements.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>-=(T1&amp; l, const T2&amp; r)</font></td>
+ <td>Same as operator-, but with self assignment, left operand must model
+ polygon_set and not one of it's refinements.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1&gt;<br>
+ T1 <b>operator</b>+(const T1&amp;, coordinate_type bloating)</font></td>
+ <td>Performs resize operation, inflating by bloating ammount.&nbsp; If
+ negative the result is a shrink instead of bloat.&nbsp; Note: returns
+ result by value.&nbsp; Expected n log n runtime, worst case quadratic
+ runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1 <b>operator</b>-(const T1&amp;, coordinate_type shrinking)</font></td>
+ <td>Performs resize operation, deflating by bloating ammount.&nbsp; If
+ negative the result is a bloat instead of shrink.&nbsp; Note: returns
+ result by value.&nbsp; Expected n log n runtime, worst case quadratic
+ runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>+=(const T1&amp;, coordinate_type bloating)</font></td>
+ <td>Performs resize operation, inflating by bloating ammount.&nbsp; If
+ negative the result is a shrink instead of bloat.&nbsp; Returns
+ reference to modified argument.&nbsp; Expected n log n runtime, worst
+ case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>operator</b>-=(const T1&amp;, coordinate_type shrinking)</font></td>
+ <td>Performs resize operation, deflating by bloating ammount.&nbsp; If
+ negative the result is a bloat instead of shrink.&nbsp; Returns
+ reference to modified argument.&nbsp; Expected n log n runtime, worst
+ case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ </table>
+<h2>Functions</h2>
+<table border="1" width="100%" id="table6">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; lvalue, const T2&amp; rvalue)</font></td>
+ <td>Eliminates overlaps in geometry and copies from an object that
+ models polygon_set or any of its refinements into an object that
+ models polygon_set.&nbsp; Expected n log n runtime, worst case quadratic
+ runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>equivalence</b>(const T1&amp; lvalue, const T2&amp; rvalue) </font></td>
+ <td>Returns true if an object that models polygon_set or one of its
+ refinements covers the exact same geometric regions as another object
+ that models polygon_set or one of its refinements.&nbsp; For example:
+ two of polygon objects.&nbsp; Expected n log n runtime, worst case
+ quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ output_container_type, typename T&gt;<br>
+ void <b>get_trapezoids</b>(output_container_type&amp; output, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T&amp; polygon_set)</font></td>
+ <td>Output container is expected to be a standard container.&nbsp;
+ Slices geometry of an object that models polygon_set or one of its
+ refinements into non overlapping trapezoids along a vertical slicing
+ orientation and appends them to the
+ output, which must have a value type that models polygon or polygon_with_holes.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ output_container_type, typename T&gt;<br>
+ void <b>get_trapezoids</b>(output_container_type&amp; output, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T&amp; polygon_set,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orientation_2d orient)</font></td>
+ <td>Output container is expected to be a standard container.&nbsp;
+ Slices geometry of an object that models polygon_set or one of its
+ refinements into non overlapping trapezoids along a the specified slicing
+ orientation and appends them to the
+ output, which must have a value type that models polygon or polygon_with_holes.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ polygon_set_type&gt;<br>
+ void <b>clear</b>(polygon_set_type&amp; polygon_set)</font></td>
+ <td>Makes the object empty of geometry.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ polygon_set_type&gt;<br>
+ bool <b>empty</b>(const polygon_set_type&amp; polygon_set)</font></td>
+ <td>Checks whether the object is empty of geometry.&nbsp; Polygons that
+ are completely covered by holes will result in empty returning true.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ rectangle_type&gt;<br>
+ bool <b>extents</b>(rectangle_type&amp; extents_rectangle, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const
+ T&amp; polygon_set)</font></td>
+ <td>Computes bounding box of an object that models polygon_set and
+ stores it in an object that models rectangle.&nbsp; If the polygon set
+ is empty returns false.&nbsp; If there are holes outside of shells they
+ do not contribute to the extents of the polygon set.&nbsp; Expected n
+ log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ area_type <b>area</b>(const T&amp; polygon_set)</font></td>
+ <td>Computes the area covered by geometry in an object that models
+ polygon_set.&nbsp; Expected n log n runtime, worst case quadratic
+ runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; polygon_set, unsigned_area_type bloating)</font></td>
+ <td>Same as getting all the polygons, bloating them and putting them
+ back.&nbsp; Expected n log n runtime, worst case quadratic runtime wrt.
+ vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; polygon_set, unsigned_area_type shrinking)</font></td>
+ <td>Same as getting all the polygons, shrinking them and overwriting
+ the polygon set with the resulting regions.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ coord_type&gt;<br>
+ T&amp; <b>resize</b>(T&amp; polygon_set, coord_type resizing,<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool corner_fill_arc = false, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ unsigned int num_circle_segments = 0)</font></td>
+ <td>Same as bloat if resizing is positive, same as shrink if resizing is
+ negative.&nbsp; Original topology at acute angle vertices is preserved
+ by default, segmented circular arcs are inserted if corner_fill_arc is
+ true.&nbsp; num_circle_segments specifies number of segments to
+ introduce on a full circle when filling acute angle corners with
+ circular arcs.&nbsp; Expected n log n runtime, worst case quadratic
+ runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>scale_up</b>(T&amp; polygon_set, unsigned_area_type factor)</font></td>
+ <td>Scales geometry up by unsigned factor.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>scale_down</b>(T&amp; polygon_set, unsigned_area_type factor)</font></td>
+ <td>Scales geometry down by unsigned factor.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename transformation_type&gt;<br>
+T&amp; <b>transform</b>(T&amp; polygon_set,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const
+transformation_type&amp; transformation)</font></td>
+ <td>Applies transformation.transform() on all vertices.&nbsp; Expected n
+ log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+T&amp; <b>keep</b>(T&amp; polygon_set, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type min_area,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type max_area,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type min_width,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type max_width,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type min_height,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type max_height)</font></td>
+ <td>Retains only regions that satisfy the min/max criteria in the
+ argument list.&nbsp; Note: useful for visualization to cull too small
+ polygons.&nbsp; Expected n log n runtime, worst case quadratic runtime
+ wrt. vertices + intersections.</td>
+ </tr>
+ </table>
+ <h1>Polygon Set Data Object</h1>
+
+<p>
+<p>The polygon set data type encapsulates the internal data format that
+serves as the input to the sweep-line algorithm that implements polygon-clipping
+Boolean operations.&nbsp; It also internally keeps track of whether that data
+has been sorted or scanned and maintains the invariant that when its flags
+indicate that the data is sorted or scanned the data has not been changed to
+violate that assumption.&nbsp; Using the Polygon Set Data type directly can
+be more efficient than using lists and vectors of polygons in the functions
+above because of the invariants it can enforce which provide the opportunity to
+maintain the data is sorted form rather than going all the way out to polygons
+then resorting those vertices for a subsequent operation.</p>
+<p>The declaration of Polygon Set Data is the following:</p>
+<p><font face="Courier New">template &lt;typename T&gt;<br>
+class polygon_set_data;</font></p>
+<p>The class is parameterized on the coordinate data type.&nbsp; Algorithms that
+benefit from knowledge of the invariants enforced by the class are implemented
+as member functions to provide them access to information about those
+invariants.&nbsp; </p>
+<p>Example code polygon_set_usage.cpp
+demonstrates using
+ the library provided polygon set data types and functions</p>
+<h2>Member Functions</h2>
+<table border="1" width="100%" id="table7">
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_set_data</b>()</font></td>
+ <td>Default constructor. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<br>
+ <b>polygon_set_data</b>(iT input_begin, iT
+ input_end)</font></td>
+ <td>Construct with scanning orientation from an iterator range of
+ insertable objects.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+ <b>polygon_set_data</b>(const polygon_set_data&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">template &lt;typename l, typename r, typename op&gt;<br>
+<b>polygon_set_data</b>(const polygon_set_view&lt;l,r,op&gt;&amp;
+t)</font></td>
+ <td>Copy construct from a Boolean operator template.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">polygon_set_data&amp; <br><b>operator=</b>(const polygon_set_data&amp; that)</font></td>
+ <td>Assignment from another polygon set, may change scanning
+ orientation.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">template &lt;typename l, typename r, typename op&gt;<br>
+polygon_set_data&amp; <br><b>operator=</b>(const polygon_set_view&lt;l, r,
+op&gt;&amp; that)</font></td>
+ <td>Assignment from a Boolean operator template.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename geometry_object&gt;<br>
+polygon_set_data&amp; <b>operator=</b>(const geometry_object&amp; geo)</font></td>
+ <td>Assignment from an insertable object.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename iT&gt;<br>
+void <b>insert</b>(iT input_begin, iT input_end)</font></td>
+ <td>Insert objects of an iterator range.&nbsp; Linear wrt vertices
+ inserted.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+void <b>insert</b>(const polygon_set_data&amp; polygon_set)</font></td>
+ <td>Insert a polygon set.&nbsp; Linear wrt vertices inserted.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename geometry_type&gt;<br>
+void <b>insert</b>(const geometry_type&amp; geometry_object, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool is_hole
+= false)</font></td>
+ <td>Insert a geometry object, if is_hole is true then the inserted
+ region is subtractive rather than additive.&nbsp; Linear wrt vertices
+ inserted.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get</b>(output_container&amp; output) const</font></td>
+ <td>Expects a standard container of polygons objects.&nbsp; Will scan
+ and eliminate overlaps.&nbsp; Converts polygon set geometry to objects
+ of the polygon type and appends them to the container.&nbsp; Polygons
+ will be output with counterclockwise winding, hole polygons will be
+ output with clockwise winding.&nbsp; The last vertex of an output
+ polygon is the duplicate of the first, and the number of points is equal
+ to the number of edges plus 1.&nbsp; If required by the output data
+ type, polygons will have holes fractured out to the outer boundary along
+ the positive y direction and off grid intersections on the outer
+ boundary introduced by this fracture will be truncated downward.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get_trapezoids</b>(output_container&amp; output) const</font></td>
+ <td>Expects a standard container of polygon objects.&nbsp; Will scan
+ and eliminate overlaps.&nbsp; Slices polygon set geometry to trapezoids
+ vertically and appends them to the container.&nbsp; Expected n log n
+ runtime, worst case quadratic runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename output_container&gt;<br>
+void <b>get_trapezoids</b>(output_container&amp; output, <br>&nbsp; orientation_2d
+slicing_orientation) const </font>
+ </td>
+ <td>Expects a standard container of polygon objects.&nbsp; Will scan
+ and eliminate overlaps.&nbsp; Slices polygon set geometry to trapezoids
+ along the given orientation and appends them to the container.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+bool <b>operator==</b>(const polygon_set_data&amp; p) const</font></td>
+ <td>Once scanned the data representation of geometry within a polygon
+ set is in a mathematically canonical form.&nbsp; Comparison between two
+ sets is therefore a linear time operation once they are in the scanned
+ state. Will scan and eliminate overlaps in both polygon sets.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.&nbsp; </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+bool <b>operator!=</b>(const polygon_set_data&amp; p) const</font></td>
+ <td>Inverse logic of equivalence operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>clear</b>()</font></td>
+ <td>Make the polygon set empty.&nbsp; Note: does not de-allocate memory.&nbsp;
+ Use shrink to fit idiom and assign default constructed polygon set to
+ de-allocate.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">bool <b>empty</b>() const </font>
+ </td>
+ <td>Check whether the polygon set contains no geometry.&nbsp; Will scan
+ and eliminate overlaps because subtractive regions might make the
+ polygon set empty.&nbsp; Expected n log n runtime, worst case quadratic
+ runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">void <b>clean</b>() const</font></td>
+ <td>Scan and eliminate overlaps.&nbsp; Expected n log n runtime, worst
+ case quadratic runtime wrt. vertices + intersections the first time,
+ constant time subsequently.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename input_iterator_type&gt;<br>
+void <b>set</b>(input_iterator_type input_begin, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input_iterator_type input_end) </font>
+ </td>
+ <td>Overwrite geometry in polygon set with insertable objects in the
+ iterator range. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename rectangle_type&gt;<br>
+bool <b>extents</b>(rectangle_type&amp; extents_rectangle) const</font></td>
+ <td>Given an object that models rectangle, scans and eliminates overlaps
+ in the polygon set because subtractive regions may alter its extents
+ then computes the bounding box and assigns it to extents_rectangle.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections the first time, linear subsequently.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+polygon_set_data&amp;<br>
+<b>resize</b>(coord_type resizing,<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool corner_fill_arc = false, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ unsigned int num_circle_segments = 0)</font></td>
+ <td>Inflates if resizing is positive, deflates if resizing is
+ negative.&nbsp; Original topology at acute angle vertices is preserved
+ by default, segmented circular arcs are inserted if corner_fill_arc is
+ true.&nbsp; num_circle_segments specifies number of segments to
+ introduce on a full circle when filling acute angle corners with
+ circular arcs.&nbsp; Specifying zero for num_circle_segments results in
+ only a single segment being inserted at acute corners.&nbsp; Expected n
+ log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename transformation_type&gt;<br>
+polygon_set_data&amp; <br><b>transform</b>(const transformation_type&amp; transformation) </font>
+ </td>
+ <td>Applies transformation.transform() on vertices stored within the
+ polygon set.&nbsp; Expected n log n runtime, worst case quadratic
+ runtime wrt. vertices + intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+polygon_set_data&amp; <b>scale_up</b>(unsigned_area_type factor)</font></td>
+ <td>Scales vertices stored within the polygon set up by factor.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">polygon_set_data&amp; <b>scale_down</b>(unsigned_area_type
+factor)</font>&nbsp;</td>
+ <td>Scales vertices stored within the polygon set down by factor.&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">
+template &lt;typename scaling_type&gt;<br>
+polygon_set_data&amp;<br> <b>scale</b>(const scaling_type&amp;
+ f)</font></td>
+ <td>Scales vertices stored within the polygon set by applying f.scale().&nbsp;
+ Expected n log n runtime, worst case quadratic runtime wrt. vertices +
+ intersections.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table8">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_polygon_set_usage.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_set_usage.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,85 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Polygon Set Usage</title>
+</head>
+
+<body>
+
+<p><font face="Courier New">/*<br>
+Copyright 2008 Intel Corporation<br>
+<br>
+Use, modification and distribution are subject to the Boost Software License,<br>
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at<br>
+
http://www.boost.org/LICENSE_1_0.txt).<br>
+*/<br>
+#include &lt;boost/polygon/polygon.hpp&gt;<br>
+#include &lt;cassert&gt;<br>
+namespace gtl = boost::polygon;<br>
+using namespace boost::polygon::operators;<br><br>
+int main() {<br>&nbsp; &nbsp;
+//lets declare ourselves a polygon set<br>&nbsp; &nbsp;
+using namespace gtl; //because of operators<br>&nbsp; &nbsp;
+typedef std::vector&lt;polygon_data&lt;int&gt; &gt; PolygonSet;<br>&nbsp; &nbsp;
+PolygonSet ps;<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+//lets put some data in<br>&nbsp; &nbsp;
+ps += rectangle_data&lt;int&gt;(0, 0, 10, 10);<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+//now lets do something interesting<br>&nbsp; &nbsp;
+PolygonSet ps2;<br>&nbsp; &nbsp;
+ps2 += rectangle_data&lt;int&gt;(5, 5, 15, 15);<br>&nbsp; &nbsp;
+PolygonSet ps3;<br>&nbsp; &nbsp;
+assign(ps3, ps * ps2); //woah, I just felt the room flex around me<br>&nbsp; &nbsp;
+PolygonSet ps4;<br>&nbsp; &nbsp;
+ps4 += ps + ps2;<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+//assert that area of result is equal to sum of areas<br>&nbsp; &nbsp;
+//of input geometry minus the area of overlap between inputs<br>&nbsp; &nbsp;
+assert(area(ps4) == area(ps) + area(ps2) - area(ps3));<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+//I don't even see the code anymore, all<br>&nbsp; &nbsp;
+//I see is bounding box...interval...triangle<br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+//lets try that again in slow motion shall we?<br>&nbsp;&nbsp;&nbsp;
+assert(equivalence((ps + ps2) - (ps * ps2), ps ^ ps2));<br>
+<br>
+&nbsp;&nbsp;&nbsp; //hmm, subtracting the intersection from the union<br>
+&nbsp;&nbsp;&nbsp; //is equivalent to the xor, all this in one line of code,<br>
+&nbsp;&nbsp;&nbsp; //now we're programming in bullet time<br>
+&nbsp;&nbsp;&nbsp; //(by the way, xor is implemented as one pass, not
+composition)&nbsp; <br>&nbsp; &nbsp;
+<br>&nbsp; &nbsp;
+//just for fun<br>&nbsp; &nbsp;
+rectangle_data&lt;int&gt; rect;<br>&nbsp; &nbsp;
+assert(extents(rect, ps ^ ps2));<br>&nbsp; &nbsp;
+assert(area(rect) == 225);<br>&nbsp; &nbsp;
+assert(area(rect ^ (ps ^ ps2)) == area(rect) - area(ps ^ ps2)); <br>&nbsp; &nbsp;
+return 0;<br>}<br>&nbsp; &nbsp;
+<br>//Now you know how to use the polygon set concept with library polygons<br>&nbsp; &nbsp;
+&nbsp;</font></p>
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/gtl_polygon_usage.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_usage.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,76 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Polygon Usage</title>
+</head>
+
+<body>
+
+<p><font face="Courier New">/*<br>
+Copyright 2008 Intel Corporation<br>
+<br>
+Use, modification and distribution are subject to the Boost Software License,<br>
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at<br>
+
http://www.boost.org/LICENSE_1_0.txt).<br>
+*/<br>
+#include &lt;boost/polygon/polygon.hpp&gt;<br>
+#include &lt;cassert&gt;<br>
+namespace gtl = boost::polygon;<br>
+using namespace boost::polygon::operators;<br><br>
+int main() {<br>
+&nbsp;&nbsp;&nbsp; //lets construct a 10x10 rectangle shaped polygon<br>
+&nbsp;&nbsp;&nbsp; typedef gtl::polygon_data&lt;int&gt; Polygon;<br>
+&nbsp;&nbsp;&nbsp; typedef gtl::polygon_traits&lt;Polygon&gt;::point_type Point;<br>
+&nbsp;&nbsp;&nbsp; Point pts[] = {gtl::construct&lt;Point&gt;(0, 0),<br>
+&nbsp;&nbsp;&nbsp; gtl::construct&lt;Point&gt;(10, 0),<br>
+&nbsp;&nbsp;&nbsp; gtl::construct&lt;Point&gt;(10, 10),<br>
+&nbsp;&nbsp;&nbsp; gtl::construct&lt;Point&gt;(0, 10) };<br>
+&nbsp;&nbsp;&nbsp; Polygon poly;<br>
+&nbsp;&nbsp;&nbsp; gtl::set_points(poly, pts, pts+4);<br>
+<br>
+&nbsp;&nbsp;&nbsp; //now lets see what we can do with this polygon<br>
+&nbsp;&nbsp;&nbsp; assert(gtl::area(poly) == 100.0f);<br>
+&nbsp;&nbsp;&nbsp; assert(gtl::contains(poly, gtl::construct&lt;Point&gt;(5, 5)));<br>
+&nbsp;&nbsp;&nbsp; assert(!gtl::contains(poly, gtl::construct&lt;Point&gt;(15, 5)));<br>
+&nbsp;&nbsp;&nbsp; gtl::rectangle_data&lt;int&gt; rect;<br>
+&nbsp;&nbsp;&nbsp; assert(gtl::extents(rect, poly)); //get bounding box of poly<br>
+&nbsp;&nbsp;&nbsp; assert(gtl::equivalence(rect, poly)); //hey, that's slick<br>
+&nbsp;&nbsp;&nbsp; assert(gtl::winding(poly) == gtl::COUNTERCLOCKWISE);<br>
+&nbsp;&nbsp;&nbsp; assert(gtl::perimeter(poly) == 40.0f);<br>
+<br>
+&nbsp;&nbsp;&nbsp; //add 5 to all coords of poly<br>
+&nbsp;&nbsp;&nbsp; gtl::convolve(poly, gtl::construct&lt;Point&gt;(5, 5));<br>
+&nbsp;&nbsp;&nbsp; //multiply all coords of poly by 2<br>
+&nbsp;&nbsp;&nbsp; gtl::scale_up(poly, 2);<br>
+&nbsp;&nbsp;&nbsp; gtl::set_points(rect, gtl::point_data&lt;int&gt;(10, 10),<br>
+&nbsp;&nbsp;&nbsp; gtl::point_data&lt;int&gt;(30, 30));<br>
+&nbsp;&nbsp;&nbsp; assert(gtl::equivalence(poly, rect));<br>
+&nbsp;&nbsp;&nbsp; return 0;<br>
+}<br>
+//Now you know how to use the built in polygon data type<br>
+&nbsp;</font></p>
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/gtl_polygon_with_holes_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_polygon_with_holes_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,395 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Polygon With Holes Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Polygon With Holes Concept</h1>
+
+<p>
+<p>The polygon_with_holes concept tag is <font face="Courier New">
+polygon_with_holes_concept</font></p>
+<p>
+To register a user defined type as a model of
+<font face="Times New Roman">polygon_with_holes </font>concept, specialize the
+geometry concept meta-function for that type.&nbsp; In the example below
+CPolygonWithHoles is registered as a model of polygon<font face="Times New Roman">_with_holes&nbsp;</font> concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CPolygonWithHoles&gt; { typedef polygon_with_holes_concept type; };</font><p>
+<font face="Times New Roman">The semantic of a polygon_with_holes is a polygon
+that it can provide iterators over holes that are also polygon.&nbsp; A mutable
+polygon_with_holes must also be able to set its geometry based on an interator
+range over polygon holes.&nbsp; There is no convention of winding of holes
+enforced within the library. </font><p>
+<font face="Times New Roman">Below is shown the default polygon with holes
+traits.&nbsp; Specialization of these traits is required for types that don't
+conform to the default behavior.&nbsp; Note, these traits are used by all
+polygon with holes concepts.</font><p><font face="Courier New">template &lt;typename
+T, typename enable = void&gt;<br>
+struct polygon_with_holes_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::iterator_holes_type
+iterator_holes_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::hole_type hole_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_holes_type begin_holes(const T&amp;
+t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.begin_holes();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_holes_type end_holes(const T&amp; t)
+{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.end_holes();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline unsigned int size_holes(const T&amp; t) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t.size_holes();<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p><font face="Courier New">template &lt;typename T, typename enable = void&gt;<br>
+struct polygon_with_holes_mutable_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; template &lt;typename iT&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline T&amp; set_holes(T&amp; t, iT inputBegin, iT
+inputEnd) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.set_holes(inputBegin,
+inputEnd);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+};</font></p>
+<p>An object that is a model of <font face="Courier New">
+polygon_with_holes_concept</font> can be viewed as a model of any of its
+refinements if it is determined at runtime to conform to the restriction of
+those concepts.&nbsp; This concept casting is accomplished through the
+<font face="Courier New">view_as&lt;&gt;()</font> function.</p>
+<p><font face="Courier New">view_as&lt;rectangle_concept&gt;(polygon_with_holes_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_90_concept&gt;(polygon_with_holes_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_90_with_holes_concept&gt;(polygon_with_holes_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_45_concept&gt;(polygon_with_holes_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_45_with_holes_concept&gt;(polygon_with_holes_object)</font><br>
+<font face="Courier New">view_as&lt;polygon_concept&gt;(polygon_with_holes_object)</font></p>
+<p>The return value of <font face="Courier New">view_as&lt;&gt;()</font> can be
+passed into any interface that expects an object of the conceptual type
+specified in its template parameter. </p>
+<h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>begin_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_with_holes.&nbsp;
+ Returns the begin iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_iterator_type <b>end_points</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_with_holes.&nbsp;
+ Returns the end iterator over the range of points that correspond to
+ vertices of the polygon.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ hole_iterator_type <b>begin_holes</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_with_holes.&nbsp;
+ Returns the begin iterator over the range of coordinates that correspond
+ to horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ hole_iterator_type <b>end_holes</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_with_holes.&nbsp;
+ Returns the end iterator over the range of coordinates that correspond
+ to horizontal and vertical edges.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_points</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_with_holes.&nbsp;&nbsp;
+ Sets the polygon to the point data range [b,e) that corresponds to
+ vertices of a polygon.&nbsp; </font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ iterator&gt;<br>
+ void <b>set_holes</b>(T&amp; polygon, iterator b, iterator e)</font></td>
+ <td><font face="Times New Roman">Expects a model of polygon_with_holes.&nbsp;&nbsp;
+ Sets the polygon holes to the hole data range [b,e)</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ unsigned int <b>size</b>(const T&amp; polygon)</font></td>
+ <td><font face="Times New Roman">Returns the number of edges in the
+ outer shell of the polygon_with_holes.&nbsp; Does not include sizes of
+ the holes.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
+ <td>Copies data from right object that models polygon_with_holes or one
+ of its refinements into left object
+ that models polygon_with_holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ bool <b>contains</b>(const T&amp;, const point_type&amp; point, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch=true)</font></td>
+ <td>Given an object that models polygon_with_holes and an object that models
+ point, returns true
+ if the polygon shell contains the point and one of its holes does not
+ contain the point.&nbsp; If the consider_touch
+ flag is true will return true if the point lies along the boundary of
+ the polygon or one of its holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">// get the center coordinate<br>
+ template &lt;typename T, typename point_type&gt;<br>
+ void <b>center</b>(point_type&amp; p, const T&amp; polygon)</font></td>
+ <td>Sets object that models point to the center point of the bounding
+ box of an object that models polygon_with_holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename rectangle_type&gt;<br>
+ bool <b>extents</b>(rectangle_type&amp; bbox, const T&amp; polygon)</font></td>
+ <td>Sets object that models rectangle to the bounding box of an object
+ that models polygon_with_holes and returns true.&nbsp; Returns false and
+ leaves bbox unchanged if polygon is empty.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ manhattan_area_type <b>area</b>(const T&amp; polygon)</font></td>
+ <td>Returns the area of an object
+ that models polygon_with_holes including subtracting the area of its
+ holes from the area of the outer shell polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ direction_1d <b>winding</b>(const T&amp; polygon)</font></td>
+ <td>Returns the winding direction of an object
+ that models polygon_with_holes, LOW == CLOCKWISE, HIGH =
+ COUNTERCLOCKWISE.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_difference <b>perimeter</b>(const T&amp; polygon)</font></td>
+ <td>Returns the perimeter length of an object
+ that models polygon, including the perimeters of the holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename transform_type&gt;<br>
+ T&amp; <b>transform</b>(T&amp; polygon, const transform_type&amp;)</font></td>
+ <td>Applies transform() on the vertices of polygon and sets the polygon to that described by the result of
+ transforming its vertices.&nbsp; Also applies transform() on the holes
+ of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_up</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales up outer shell and holes of an object that models
+ polygon by unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>scale_down</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
+ <td>Scales down outer shell and holes of an object that models
+ polygon by unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, scaling_type&gt;<br>
+ T&amp; <b>scale</b>(T&amp; rectangle, double scaling) </font></td>
+ <td>Scales outer shell and holes of an object that models polygon by
+ floating point factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>move</b>(T&amp; polygon, orientation_2d,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_difference displacement)</font></td>
+ <td>Adds displacement value to coordinate indicated by orientation_2d of
+ vertices of an object that models polygon .</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename polygon_type, typename point_type&gt;<br>
+ polygon_type&amp; <b>convolve</b>(polygon_type&amp; polygon,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const point_type&amp; point)</font></td>
+ <td>Convolves coordinate values of point with the outer shell and holes of an
+ object that models polygon_with_holes.</td>
+ </tr>
+ </table>
+ <h1>Polygon With Holes Data</h1>
+
+<p>
+<p>The library provides a model of polygon with holes concept declared
+<font face="Courier New">
+template&lt;typename T&gt; polygon_with_holes_data </font>where T is the
+coordinate type.</p>
+<p>This data type is used internally when a polygon with holes is
+needed and is available to the library user who finds it convenient to use a
+library polygon data type instead of providing their own.&nbsp; The data type is
+implemented to be convenient to use with the library traits.</p>
+<h2>Members</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><b><font face="Courier New">geometry_type</font></b></td>
+ <td><font face="Times New Roman">polygon_with_holes_concept</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">coordinate_type</font></b></td>
+ <td><font face="Times New Roman">T</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">iterator_type</font></b></td>
+ <td>Iterator over vertices point_data&lt;T&gt; vertices of polygon</td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">iterator_holes_type</font></b></td>
+ <td><font face="Times New Roman">Iterator over hole polygons of type
+ polygon_data&lt;T&gt;.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_with_holes_data</b>()</font></td>
+ <td><font face="Times New Roman">Default constructs the </font>polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>polygon_with_holes_data</b>(const
+ polygon_with_holes_data&amp; that)</font></td>
+ <td><font face="Times New Roman">Copy construct</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">polygon_with_holes_data&amp; <b>
+ <br>operator=</b>(const polygon_with_holes_data&amp; that)</font></td>
+ <td>Assignment operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b> </b>
+ polygon_with_holes_data&amp;<b>&nbsp;
+ <br> operator=</b>(const T2&amp; that) const</font></td>
+ <td>Assign from an object that is a model of polygon with holes.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>begin</b>()
+ const</font></td>
+ <td>Get the begin iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_type <b>end</b>()
+ const</font></td>
+ <td>Get the end iterator over vertices of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_hole_type <b>begin_holes</b>()
+ const</font></td>
+ <td>Get the begin compact iterator over non-redundant coordinates of the
+ polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">iterator_hole_type <b>end_holes</b>()
+ const</font></td>
+ <td>Get the end compact iterator over non-redundant coordinates of the
+ polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">std::size_t <b>size</b>() const</font></td>
+ <td>Get the number of elements in the sequence stored to the polygon,
+ usually equal to the number of edges of the polygon.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">std::size_t <b>size_holes</b>() const</font></td>
+ <td>Get the number of holes in the polygon</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set</b>(iT begin_points, iT end_points)</font></td>
+ <td>Sets the polygon to the iterator range of points. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename iT&gt;<b>&nbsp;
+ <br> </b>void <b>set_holes</b>(iT begin_holes, iT end_choless)</font></td>
+ <td>Sets the polygon holes the iterator range of hole polygons.&nbsp; These
+ polygons in the input range may be either polygon_data or
+ polygon_with_holes_data or any type that provides begin and end member
+ functions to iterate over point_data&lt;T&gt;.</td>
+ </tr>
+</table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table3">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_property_merge.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_property_merge.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Property Merge</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Property Merge</h1>
+
+<p>
+<p>The following is the declaration of the property merge algorithm.<p>
+<font face="Courier New">template &lt;typename coordinate_type, typename
+property_type&gt;<br>
+class property_merge;</font><p>The property algorithm computes the n-layer
+map overlay of input polygon sets.&nbsp; Each input geometry is inserted along
+with a property value.&nbsp; The property type can be anything suitable for use
+as an element of a std::set.&nbsp; Multiple geometry objects can be separately
+inserted with the same property value.&nbsp; To store the result of this
+operation a fairly complex container is required.&nbsp; Resulting geometries are
+associated with unique subsets of property values of the input geometry.&nbsp;
+Two suitable containers for storing the result of a property merge operation
+are:<p><font face="Courier New">std::map&lt;std::set&lt;property_type&gt;, polygon_set_data&lt;coordinate_type&gt;
+&gt;<br>
+std::map&lt;std::vector&lt;property_type&gt;, polygon_set_data&lt;coordinate_type&gt; &gt;</font><p>
+Example code property_merge_usage.cpp
+ demonstrates using the n-layer map-overlay algorithm on polygon data.<h2>Member Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><b><font face="Courier New">property_merge</font></b><font face="Courier New">()</font></td>
+ <td>Default constructor. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">property_merge</font></b><font face="Courier New">(const
+ property_merge&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">void <br><b>insert</b>(const polygon_set_data&lt;coordinate_type&gt;&amp; ps,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const property_type&amp; property)</font></td>
+ <td>I<font face="Times New Roman">nsert a polygon set with an associated
+ property.</font>&nbsp; Linear wrt vertices inserted.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;class GeoObjT&gt;<br>
+void <b>insert</b>(const GeoObjT&amp; geoObj,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const property_type&amp; property)</font></td>
+ <td>Insert a geometry object that is a refinement of polygon set with an
+ associated property.&nbsp; Linear wrt vertices inserted.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename result_type&gt;<br>
+void <b>merge</b>(result_type&amp; result)</font></td>
+ <td>Accepts a container object that conforms to the expectations defined
+ above.&nbsp; Performs property merge and populates the container
+ object.&nbsp; Expected n log n runtime, worst case quadratic runtime wrt.
+ vertices + intersections.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table2">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_property_merge_45.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_property_merge_45.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Property Merge 90</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Property Merge 45</h1>
+
+<p>
+<p>The following is the declaration of the property merge algorithm.<p>
+<font face="Courier New">template &lt;typename coordinate_type, typename
+property_type&gt;<br>
+class property_merge_45;</font><p>The property algorithm computes the n-layer
+map overlay of input polygon sets.&nbsp; Each input geometry is inserted along
+with a property value.&nbsp; The property type can be anything suitable for use
+as an element of a std::set.&nbsp; Multiple geometry objects can be separately
+inserted with the same property value.&nbsp; To store the result of this
+operation a fairly complex container is required.&nbsp; Resulting geometries are
+associated with unique subsets of property values of the input geometry.&nbsp;
+Two suitable containers for storing the result of a property merge operation
+are:<p><font face="Courier New">std::map&lt;std::set&lt;property_type&gt;, polygon_45_set_data&lt;coordinate_type&gt;
+&gt;<br>
+std::map&lt;std::vector&lt;property_type&gt;, polygon_45_set_data&lt;coordinate_type&gt; &gt;</font><p>
+Example code property_merge_usage.cpp
+ demonstrates using the n-layer map-overlay algorithm on polygon 90 data.<h2>Member Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><b><font face="Courier New">property_merge_45</font></b><font face="Courier New">()</font></td>
+ <td>Default constructor. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">property_merge_45</font></b><font face="Courier New">(const
+ property_merge_45&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">void <br><b>insert</b>(const polygon_45_set_data&lt;coordinate_type&gt;&amp; ps,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const property_type&amp; property)</font></td>
+ <td>I<font face="Times New Roman">nsert a polygon set with an associated
+ property.</font>&nbsp; Linear wrt vertices inserted.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;class GeoObjT&gt;<br>
+void <b>insert</b>(const GeoObjT&amp; geoObj,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const property_type&amp; property)</font></td>
+ <td>Insert a geometry object that is a refinement of polygon 45 set with
+ an associated property.&nbsp; Linear wrt vertices inserted.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename result_type&gt;<br>
+void <b>merge</b>(result_type&amp; result)</font></td>
+ <td>Accepts a container object that conforms to the expectations defined
+ above.&nbsp; Performs property merge and populates the container
+ object.&nbsp; O(n log n) runtime wrt. vertices + intersections.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table2">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_property_merge_90.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_property_merge_90.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Property Merge 90</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Property Merge 90</h1>
+
+<p>
+<p>The following is the declaration of the property merge algorithm.<p>
+<font face="Courier New">template &lt;typename coordinate_type, typename
+property_type&gt;<br>
+class property_merge_90;</font><p>The property algorithm computes the n-layer
+map overlay of input polygon sets.&nbsp; Each input geometry is inserted along
+with a property value.&nbsp; The property type can be anything suitable for use
+as an element of a std::set.&nbsp; Multiple geometry objects can be separately
+inserted with the same property value.&nbsp; To store the result of this
+operation a fairly complex container is required.&nbsp; Resulting geometries are
+associated with unique subsets of property values of the input geometry.&nbsp;
+Two suitable containers for storing the result of a property merge operation
+are:<p><font face="Courier New">std::map&lt;std::set&lt;property_type&gt;, polygon_90_set_data&lt;coordinate_type&gt;
+&gt;<br>
+std::map&lt;std::vector&lt;property_type&gt;, polygon_90_set_data&lt;coordinate_type&gt; &gt;</font><p>
+Example code property_merge_usage.cpp
+ demonstrates using the n-layer map-overlay algorithm on polygon 90 data.<h2>Member Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><b><font face="Courier New">property_merge_90</font></b><font face="Courier New">()</font></td>
+ <td>Default constructor. </td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">property_merge_90</font></b><font face="Courier New">(const
+ property_merge_90&amp; that)</font></td>
+ <td>Copy construct.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">void <br><b>insert</b>(const polygon_90_set_data&lt;coordinate_type&gt;&amp; ps,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const property_type&amp; property)</font></td>
+ <td>I<font face="Times New Roman">nsert a polygon set with an associated
+ property.</font>&nbsp; Linear wrt vertices inserted.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;class GeoObjT&gt;<br>
+void <b>insert</b>(const GeoObjT&amp; geoObj,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const property_type&amp; property)</font></td>
+ <td>Insert a geometry object that is a refinement of polygon 90 set with
+ an associated property.&nbsp; Linear wrt vertices inserted.</td>
+ </tr>
+ <tr>
+ <td width="586">
+<font face="Courier New">
+template &lt;typename result_type&gt;<br>
+void <b>merge</b>(result_type&amp; result)</font></td>
+ <td>Accepts a container object that conforms to the expectations defined
+ above.&nbsp; Performs property merge and populates the container
+ object.&nbsp; O(n log n) runtime wrt. vertices + intersections.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table2">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_property_merge_usage.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_property_merge_usage.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,127 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Property Merge Usage</title>
+</head>
+
+<body>
+
+<p><font face="Courier New">/*<br>
+Copyright 2008 Intel Corporation<br>
+<br>
+Use, modification and distribution are subject to the Boost Software License,<br>
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at<br>
+
http://www.boost.org/LICENSE_1_0.txt).<br>
+*/<br>
+#include &lt;boost/polygon/polygon.hpp&gt;<br>
+#include &lt;cassert&gt;<br>
+namespace gtl = boost::polygon;<br>
+using namespace boost::polygon::operators;<br>
+<br>//just a little meta-programming to get things off on the right foot<br>
+template &lt;typename T&gt;<br>
+struct lookup_polygon_set_type { typedef gtl::polygon_set_data&lt;int&gt; type; };<br>
+template &lt;typename T, typename T2&gt;<br>
+struct lookup_polygon_set_type&lt;gtl::property_merge_90&lt;T, T2&gt; &gt; { <br>
+&nbsp; typedef gtl::polygon_90_set_data&lt;int&gt; type; };<br>
+<br>
+//This function works with both the 90 and general versions<br>
+//of property merge/map overlay algorithm<br>
+template &lt;typename pm_type&gt;<br>
+void test_pm() {<br>
+&nbsp; std::vector&lt;gtl::rectangle_data&lt;int&gt; &gt; test_data;<br>
+&nbsp; test_data.push_back(gtl::rectangle_data&lt;int&gt;(11, 10, 31, 30));<br>
+&nbsp; test_data.push_back(gtl::rectangle_data&lt;int&gt;(1, 0, 21, 20));<br>
+&nbsp; test_data.push_back(gtl::rectangle_data&lt;int&gt;(6, 15, 16, 25));<br>
+<br>
+&nbsp; pm_type pm;<br>
+<br>
+&nbsp; //insert our test geometry into the property merge algorithm<br>
+&nbsp; for(unsigned int i = 0; i &lt; test_data.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; pm.insert(test_data[i], i); //notice I use the index as the
+property value<br>
+&nbsp; }<br>
+<br>
+&nbsp; typedef typename lookup_polygon_set_type&lt;pm_type&gt;::type polygon_set_type;<br>
+&nbsp; typedef std::map&lt;std::set&lt;int&gt;, polygon_set_type&gt;
+property_merge_result_type;<br>
+<br>
+&nbsp; std::set&lt;int&gt; key;<br>
+<br>
+&nbsp; //There are 8 different combinations of our input geometries<br>
+&nbsp; //null combination is not interesting, so really 7<br>
+<br>
+&nbsp; property_merge_result_type result;<br>
+&nbsp; pm.merge(result);<br>
+<br>
+&nbsp; //lets enumerate boolean combinations of inputs (hold onto your hats)<br>
+&nbsp; for(unsigned int i = 0; i &lt; 8; ++i) {<br>
+&nbsp;&nbsp;&nbsp; bool bits[3] = {i &amp; 1, i &amp; 2, i &amp; 4}; //break out bit array<br>
+&nbsp;&nbsp;&nbsp; polygon_set_type test_set;<br>
+&nbsp;&nbsp;&nbsp; std::set&lt;int&gt; key;<br>
+&nbsp;&nbsp;&nbsp; for(unsigned int j = 0; j &lt; 3; ++j) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(bits[j]) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key.insert(key.end(), j);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test_set += test_data[j];<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; for(unsigned int j = 0; j &lt; 3; ++j) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(bits[j]) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test_set *= test_data[j];<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; for(unsigned int j = 0; j &lt; 3; ++j) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!bits[j])<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test_set -= test_data[j];<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; if(test_set.empty()) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //only the null combination should not exist<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assert(i == 0);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //a combination that does not exist should not<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //be present in result<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assert(result.find(key) == result.end());<br>
+&nbsp;&nbsp;&nbsp; } else {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assert(gtl::equivalence(result[key], test_set));<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; }<br>
+<br>
+&nbsp; //Notice that we have to do O(2^n) booleans to compose the same<br>
+&nbsp; //result that is produced in one pass of property merge<br>
+&nbsp; //given n input layers (8 = 2^3 in this example)<br>
+}<br>
+<br>
+int main() {<br>
+&nbsp;
+test_pm&lt;gtl::property_merge_90&lt;int, int&gt; &gt;();<br>
+&nbsp;
+test_pm&lt;gtl::property_merge&lt;int, int&gt; &gt;();<br>
+&nbsp;
+return 0;<br>
+}<br>
+//Now you know how to use the manhattan and arbitrary angle property<br>
+//merge algorithms to perform map overlay on n layers of input geometry<br>
+&nbsp;</font></p>
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</body>
+
+</html>

Added: trunk/libs/polygon/doc/gtl_rectangle_concept.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_rectangle_concept.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,732 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:(null)1="http://www.w3.org/TR/REC-html40"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Rectangle Concept</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>Rectangle Concept</h1>
+
+<p>
+<p>The rectangle concept tag is <font face="Courier New">
+rectangle_concept</font></p>
+<p>
+To register a user defined type as a model of
+<font face="Times New Roman">rectangle </font>concept, specialize the
+geometry concept meta-function for that type.&nbsp; In the example below CRectangle is registered as a model of
+rectangle&nbsp; concept.<p>
+<font face="Courier New">template &lt;&gt;<br>
+struct geometry_concept&lt;CRectangle&gt; { typedef rectangle_concept type; };</font><p>
+<font face="Times New Roman">The semantic of a rectangle is that it has an x and
+a y interval and these intervals conform to the semantic of an interval
+including its invariant.&nbsp; This invariant on the intervals of a rectangle is enforced by the generic library functions that
+operate on rectangles, and is not expected of the data type itself or the concept
+mapping of that data type to the rectangle concept through its traits.&nbsp; In
+this way a boost::tuple&lt;int, int, int, int&gt; or boost::array&lt;int, 4&gt;
+could be made models of rectangle by simply providing indirect access to their
+elements through traits.</font><p>
+<font face="Times New Roman">Below is shown the default rectangle traits.&nbsp;
+Specialization of these traits is required for types that don't conform to the
+default behavior.&nbsp; The interested reader will note SFINAE is used on the
+traits to allow only an object that provides a member type definition of
+interval_type to work with the default read only traits.&nbsp; This becomes
+necessary when refinements of concepts are used and it is undesirable to attempt
+to match default traits to non-rectangle types at compile time.&nbsp;
+Specializing rectangle_traits can be done easily by simply providing gtl_yes as
+the enable parameter.</font><p>
+<font face="Courier New">template &lt;typename T, typename enable = gtl_yes&gt;<br>
+struct rectangle_traits {};</font><p>
+<font face="Courier New">template &lt;typename T&gt;<br>
+struct rectangle_traits&lt;T, gtl_no&gt; {};<br>
+<br>
+template &lt;typename T&gt;<br>
+struct rectangle_traits&lt;T, typename gtl_same_type&lt;typename T::interval_type,
+typename T::interval_type&gt;::type&gt; {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::coordinate_type coordinate_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::interval_type interval_type;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline interval_type get(const T&amp; rectangle,
+orientation_2d orient) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
+rectangle.get(orient); }<br>
+};<br>
+<br>
+template &lt;typename T&gt;<br>
+struct rectangle_mutable_traits {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; template &lt;typename T2&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline void set(T&amp; rectangle, orientation_2d
+orient, const T2&amp; interval) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rectangle.set(orient,
+interval); }<br>
+&nbsp;&nbsp;&nbsp;&nbsp; template &lt;typename T2, typename T3&gt;<br>
+&nbsp;&nbsp;&nbsp;&nbsp; static inline T construct(const T2&amp; interval_horizontal,
+const T3&amp; interval_vertical) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
+T(interval_horizontal, interval_vertical); }<br>
+};</font><h2>Functions</h2>
+<table border="1" width="100%" id="table1">
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ interval_type <b>get</b>(const T&amp; rectangle, orientation_2d)</font></td>
+ <td><font face="Times New Roman">Expects a model of rectangle.&nbsp;
+ Returns the x interval or y interval of the rectangle, depending on the
+ orientation_2d value.</font><font face="Courier New"><br>
+&nbsp;</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ coordinate_type&gt;<br>
+ void <b>set</b>(T&amp; rectangle, orientation_2d, coordinate_type)</font></td>
+ <td><font face="Times New Roman">Expects a model of rectangle.&nbsp;&nbsp;
+ Sets the x interval or y interval of the rectangle to the
+ coordinate, depending on the orientation_2d value.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ interval_type <b>get</b>(const T&amp; rectangle, orientation_2d,
+ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; direction_1d)</font></td>
+ <td><font face="Times New Roman">Expects a model of rectangle.&nbsp;
+ Returns the coordinate specificed by the direction_1d value of the x interval or y interval of the rectangle, depending on the
+ orientation_2d value.</font><font face="Courier New"><br>
+&nbsp;</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ coordinate_type&gt;<br>
+ void <b>set</b>(T&amp; rectangle, orientation_2d, direction_1d, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_type)</font></td>
+ <td><font face="Times New Roman">Expects a model of rectangle.&nbsp;&nbsp;
+ Sets the coordinate specified by the direction_1d value of the x interval or y interval of the rectangle to the
+ coordinate, depending on the orientation_2d value.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ T2&gt;<br>
+ T <b>construct</b>(const T2&amp; h, const T2&amp; v)</font></td>
+ <td>Construct an object that is a model of rectangle given x interval
+ and y intervals.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ T2&gt;<br>
+ T <b>construct</b>(coordinate_type xl, coordinate_type yl, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_type
+ xh, coordinate_type yh)</font></td>
+ <td>Construct an object that is a model of rectangle given four coordinate values.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
+ <td>Copies data from right object that models rectangle into left object
+ that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ T2&gt;<br>
+ bool <b>equivalence</b>(const T&amp; rectangle1, </font>
+ <br><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const T2&amp; rectangle2)</font></td>
+ <td>Given two objects that model rectangle, compares and returns true if
+ their x and y intervals are respectively equivalent.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ bool <b>contains</b>(const T&amp;, const point_type&amp; point, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch=true)</font></td>
+ <td>Given an object that models rectangle and an object that models
+ point, returns true
+ if the rectangle contains the point.&nbsp; If the consider_touch
+ flag is true will return true if the point lies along the boundary of
+ the rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>contains</b>(const T1&amp; a, const T2&amp; b, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch = true) </font></td>
+ <td>Returns true if model of rectangle a contains both intervals of
+ model of rectangle b.&nbsp; If the consider_touch flag is true will
+ consider rectangle b contained even if it touches the boundary of a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ interval_type <b>horizontal</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the x interval of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ interval_type <b>vertical</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the y interval of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_type <b>xl</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the west coordinate of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_type <b>xh</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the east coordinate of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_type <b>yl</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the south coordinate of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_type <b>yh</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the north coordinate of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_type <b>ll</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the lower left corner point of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_type <b>lr</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the lower right corner point of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_type <b>ul</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the upper left corner point of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ point_type <b>ur</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the upper right corner point of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">// get the center coordinate<br>
+ template &lt;typename T, typename point_type&gt;<br>
+ void <b>center</b>(point_type&amp; p, const T&amp; rectangle)</font></td>
+ <td>Sets object that models point to the center point of an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename interval_type&gt;<br>
+ void <b>horizontal</b>(T&amp; rectangle, const interval_type&amp; i)</font></td>
+ <td>Sets the x interval of the object that models rectangle to be equal
+ to the value of an object that models interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename interval_type&gt;<br>
+ void <b>vertical</b>(T&amp; rectangle, const interval_type&amp; i )</font></td>
+ <td>Sets the y interval of the object that models rectangle to be equal
+ to the value of an object that models interval.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ rectangle_type&gt;<br>
+ void <b>xl</b>(rectangle_type&amp; rectangle, coordinate_type )</font></td>
+ <td>Sets the west coordinate of the object that models rectangle to be equal
+ to the coordinate value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ rectangle_type&gt;<br>
+ void <b>xh</b>(rectangle_type&amp; rectangle, coordinate_type )</font></td>
+ <td>Sets the east coordinate of the object that models rectangle to be equal
+ to the coordinate value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ rectangle_type&gt;<br>
+ void <b>yl</b>(rectangle_type&amp; rectangle, coordinate_type )</font></td>
+ <td>Sets the south coordinate of the object that models rectangle to be equal
+ to the coordinate value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ rectangle_type&gt;<br>
+ void <b>yh</b>(rectangle_type&amp; rectangle, coordinate_type )</font></td>
+ <td>Sets the north coordinate of the object that models rectangle to be equal
+ to the coordinate value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename T1, typename T2&gt;<br>
+ T&amp; <b>set_points</b>(T&amp; rectangle, const T1&amp; p1, const T2&amp; p2)</font></td>
+ <td>Sets the rectangle to the rectangle fully described by the points p1
+ and p2.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_difference <b>delta</b>(const T&amp; rectangle,
+ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orientation_2d)</font></td>
+ <td>Returns the delta of the interval specified by orientation_2d of an object
+ that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ manhattan_area_type <b>area</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the area of an object
+ that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_difference <b>half_perimeter</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the length plus width of an object
+ that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ coordinate_difference <b>perimeter</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the perimeter length of an object
+ that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ orientation_2d <b>quess_orientation</b>(const T&amp; rectangle)</font></td>
+ <td>Returns the orientation in which the rectangle has a longer delta.&nbsp;
+ Returns HORIZONTAL if the rectangle is a square.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ rectangle_type&gt;<br>
+ rectangle_type&amp; <b>transform</b>(rectangle_type&amp; rectangle,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_type axis = 0)</font></td>
+ <td>Applies transform() on the two points that fully describe the
+ rectangle and sets the rectangle to that described by the result of
+ transforming those points.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ rectangle_type&gt;<br>
+ rectangle_type&amp; <b>scale_up</b>(rectangle_type&amp; rectangle, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type factor)</font></td>
+ <td>Scales up x interval and y interval&nbsp; of an object that models
+ rectangle by unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ rectangle_type&gt;<br>
+ rectangle_type&amp; <b>scale_down</b>(rectangle_type&amp; rectangle, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned_area_type factor)</font></td>
+ <td>Scales down x interval and y interval&nbsp; of an object that models
+ rectangle by unsigned factor.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ rectangle_type, scaling_type&gt;<br>
+ rectangle_type&amp; <b>scale</b>(rectangle_type&amp; rectangle,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const scaling_type&amp; scaling) </font></td>
+ <td>Applies scale() on the two points that fully describe the rectangle
+ and sets the rectangle to that described by the result of transforming
+ those points.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>move</b>(T&amp; rectangle, orientation_2d,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_difference displacement)</font></td>
+ <td>Adds displacement value to interval indicated by orientation_2d of an
+ object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ rectangle_type, typename point_type&gt;<br>
+ rectangle_type&amp; <b>convolve</b>(rectangle_type&amp; rectangle,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const point_type&amp; point)</font></td>
+ <td>Convolves coordinate values of point with x interval and y interval&nbsp; of an
+ object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename
+ rectangle_type, typename point_type&gt;<br>
+ rectangle_type&amp; <b>deconvolve</b>(rectangle_type&amp; rectangle,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const point_type&amp; point)</font></td>
+ <td>Deconvolves coordinate values of point withx interval and y interval&nbsp; of
+ an object that models rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>convolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Convolves x interval&nbsp; of b with x interval&nbsp; of a and
+ convolves y
+ interval&nbsp; of b with y interval&nbsp; of a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>deconvolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Deconvolves x interval&nbsp; of b with x interval&nbsp; of a and
+ deconvolves y interval&nbsp; of b with y interval&nbsp; of a. </td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>reflected_convolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Reflected convolves y interval&nbsp; of b with x interval&nbsp; of a and
+ reflected convolves x
+ interval&nbsp; of b with y interval&nbsp; of a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T1&amp; <b>reflected_deconvolve</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Reflected deconvolves y interval&nbsp; of b with x interval&nbsp; of a and
+ reflected deconvolves x interval&nbsp; of b with y interval&nbsp; of a.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ coordinate_difference <b>euclidean_distance</b>(const T&amp;,<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const point_type&amp; point,
+ orienation_2d)</font></td>
+ <td>Returns the distance from an object that models rectangle to an
+ object that models point along the given orientation.&nbsp; Returns zero
+ if the point is contained within the rectangle along that orientation.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1,
+ typename T2&gt;<br>
+ coordinate_difference <b>euclidean_distance</b>(const T1&amp; a,<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const T2&amp; b, orienation_2d)</font></td>
+ <td>Returns the distance from an object that models rectangle to an
+ object that models rectangle along the given orientation.&nbsp; Returns
+ zero if the intervals of the rectangles overlap along that orientation.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ coordinate_difference <b>square_euclidean_distance</b>(const T&amp;,<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const point_type&amp; point)</font></td>
+ <td>Returns the square of the Euclidean distance between a point and a
+ rectangle.&nbsp; Returns zero if the point is contained within the
+ rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1,
+ typename T2&gt;<br>
+ coordinate_difference <b>square_euclidean_distance</b><br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (const T1&amp; a, const T2&amp; b)</font></td>
+ <td>Returns the square of the Euclidean distance between rectangles a
+ and b.&nbsp; Returns zero if the rectangles intersect.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ coordinate_difference <b>manhattan_distance</b>(const T&amp;,<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const point_type&amp; point)</font></td>
+ <td>Returns the Manhattan distance between a point and a rectangle.&nbsp;
+ Returns zero if the point is contained within the rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1,
+ typename T2&gt;<br>
+ coordinate_difference <b>manhattan_distance</b>(const T1&amp; a, <br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T2&amp; b)</font></td>
+ <td>Returns the Manhattan distance between rectangles a and b.&nbsp;
+ Returns zero if the rectangles intersect.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T,
+ typename point_type&gt;<br>
+ coordinate_distance <b>euclidean_distance</b>(const T&amp;,<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const point_type&amp; point)</font></td>
+ <td>Returns the Euclidean distance between a point and a rectangle.&nbsp;
+ Returns zero if the point is contained within the rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1,
+ typename T2&gt;<br>
+ coordinate_distance <b>euclidean_distance</b>(const T1&amp; a, <br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T2&amp; b)</font></td>
+ <td>Returns the Euclidean distance between rectangles a and b.&nbsp;
+ Returns zero if the rectangles intersect.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>intersects</b>(const T1&amp; a, const T2&amp; b, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch = true)</font></td>
+ <td>Returns true if two objects that model rectangle overlap.&nbsp; If
+ the consider_touch flag is true touching at the sides or corners is
+ considered overlap.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>boundaries_intersect</b>(const T1&amp; a, const T2&amp; b, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch = true)</font></td>
+ <td>Returns true is two objects that model rectangle partially overlap
+ such that one there is an intersection between the edges of the two
+ rectangles&nbsp; If the consider_touch flag is true a coordinate is
+ considered contained even if the two rectangles touch only along a side
+ or corner.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>abuts</b>(const T1&amp; a, const T2&amp; b,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; direction_2d dir)
+ </font></td>
+ <td>Returns true if rectangle b abuts but down not overlap rectangle a
+ on the side of rectangle a specified by dir.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>abuts</b>(const T1&amp; a, const T2&amp; b,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orientation_2d)
+ </font></td>
+ <td>Returns true if rectangle b abuts but down not overlap rectangle a
+ on either side of rectangle a specified by the orientation_2d.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>abuts</b>(const T1&amp; a, const T2&amp; b)</font></td>
+ <td>Returns true if rectangle b abuts but down not overlap rectangle a
+ on any side.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>intersect</b>(T1&amp; a, const T2&amp; b, orientation_2d<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch = true) </font></td>
+ <td>Sets rectangle a to the intersection of rectangle a and interval b
+ along the orientation_2d
+ and returns true.&nbsp; If the does not intersect the interval, the
+ rectangle is unchanged and the function returns false.&nbsp; If the flag consider_touch is true
+ intervals that abut are considered to intersect.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>intersect</b>(T1&amp; a, const T2&amp; b,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ bool consider_touch = true) </font></td>
+ <td>Sets rectangle a to the intersection of rectangle a and rectangle b
+ and return true.&nbsp; If the two rectangles do not intersect rectangle
+ a is unchanged and the function returns false.&nbsp; If the flag
+ consider_touch is true rectangles that abut are considered to intersect.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ T&amp; <b>generalized_intersect</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>Same as intersect, but if they do not intersect set a to the
+ rectangle between a and b by applying generalized_intersect() on the
+ intervals of the rectangles.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; rectangle, coordinate_type)</font></td>
+ <td>Bloats x and y intervals of rectangle by coordinate value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; rectangle, direction_2d, coordinate_type)</font></td>
+ <td>Bloats side of rectangle specified by direction_2d by coordinate
+ value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>bloat</b>(T&amp; rectangle, orientation_2d, coordinate_type)</font></td>
+ <td>Bloats interval of rectangle specified by orientation_2d by
+ coordinate value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; rectangle, coordinate_type)</font></td>
+ <td>Shrinks x and y intervals of rectangle by coordinate value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; rectangle, direction_2d, coordinate_type)</font></td>
+ <td>Shrinks side of rectangle specified by direction_2d by coordinate
+ value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T&gt;<br>
+ T&amp; <b>shrink</b>(T&amp; rectangle, orientation_2d, coordinate_type)</font></td>
+ <td>Shrinks interval of rectangle specified by orientation_2d by
+ coordinate value.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<br>
+ bool <b>encompass</b>(T1&amp; a, const T2&amp; b)</font></td>
+ <td>The x and y intervals of a are set to encompass the x and y
+ intervals of b respectively.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ point_type&gt;<br>
+ bool <b>encompass</b>(T&amp; rectangle, const point_type&amp; point)</font></td>
+ <td>The x and y intervals of rectangle are set to encompass the x and y
+ coordinates of point respectively.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ interval_type&gt;<br>
+ bool <b>encompass</b>(T&amp; rectangle, const interval_type&amp; i,
+ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orientation_2d)</font></td>
+ <td>The interval of rectangle specified by orientation_2d is set to encompass the
+ interval i.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T, typename
+ point_type&gt;<br>
+ bool <b>get_corner</b>(point_type&amp; point, const T&amp; rectangle,&nbsp;
+ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ direction_2d, direction_1d)</font></td>
+ <td>Sets point to the corner of the rectangle you reach if you look at
+ its side specified by direction_2d from within the rectangle and turn in
+ the direction_1d direction (low == left, high = right).&nbsp; Always
+ returns true.</td>
+ </tr>
+</table>
+ <h1>Rectangle Data</h1>
+
+<p>
+<p>The library provides a model of rectangle concept declared
+<font face="Courier New">
+template&lt;typename T&gt; rectangle_data </font>where T is the coordinate type.</p>
+<p>This data type is used internally when a rectangle is needed and is available
+to the library user who finds it convenient to use a library rectangle data type
+instead of providing their own.&nbsp; The data type is implemented to be
+convenient to use with the library traits.</p>
+<h2>Members</h2>
+<table border="1" width="100%" id="table2">
+ <tr>
+ <td width="586"><b><font face="Courier New">geometry_type</font></b></td>
+ <td><font face="Times New Roman">rectangle_concept</font></td>
+ </tr>
+ <tr>
+ <td width="586"><b><font face="Courier New">coordinate_type</font></b></td>
+ <td><font face="Times New Roman">T</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>interval_type</b></font></td>
+ <td><font face="Times New Roman">interval_data&lt;T&gt;</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>rectangle_data</b>(T xl, T
+ yl, T xh, T yh)</font></td>
+ <td><font face="Times New Roman">Constructs a rectangle with four
+ coordinates.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T1, typename
+ T2&gt;<b><br>
+ rectangle_data</b>(const T1&amp; horizontal_interval,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ const T2&amp; vertical_interval)</font></td>
+ <td><font face="Times New Roman">Constructs a rectangle with two objects
+ that model interval.</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New"><b>rectangle_data</b>(const
+ rectangle_data&amp; that)</font></td>
+ <td><font face="Times New Roman">Copy construct</font></td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">rectangle_data&amp; <b>operator=</b>(const
+ rectangle_data&amp; that)</font></td>
+ <td>Assignment operator.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>rectangle_data& <b>
+ operator=</b>(const T2&amp; that) const</font></td>
+ <td>Assign from an object that is a model of rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator==</b>(const T2&amp; that) const</font></td>
+ <td>Compare equality to an object that is a model of rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<b>
+ <br> </b>bool<b>
+ operator!=</b>(const T2&amp; that) const</font></td>
+ <td>Compare inequality to an object that is a model of rectangle.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">interval_data&lt;T&gt; <b>get</b>(orientation_2d
+ orient) const</font></td>
+ <td>Get the interval in the given orientation.</td>
+ </tr>
+ <tr>
+ <td width="586"><font face="Courier New">template &lt;typename T2&gt;<br>
+ void <b>set</b>(orientation_2d orient, const T2&amp; value)</font></td>
+ <td>Sets the interval in the given orientation to the value of an object
+ that models interval.</td>
+ </tr>
+ </table>
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+&nbsp;</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/gtl_tutorial.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/gtl_tutorial.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,658 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>Polygon Usage</title>
+</head>
+
+<body>
+
+<h1>Layout Versus Schematic Tutorial</h1>
+<p>In this tutorial we will implement a toy VLSI layout verification
+application.&nbsp; In VLSI CAD an important step of design is the sign off check
+that verifies that the physical layout as drawn by mask designers and automated
+tools implements the logical schematic specified by design engineers.&nbsp;
+Physical layout is modeled as polygons on layers that are used to print the
+layout to the silicon wafer during manufacture.&nbsp; It is much better to find
+physical design mistakes before spending millions of dollars to prepare
+lithography masks and run a test lot of wafers.</p>
+<p>Real layout file formats are binary and often compressed and represent a
+folded hierarchical model of layout where a group of polygons can be grouped
+into a cell and instantiated as a group into other cells.&nbsp; For this
+tutorial we assume a simplified ascii layout file format with no design
+hierarchy, which we would call &quot;flat&quot; in VLSI jargon.&nbsp; Similarly we assume
+a flat, ascii logical schematic net list file format.&nbsp; A net is a named
+electrical connection in a circuit design.&nbsp; The goal of the layout
+verification tutorial is to parse these two file formats, apply geometry
+operations provided by Boost.Polygon on the layout data to generate a logical
+schematic that represents what is implemented in the physical layout and then
+compare the input schematic with the generated schematic to determine whether
+they are the same.</p>
+<p>First let us define some objects that we will need in the design of our toy
+layout verification application:</p>
+<p>Layout Rectangle: An axis-parallel rectangle with a layer associated<br>
+Layout Pin: An axis-parallel rectangle with a layer and net (electrical signal)
+name associated<br>
+Layout Database: An associative container of layer name to polygon set<br>
+Connectivity Database: An associative container of net name to layout database<br>
+Physical Device: A specific geometric arrangement on several layers with one or
+more input net and one output net<br>
+Logical Net: A named graph node<br>
+Logical Device: An un-named graph node with a device type<br>
+Logical Pin: A special net that defines an input or output for the circuit<br>
+Schematic Database: A graph consisting of nets and logical
+devices</p>
+<p>Next let's define the sequence of operations performed by our toy
+layout versus schematic application:</p>
+<p>Parse Layout: Stream layout rectangles and polygons into a layout database
+and stream layout pins into a connectivity database<br>
+Extract Connectivity: Add polygons from layout database to connectivity database
+by physical touch or overlap relationship<br>
+Extract Devices: Populate a schematic database with logical devices based on
+physical devices identified within the layout geometry and extract their
+terminals from the
+connectivity database<br>
+Extract Net List: Complete graph represented in schematic database derived from
+layout<br>
+Parse Schematic: Stream logical nets, devices and pins into a schematic
+database<br>
+Compare Schematics: Evaluate whether extracted schematic database is equivalent
+to input schematic database and output result</p>
+<p>To test our application we will extract single logic gates.&nbsp; A logic
+gate is several transistors that work together to perform a specific logic
+function.&nbsp; Logic functions include the commonly understood Boolean logic
+operations such as Boolean AND, OR, XOR and INVERT.&nbsp; Also frequently used
+are NAND and NOR, which are respectively AND and OR operations followed by an
+INVERT operation.&nbsp; A NAND gate can be implemented in the CMOS circuit
+family with four transistors.&nbsp; The NAND gate has two inputs and one output.&nbsp;
+Each input goes to two transistors, one p-type transistor and one n-type
+transistor.&nbsp; The &quot;p&quot; stands for positive and the &quot;n&quot; stands for negative.&nbsp;
+When the p-type transistor is on
+it pulls the output up to the same voltage as the voltage source.&nbsp; When the
+n-type transistor is on it pulls the output down to the same voltage as the
+ground.&nbsp; The process of creating a p-type transistor begins by &quot;doping&quot; the silicon
+substrate to create n-type material.&nbsp; This area of n-type material will be
+called the NWELL layer in our test data.&nbsp; Within the area of NWELL a
+p-diffusion area is created by further doping the silicon to create p-type
+material.&nbsp; This area of p-type material will be called PDIFF in our test
+data.&nbsp; Through the middle of a PDIFF area bars of poly-silicon are grown
+that create conductive lines over the diffusion area.&nbsp; The area of
+poly-silicon material will be called POLY in our test data.&nbsp; Under some of these
+poly-silicon lines a thin layer of silicon-oxide provides insulation but allows
+the voltage field of the poly-silicon to interact with the diffusion.&nbsp; Each
+of these insulated poly-silicon lines is the &quot;gate&quot; of a transistor.&nbsp;
+The gate area will be called GATE in our test data.&nbsp; When the
+voltage at the gate is the same as the ground voltage the p-type transistor is
+&quot;on&quot; and can pass current from the voltage source to the output .&nbsp; The
+poly-silicon lines that are not insulated create electrical connections to the
+transistor for output signals and source voltage.&nbsp; The n-type transistor
+differs from the p-type in that its diffusion is n-type material outside of NWELL area.&nbsp; Current can pass from the output to the ground when the
+voltage at the gate of the n-type transistor is at the source voltage level.&nbsp;
+Above the poly-silicon layer is a layer of silicon-oxide insulator with holes
+cut out of it that get filled in with metal.&nbsp; These metal filled holes are
+called vias and we will refer to this layer as VIA0 in our test data.&nbsp; On
+top of VIA0 is a layer of metal polygons with silicon oxide insulator between
+them.&nbsp; These metal polygons are wires and we will call them METAL1 in our
+test data.&nbsp; The Layout Pins in our test data will be on METAL1.&nbsp; In a
+NAND gate the two n-type transistors are configured in series, meaning that the
+output of one is the input voltage source of the other.&nbsp; Only if both
+n-type transistors of a NAND gate are &quot;on&quot; will the output be connected to
+ground, signifying a logical &quot;false&quot;.&nbsp; The two p-type transistors in a NAND
+gate are configured in parallel.&nbsp; If either input to the NAND gate is a
+logical &quot;false&quot; the p-type transistor it is connected to will be &quot;on&quot; and the
+output of the gate will be a logical &quot;true&quot; because the transistor will connect
+it to the voltage supply.&nbsp; The diagram below is an example of how a NAND
+gate might be laid out and is not drawn to scale for any real process
+technology.&nbsp; The diffusion material is intended to be cut away under the
+gate material by a Boolean NOT operation and is represented as solid bars under
+the gates of transistors only for convenience of drawing.</p>
+<p>
+<img border="0" src="images/NAND.PNG" width="602" height="387"></p>
+<p>The following is the input layout file for the above NAND gate layout,
+rectangle format is XL XH YL YH:</p>
+<p><font face="Courier New" size="2">Rectangle 0 60 24 48 NWELL<br>
+Rectangle 3 57 32 43 PDIFF<br>
+Rectangle 3 57 5 16 NDIFF<br>
+Rectangle 5 7 0 17 POLY<br>
+Rectangle 5 7 22 45 POLY<br>
+Rectangle 17 19 3 45 POLY<br>
+Rectangle 29 31 31 48 POLY<br>
+Rectangle 41 43 3 45 POLY<br>
+Rectangle 53 55 3 45 POLY<br>
+Rectangle 17 19 4 17 GATE<br>
+Rectangle 17 19 31 44 GATE<br>
+Rectangle 41 43 4 17 GATE<br>
+Rectangle 41 43 31 44 GATE<br>
+Rectangle 5 7 0 2 VIA0<br>
+Rectangle 5 7 23 25 VIA0<br>
+Rectangle 17 19 28 30 VIA0<br>
+Rectangle 29 31 46 48 VIA0<br>
+Rectangle 41 43 18 20 VIA0<br>
+Rectangle 53 55 23 25 VIA0<br>
+Rectangle 0 60 0 2 METAL1<br>
+Rectangle 3 57 28 30 METAL1<br>
+Rectangle 0 60 46 48 METAL1<br>
+Rectangle 3 57 18 20 METAL1<br>
+Rectangle 3 57 23 25 METAL1<br>
+Pin 29 31 0 2 METAL1 GND<br>
+Pin 29 31 23 25 METAL1 OUTPUT</font><font face="Courier New" size="2"><br>
+Pin 29 31 28 30 METAL1 INPUT1</font><font face="Courier New" size="2"><br>
+Pin 29 31 46 48 METAL1 VDD<br>
+Pin 29 31 18 20 METAL1 INPUT2</font></p>
+<p>
+<img border="0" src="images/nands.PNG" width="421" height="402"></p>
+<p>The following is the logic schematic net list file for the above NAND gate
+schematic:</p>
+<p><font face="Courier New" size="2">Pin OUTPUT<br>Pin INPUT1<br>Pin INPUT2<br>
+Pin VDD<br>Pin GND<br>Device PTRANS VDD INPUT1 OUTPUT<br>Device PTRANS VDD
+INPUT2 OUTPUT<br>Device NTRANS GND INPUT1 NET1<br>Device NTRANS NET1 INPUT2
+OUTPUT</font></p>
+<p>A human can look at this schematic and compare it to the drawn layout of the
+NAND gate above to verify that the drawn layout matches what the schematic says
+in a few seconds.&nbsp; If you do that now you will probably find the p and
+n-type transistors and trace the connectivity of the inputs and power to the
+terminals of the transistors and then to the output.&nbsp; Since there are on
+the order of one billion transistors on a single chip these days we need to go a
+lot faster than humans can inspect layout and make fewer mistakes.&nbsp; Using polygon set operations
+and polygon connectivity extraction provided by Boost.Polygon we will automate
+the identification of transistors and the tracing of connectivity.&nbsp; Based
+on this
+analysis of Boost.Polygon performance we can expect
+this methodology to easily scale up to million gate blocks on standard
+workstations and arbitrarily large designs given sufficient system memory.&nbsp;
+let's start
+by implementing some data structures for our application.</p>
+<p><font face="Courier New" size="2">struct layout_rectangle {<br>
+&nbsp; int xl, yl, xh, yh;<br>
+&nbsp; std::string layer;<br>
+};</font></p>
+<p>Our layout rectangle is nice and minimal, just enough to store its data.&nbsp;
+It is defined in layout_rectangle.hpp. Next
+let's implement the layout
+pin in a similar way.</p>
+<p><font face="Courier New" size="2">struct layout_pin {<br>
+&nbsp; int xl, yl, xh, yh;<br>
+&nbsp; std::string layer;<br>
+&nbsp; std::string net;<br>
+};</font></p>
+<p>Our layout pin is defined in layout_pin.hpp.&nbsp; Now
+let's define a layout database object and populate it from our parsed
+layout data in in layout_database.hpp.</p>
+<p><font face="Courier New" size="2">typedef std::map&lt;std::string,
+boost::polygon::polygon_90_set_data&lt;int&gt; &gt; layout_database;<br>
+<br>
+//map the layout rectangle data type to the boost::polygon::rectangle_concept<br>
+namespace boost { namespace polygon{<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct rectangle_traits&lt;layout_rectangle&gt; {<br>
+&nbsp;&nbsp;&nbsp; typedef int coordinate_type;<br>
+&nbsp;&nbsp;&nbsp; typedef interval_data&lt;int&gt; interval_type;<br>
+&nbsp;&nbsp;&nbsp; static inline interval_type get(const layout_rectangle&amp;
+rectangle, orientation_2d orient) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(orient == HORIZONTAL)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return interval_type(rectangle.xl,
+rectangle.xh);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return interval_type(rectangle.yl, rectangle.yh);<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; };<br>
+<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct geometry_concept&lt;layout_rectangle&gt; { typedef rectangle_concept
+type; };<br>
+}}<br>
+<br>
+//insert layout rectangles into a layout database<br>
+inline void populate_layout_database(layout_database&amp; layout, std::vector&lt;layout_rectangle&gt;&amp;
+rects) {<br>
+&nbsp; for(std::size_t i = 0; i &lt; rects.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; layout[rects[i].layer].insert(rects[i]);<br>
+&nbsp; }<br>
+}</font></p>
+<p>We don't need to insert pins into the layout database because it doesn't know
+anything about connectivity, just geometry.&nbsp; However, we do need to know
+something about connectivity to compare a schematic to a layout, so we need to
+define our connectivity database and some logical objects.&nbsp; First we define
+an object for a logical device in device.hpp.&nbsp;
+Since we are lazy this object does double duty as a pin and both types of
+transistor.&nbsp; A traditional object oriented design might declare a base
+class with virtual destructor and derive every device from that.&nbsp; Since we
+aren't paid by the line of code let's just keep things simple.</p>
+<p><font face="Courier New" size="2">struct device {<br>
+&nbsp; std::string type;<br>
+&nbsp; std::vector&lt;std::string&gt; terminals;<br>
+};</font></p>
+<p>Now let's define a schematic database object in
+schematic_database.hpp and populate it from our parsed
+schematic data.</p>
+<p><font face="Courier New"><font size="2">struct schematic_database{<br>
+&nbsp; std::vector&lt;device&gt; devices;<br>
+&nbsp; std::map&lt;std::string, std::set&lt;std::size_t&gt; &gt; nets;<br>
+};<br>
+<br>
+//given a vector of devices populate the map of net name to set of device index<br>
+inline void extract_netlist(std::map&lt;std::string, std::set&lt;std::size_t&gt; &gt;&amp; nets,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+std::vector&lt;device&gt;&amp; devices) {<br>
+&nbsp; for(std::size_t i = 0; i &lt; devices.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; for(std::size_t j = 0; j &lt; devices[i].terminals.size(); ++j)
+{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //create association between net name and device
+id<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+nets[devices[i].terminals[j]].insert(nets[devices[i].terminals[j]].end(), i);<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; }<br>
+}</font></font></p>
+<p>Our schematic database is just a vector of devices, which are associated to
+nets by name through their terminals and a map of net name to set of device
+index into the vector, which completes the graph by associating nets with their
+devices.&nbsp; Given the devices and their terminal nets we easily build the
+mapping from nets to devices with the extract_netlist operation.&nbsp; Now we
+are ready to start working on extracting our layout to a derived schematic
+database.&nbsp; However, first we need to build a physical connectivity database
+with geometry in it before we can build a logical connectivity database from the
+layout.&nbsp; We define a simple connectivity database in
+connectivity_database.hpp as a
+map of net name to layout database of geometry connected to that net and
+populate it with the layout database and pin data.</p>
+<p><font size="2" face="Courier New">typedef std::map&lt;std::string,
+layout_database &gt; connectivity_database;<br>
+<br>
+//map layout pin data type to boost::polygon::rectangle_concept<br>
+namespace boost { namespace polygon{<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct rectangle_traits&lt;layout_pin&gt; {<br>
+&nbsp;&nbsp;&nbsp; typedef int coordinate_type;<br>
+&nbsp;&nbsp;&nbsp; typedef interval_data&lt;int&gt; interval_type;<br>
+&nbsp;&nbsp;&nbsp; static inline interval_type get(const layout_pin&amp; pin,
+orientation_2d orient) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(orient == HORIZONTAL)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return interval_type(pin.xl, pin.xh);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return interval_type(pin.yl, pin.yh);<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; };<br>
+<br>
+&nbsp; template &lt;&gt;<br>
+&nbsp; struct geometry_concept&lt;layout_pin&gt; { typedef rectangle_concept type; };<br>
+}}</font></p>
+<p><font size="2" face="Courier New">//given a layout_database we populate a
+connectivity database<br>
+inline void populate_connectivity_database(connectivity_database&amp; connectivity,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+std::vector&lt;layout_pin&gt;&amp; pins, layout_database&amp; layout) {<br>
+&nbsp; using namespace boost::polygon;<br>
+&nbsp; using namespace boost::polygon::operators;<br>
+&nbsp; for(std::size_t i = 0; i &lt; pins.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; connectivity[pins[i].net][pins[i].layer].insert(pins[i]);<br>
+&nbsp; }<br>
+&nbsp; int internal_net_suffix = 0;<br>
+&nbsp; //connect metal1 layout to pins which were on metal1<br>
+&nbsp; connect_layout_to_layer(connectivity, layout[&quot;METAL1&quot;], &quot;METAL1&quot;, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&quot;METAL1&quot;, &quot;__internal_net_&quot;, internal_net_suffix);<br>
+&nbsp; //connect via0 layout to metal1<br>
+&nbsp; connect_layout_to_layer(connectivity, layout[&quot;VIA0&quot;], &quot;VIA0&quot;, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&quot;METAL1&quot;, &quot;__internal_net_&quot;, internal_net_suffix);<br>
+&nbsp; //poly needs to have gates subtracted from it to prevent shorting through
+transistors<br>
+&nbsp; polygon_set poly_not_gate = layout[&quot;POLY&quot;] - layout[&quot;GATE&quot;];<br>
+&nbsp; //connect poly minus gate to via0<br>
+&nbsp; connect_layout_to_layer(connectivity, poly_not_gate, &quot;POLY&quot;, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&quot;VIA0&quot;, &quot;__internal_net_&quot;, internal_net_suffix);<br>
+&nbsp; //we don't want to short signals through transistors so we subtract the
+gate regions<br>
+&nbsp; //from the diffusions<br>
+&nbsp; polygon_set diff_not_gate = (layout[&quot;PDIFF&quot;] + layout[&quot;NDIFF&quot;]) -
+layout[&quot;GATE&quot;];<br>
+&nbsp; //connect diffusion minus gate to poly<br>
+&nbsp; //Note that I made up the DIFF layer name for combined P and NDIFF<br>
+&nbsp; connect_layout_to_layer(connectivity, diff_not_gate, &quot;DIFF&quot;, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&quot;POLY&quot;, &quot;__internal_net_&quot;, internal_net_suffix);<br>
+&nbsp; //connect gate to poly to make connections through gates on poly<br>
+&nbsp; connect_layout_to_layer(connectivity, layout[&quot;GATE&quot;], &quot;GATE&quot;, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&quot;POLY&quot;, &quot;__internal_net_&quot;, internal_net_suffix);<br>
+&nbsp; //now we have traced connectivity of the layout down to the transistor
+level<br>
+&nbsp; //any polygons not connected to pins have been assigned internal net
+names<br>
+}</font></p>
+<p>This populate connectivity database function is our first real use of
+Boost.Polygon in our application.&nbsp; Here we are doing Boolean (polygon set)
+operations on layout layers to merge together the PDIFF and NDIFF layers and cut
+away the GATE layer from the result, for example.&nbsp; We connect up the layout
+starting from the pins and working our way down the layer stack to the
+transistor level.&nbsp; It would work equally well to work our way up the layer
+stack, or connect things up in any order, really, but this way produces fewer
+internal temporary nets that need to be merged when connections between them are
+discovered later.&nbsp; The connect layout to layer function used above needs to
+be implemented before we can populate our connectivity database.</p>
+<p><font size="2" face="Courier New">inline void
+connect_layout_to_layer(connectivity_database&amp; connectivity, polygon_set&amp;
+layout, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+std::string layout_layer, std::string layer,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+std::string net_prefix, int&amp; net_suffix) {<br>
+&nbsp; if(layout_layer.empty())<br>
+&nbsp;&nbsp;&nbsp; return;<br>
+&nbsp; boost::polygon::connectivity_extraction_90&lt;int&gt; ce;<br>
+&nbsp; std::vector&lt;std::string&gt; net_ids;<br>
+&nbsp; for(connectivity_database::iterator itr = connectivity.begin(); itr !=
+connectivity.end(); ++itr) {<br>
+&nbsp;&nbsp;&nbsp; net_ids.push_back((*itr).first);<br>
+&nbsp;&nbsp;&nbsp; ce.insert((*itr).second[layer]);<br>
+&nbsp; }<br>
+&nbsp; std::vector&lt;polygon&gt; polygons;<br>
+&nbsp; layout.get_polygons(polygons);<br>
+&nbsp; std::size_t polygon_id_offset = net_ids.size();<br>
+&nbsp; for(std::size_t i = 0; i &lt; polygons.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; ce.insert(polygons[i]);<br>
+&nbsp; }<br>
+&nbsp; std::vector&lt;std::set&lt;int&gt; &gt; graph(polygons.size() + net_ids.size(),
+std::set&lt;int&gt;());<br>
+&nbsp; ce.extract(graph);<br>
+&nbsp; std::vector&lt;int&gt; polygon_color(polygons.size() + net_ids.size(), 0);<br>
+&nbsp; //for each net in net_ids populate connected component with net<br>
+&nbsp; for(std::size_t node_id = 0; node_id &lt; net_ids.size(); ++node_id) {<br>
+&nbsp;&nbsp;&nbsp; populate_connected_component(connectivity, polygons,
+polygon_color, graph, node_id, <br>
+&nbsp;&nbsp;&nbsp; polygon_id_offset, net_ids[node_id], net_ids, <br>
+&nbsp;&nbsp;&nbsp; net_prefix, layout_layer);<br>
+&nbsp; }<br>
+&nbsp; //for each polygon_color that is zero populate connected component with
+net_prefix + net_suffix++<br>
+&nbsp; for(std::size_t i = 0; i &lt; polygons.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; if(polygon_color[i + polygon_id_offset] == 0) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::stringstream ss(std::stringstream::in |
+std::stringstream::out);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ss &lt;&lt; net_prefix &lt;&lt; net_suffix++;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string internal_net; <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ss &gt;&gt; internal_net;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; populate_connected_component(connectivity,
+polygons, polygon_color, graph, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i + polygon_id_offset, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; polygon_id_offset, internal_net, net_ids, <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net_prefix, layout_layer);<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; }<br>
+}</font></p>
+<p>The connect layout to layer function uses the connectivity extraction feature
+of Boost.Polyon to build a connectivity graph for polygons on the input polygon
+set and in the connectivity database on the specified layer.&nbsp; It then finds
+polygons associated with existing nets in the connectivity database through
+graph traversal and inserts them into the connectivity database.&nbsp; Finally,
+polygons that weren't connected to existing nets are inserted into the
+connectivity database on auto-generated internal net names.&nbsp; The insertion
+of a connected component into the connectivity database is handled by the
+recursive traversal of the connectivity graph that we implement next.</p>
+<p><font size="2" face="Courier New">inline void populate_connected_component<br>
+(connectivity_database&amp; connectivity, std::vector&lt;polygon&gt;&amp; polygons, <br>
+&nbsp;std::vector&lt;int&gt; polygon_color, std::vector&lt;std::set&lt;int&gt; &gt;&amp; graph, <br>
+&nbsp;std::size_t node_id, std::size_t polygon_id_offset, std::string&amp; net, <br>
+&nbsp;std::vector&lt;std::string&gt;&amp; net_ids, std::string net_prefix,<br>
+&nbsp;std::string&amp; layout_layer) {<br>
+&nbsp; if(polygon_color[node_id] == 1)<br>
+&nbsp;&nbsp;&nbsp; return;<br>
+&nbsp; polygon_color[node_id] = 1;<br>
+&nbsp; if(node_id &lt; polygon_id_offset &amp;&amp; net_ids[node_id] != net) {<br>
+&nbsp;&nbsp;&nbsp; //merge nets in connectivity database<br>
+&nbsp;&nbsp;&nbsp; //if one of the nets is internal net merge it into the other<br>
+&nbsp;&nbsp;&nbsp; std::string net1 = net_ids[node_id];<br>
+&nbsp;&nbsp;&nbsp; std::string net2 = net;<br>
+&nbsp;&nbsp;&nbsp; if(net.compare(0, net_prefix.length(), net_prefix) == 0) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net = net1;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::swap(net1, net2);<br>
+&nbsp;&nbsp;&nbsp; } else {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net_ids[node_id] = net;<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; connectivity_database::iterator itr =
+connectivity.find(net1);<br>
+&nbsp;&nbsp;&nbsp; if(itr != connectivity.end()) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(layout_database::iterator itr2 = (*itr).second.begin();<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; itr2 != (*itr).second.end();
+++itr2) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectivity[net2][(*itr2).first].insert((*itr2).second);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectivity.erase(itr);<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; }<br>
+&nbsp; if(node_id &gt;= polygon_id_offset)<br>
+&nbsp; connectivity[net][layout_layer].insert(polygons[node_id -
+polygon_id_offset]);<br>
+&nbsp; for(std::set&lt;int&gt;::iterator itr = graph[node_id].begin();<br>
+&nbsp; itr != graph[node_id].end(); ++itr) {<br>
+&nbsp;&nbsp;&nbsp; populate_connected_component(connectivity, polygons,
+polygon_color, graph, <br>
+&nbsp;&nbsp;&nbsp; *itr, polygon_id_offset, net, net_ids, net_prefix,
+layout_layer);<br>
+&nbsp; }<br>
+}<br>
+<br>
+</font>We want to merge internally generated nets into pin nets, which is the
+most complicated part of this simple procedure.&nbsp; Now that we have our
+connectivity database extracted from pins down to transistors we need to extract
+our transistors and establish the relationship between transistor terminals and
+nets in our connectivity database.&nbsp; First let's extract transistors with
+the functions defined in defined in <a href="tutorial/extract_devices.hpp">
+extract_devices.hpp</a>.</p>
+<p><font size="2" face="Courier New">typedef boost::polygon::connectivity_extraction_90&lt;int&gt;
+connectivity_extraction;<br>
+inline std::vector&lt;std::set&lt;int&gt; &gt;<br>
+extract_layer(connectivity_extraction&amp; ce, std::vector&lt;std::string&gt;&amp; net_ids,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+connectivity_database&amp; connectivity, polygon_set&amp; layout,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+std::string layer) {<br>
+&nbsp; for(connectivity_database::iterator itr = connectivity.begin(); itr !=
+connectivity.end(); ++itr) {<br>
+&nbsp;&nbsp;&nbsp; net_ids.push_back((*itr).first);<br>
+&nbsp;&nbsp;&nbsp; ce.insert((*itr).second[layer]);<br>
+&nbsp; }<br>
+&nbsp; std::vector&lt;polygon&gt; polygons;<br>
+&nbsp; layout.get_polygons(polygons);<br>
+&nbsp; for(std::size_t i = 0; i &lt; polygons.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; ce.insert(polygons[i]);<br>
+&nbsp; }<br>
+&nbsp; std::vector&lt;std::set&lt;int&gt; &gt; graph(polygons.size() + net_ids.size(),
+std::set&lt;int&gt;());<br>
+&nbsp; ce.extract(graph);<br>
+&nbsp; return graph;<br>
+}</font></p>
+<p>This extract layer algorithm constructs a connectivity graph between polygons
+in the input polygon set and polygons in the given layer of the connectivity
+database.&nbsp; It is used to form the association between transistors and their
+terminal nets in the function for extracting a specific transistor type.</p>
+<p><font size="2" face="Courier New">inline void extract_device_type(std::vector&lt;device&gt;&amp;
+devices, connectivity_database&amp; connectivity,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+polygon_set&amp; layout, std::string type) {<br>
+&nbsp; //recall that P and NDIFF were merged into one DIFF layer in the
+connectivity database<br>
+&nbsp; //find the two nets on the DIFF layer that interact with each transistor<br>
+&nbsp; //and then find the net on the poly layer that interacts with each
+transistor<br>
+&nbsp; boost::polygon::connectivity_extraction_90&lt;int&gt; cediff;<br>
+&nbsp; std::vector&lt;std::string&gt; net_ids_diff;<br>
+&nbsp; std::vector&lt;std::set&lt;int&gt; &gt; graph_diff =<br>
+&nbsp;&nbsp;&nbsp; extract_layer(cediff, net_ids_diff, connectivity, layout,
+&quot;DIFF&quot;);<br>
+&nbsp; boost::polygon::connectivity_extraction_90&lt;int&gt; cepoly;<br>
+&nbsp; std::vector&lt;std::string&gt; net_ids_poly;<br>
+&nbsp; std::vector&lt;std::set&lt;int&gt; &gt; graph_poly =<br>
+&nbsp;&nbsp;&nbsp; extract_layer(cepoly, net_ids_poly, connectivity, layout,
+&quot;POLY&quot;);<br>
+&nbsp; std::vector&lt;device&gt; tmp_devices(graph_diff.size() - net_ids_poly.size());<br>
+&nbsp; for(std::size_t i = net_ids_poly.size(); i &lt; graph_diff.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; tmp_devices[i - net_ids_diff.size()].type = type;<br>
+&nbsp;&nbsp;&nbsp; tmp_devices[i - net_ids_diff.size()].terminals = std::vector&lt;std::string&gt;(3,
+std::string());<br>
+&nbsp;&nbsp;&nbsp; std::size_t j = 0;<br>
+&nbsp;&nbsp;&nbsp; for(std::set&lt;int&gt;::iterator itr = graph_diff[i].begin();<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; itr != graph_diff[i].end(); ++itr,
+++j) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(j == 0) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp_devices[i - net_ids_diff.size()].terminals[0]
+= net_ids_diff[*itr];<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if(j == 1) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp_devices[i - net_ids_diff.size()].terminals[2]
+= net_ids_diff[*itr];<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //error, too many diff connections<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp_devices[i - net_ids_diff.size()].terminals
+= std::vector&lt;std::string&gt;(3, std::string());<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; j = 0;<br>
+&nbsp;&nbsp;&nbsp; for(std::set&lt;int&gt;::iterator itr = graph_poly[i].begin();<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; itr != graph_poly[i].end(); ++itr,
+++j) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(j == 0) {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp_devices[i - net_ids_diff.size()].terminals[1]
+= net_ids_poly[*itr];<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //error, too many poly connections<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp_devices[i - net_ids_poly.size()].terminals
+= std::vector&lt;std::string&gt;(3, std::string());<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; }<br>
+<br>
+&nbsp; devices.insert(devices.end(), tmp_devices.begin(), tmp_devices.end());<br>
+}</font></p>
+<p>We append transistors onto the vector of devices with their terminals
+populated with net names extracted from the connectivity database.&nbsp;
+Transistors' terminals are connected through the POLY and DIFF layers where DIFF
+contains both PDIFF and NDIFF.&nbsp; The connection to POLY layer is the gate of
+the transistor while the connections to DIFF on either side of the channel of
+the transistor are the source and drain.&nbsp; We can use this to extract are p
+and n-type transistors. <font size="2" face="Courier New"><br>
+<br>
+//populates vector of devices based on connectivity and layout data<br>
+inline void extract_devices(std::vector&lt;device&gt;&amp; devices, connectivity_database&amp;
+connectivity,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+layout_database&amp; layout) {<br>
+&nbsp; using namespace boost::polygon::operators;<br>
+&nbsp; //p-type transistors are gate that interact with p diffusion and nwell<br>
+&nbsp; polygon_set ptransistors = layout[&quot;GATE&quot;];<br>
+&nbsp; ptransistors.interact(layout[&quot;PDIFF&quot;]);<br>
+&nbsp; ptransistors.interact(layout[&quot;NWELL&quot;]);<br>
+&nbsp; //n-type transistors are gate that interact with n diffusion and not
+nwell<br>
+&nbsp; polygon_set ntransistors = layout[&quot;GATE&quot;];<br>
+&nbsp; ntransistors.interact(layout[&quot;NDIFF&quot;]);<br>
+&nbsp; polygon_set not_ntransistors = ntransistors;<br>
+&nbsp; not_ntransistors.interact(layout[&quot;NWELL&quot;]);<br>
+&nbsp; ntransistors -= not_ntransistors;<br>
+&nbsp; extract_device_type(devices, connectivity, ptransistors, &quot;PTRANS&quot;);<br>
+&nbsp; extract_device_type(devices, connectivity, ntransistors, &quot;NTRANS&quot;);<br>
+}</font></p>
+<p>The extract devices procedure makes some more use of Boost.Polygon Boolean
+operations on the layout data when we exclude GATE material over NDIFF that
+isn't also over NWELL to extract our n-type transistors.&nbsp; We also are using
+the &quot;interact&quot; operation on polygon gets, which is implemented in terms of
+connectivity extraction and retains all polygons of a polygon set that touch or
+overlap polygons from another polygon set.&nbsp; Now that we have a vector of
+devices we can build a schematic database by calling the extract_netlist
+function.&nbsp; We can then compare the extracted schematic from the schematic
+read in from file with the functions defined in
+compare_schematics.hpp.&nbsp;
+Since comparing two schematics has no geometric aspect we won't go into that
+procedure here in the tutorial and will skip to the integration of all these
+procedures in defined in extract.cpp to build
+the layout to schematic comparison algorithm.</p>
+<p><font size="2" face="Courier New">bool compare_files(std::string layout_file,
+std::string schematic_file) {<br>
+&nbsp; std::ifstream sin(schematic_file.c_str());<br>
+&nbsp; std::ifstream lin(layout_file.c_str());<br>
+<br>
+&nbsp; std::vector&lt;layout_rectangle&gt; rects;<br>
+&nbsp; std::vector&lt;layout_pin&gt; pins;<br>
+&nbsp; parse_layout(rects, pins, lin);<br>
+<br>
+&nbsp; schematic_database reference_schematic;<br>
+&nbsp; parse_schematic_database(reference_schematic, sin);<br>
+<br>
+&nbsp; layout_database layout;<br>
+&nbsp; populate_layout_database(layout, rects);<br>
+<br>
+&nbsp; connectivity_database connectivity;<br>
+&nbsp; populate_connectivity_database(connectivity, pins, layout);<br>
+<br>
+&nbsp; schematic_database schematic;<br>
+&nbsp; std::vector&lt;device&gt;&amp; devices = schematic.devices;<br>
+&nbsp; for(std::size_t i = 0; i &lt; pins.size(); ++i) {<br>
+&nbsp;&nbsp;&nbsp; devices.push_back(device());<br>
+&nbsp;&nbsp;&nbsp; devices.back().type = &quot;PIN&quot;;<br>
+&nbsp;&nbsp;&nbsp; devices.back().terminals.push_back(pins[i].net);<br>
+&nbsp; }<br>
+&nbsp; extract_devices(devices, connectivity, layout);<br>
+&nbsp; extract_netlist(schematic.nets, devices);<br>
+&nbsp; return compare_schematics(reference_schematic, schematic);<br>
+}</font></p>
+<p><font face="Courier New" size="2">int main(int argc, char **argv) {<br>
+&nbsp; if(argc &lt; 3) {<br>
+&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;usage: &quot; &lt;&lt; argv[0] &lt;&lt; &quot; &lt;layout_file&gt; &lt;schematic_file&gt;&quot;
+&lt;&lt; std::endl;<br>
+&nbsp;&nbsp;&nbsp; return -1;<br>
+&nbsp; }<br>
+&nbsp; bool result = compare_files(argv[1], argv[2]);<br>
+&nbsp; if(result == false) {<br>
+&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;Layout does not match schematic.&quot; &lt;&lt; std::endl;<br>
+&nbsp;&nbsp;&nbsp; return 1;<br>
+&nbsp; } <br>
+&nbsp; std::cout &lt;&lt; &quot;Layout does match schematic.&quot; &lt;&lt; std::endl;<br>
+&nbsp; return 0;<br>
+}<br>
+<br>
+</font>We test the program with two schematics and three layouts.&nbsp; These
+include a nand and a nor gate layout and schematic as well as an incorrect nand
+gate layout.&nbsp; The nand layout and schematic are the same as shown above.<font face="Courier New" size="2">
+</font></p>
+<p><font face="Courier New" size="2">&gt; lvs<br>
+usage: lvs &lt;layout_file&gt; &lt;schematic_file&gt;<br>
+&gt; lvs nand.layout nand.schematic <br>
+Layout does match schematic.<br>
+&gt; lvs nand_short.layout nand.schematic <br>
+Layout does not match schematic.<br>
+&gt; lvs nand.layout nor.schematic <br>
+Layout does not match schematic.<br>
+&gt; lvs nor.layout nor.schematic <br>
+Layout does match schematic.<br>
+&gt; lvs nor.layout nand.schematic <br>
+Layout does not match schematic.</font></p>
+<p>This concludes our tutorial on how to build a simple layout to schematic
+verification application based on Boost.Polygon library capabilities.&nbsp; The
+implementation of this application made many simplifying assumptions that are
+not valid in the real world and hard coded a lot of things that need to be
+configurable in a real layout verification application.&nbsp; However, it does
+give an idea of how to use Boost.Polygon to solve real problems and points in
+the direction of how a real application might use Boost.Polygon.</p>
+
+
+<table class="docinfo" rules="none" frame="void" id="table1">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</body>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/images/NAND.PNG
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/boost.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/concept_table.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/convolution1.PNG
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/convolution2.PNG
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/convolve_edges.PNG
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/foo.PNG
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/hand.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/intlogo.gif
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/nands.PNG
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/perf_graph.PNG
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/perimeter_convolve.PNG
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/images/refinements.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/polygon/doc/index.htm
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/index.htm 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,236 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><!--
+ Copyright 2009-2010 Intel Corporation
+ license banner
+-->
+<title>Boost Polygon Library: Main Page</title>
+ <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
+ <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/boost.png" width="277" height="86"><a title="www.boost.org home page" href="http://www.boost.org/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+ <div style="margin: 5px;">
+ <h3 class="navbar">Contents</h3>
+ <ul>
+ <li>Boost.Polygon Main Page</li>
+ <li>Design Overview</li>
+ <li>Isotropy</li>
+ <li>Coordinate Concept</li>
+ <li>Interval Concept</li>
+ <li>
+ Point Concept</li>
+ <li>Rectangle Concept</li>
+ <li>Polygon 90 Concept</li>
+ <li>Polygon 90 With Holes Concept</li>
+ <li>Polygon 45 Concept</li>
+ <li>Polygon 45 With Holes Concept</li>
+ <li>Polygon Concept</li>
+ <li>Polygon With Holes Concept</li>
+ <li>Polygon 90 Set Concept</li>
+ <li>Polygon 45 Set Concept</li>
+ <li>Polygon Set Concept</li>
+ <li>Connectivity Extraction 90</li>
+ <li>Connectivity Extraction 45</li>
+ <li>Connectivity Extraction</li>
+ <li>Property Merge 90</li>
+ <li>Property Merge 45</li>
+ <li>Property Merge</li>
+ </ul>
+ <h3 class="navbar">Other Resources</h3>
+ <ul>
+ <li>GTL Boostcon 2009 Paper</li>
+ <li><a href="GTL_boostcon_draft03.htm">GTL Boostcon 2009
+ Presentation</a></li>
+ <li>Performance Analysis</li>
+ <li>Layout Versus Schematic Tutorial</li>
+ <li>Minkowski Sum Tutorial</li>
+ </ul>
+ </div>
+ <h3 class="navbar">Polygon Sponsor</h3>
+ <div style="padding: 5px;" align="center">
+ <img border="0" src="images/intlogo.gif" width="127" height="51"><a title="www.adobe.com home page" href="http://www.adobe.com/" tabindex="2" style="border: medium none ;">
+ </a>
+ </div>
+</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+<!-- End Header -->
+
+<br>
+<p>
+</p><h1>THE BOOST.POLYGON LIBRARY</h1>
+<p>The Boost.Polygon library provides algorithms focused on manipulating planar
+polygon geometry data.&nbsp; Specific algorithms provided are the polygon set
+operations (intersection, union, difference, disjoint-union) and related
+algorithms such as polygon connectivity graph extraction, offsetting and map-overlay.&nbsp;
+An example of the disjoint-union (XOR) of figure a and figure b is shown below
+in figure c.&nbsp;
+These so-called Boolean algorithms are of significant interest in GIS (Geospatial Information
+Systems), VLSI CAD as well al other fields of CAD, and many more application
+areas, and providing them is the primary focus of this library.&nbsp; The
+Boost.Polygon library is not intended to cover all of computational
+geometry in its scope, and provides a set of capabilities for working with
+coordinates, points, intervals and rectangles that are needed to support
+implementing and interacting with polygon data structures and algorithms.&nbsp; </p><img border="0" src="images/hand.png" width="837" height="277"><p>
+The coordinate data type is a template parameter of all data types and
+algorithms provided by the library, and is expected to be integral.&nbsp;
+Floating point coordinate data types are not supported by the algorithms
+implemented in the library due to the fact that the achieving floating point
+robustness implies a different set of algorithms and generally platform specific
+assumptions about floating point representations.&nbsp;
+For additional detailed discussion of the library and its implementation
+including benchmark comparisons with other open source alternatives please see
+the paper and
+presentation from
+boostcon 2009 as well as a detailed
+analysis of the runtime complexity of
+the library's core algorithms. </p>
+<p>The design philosophy behind the polygon library was to create an API for
+invoking the library algorithms it provides on user geometry data types that is maximally
+intuitive, minimally error-prone and easy to integrate into pre-existing
+applications.&nbsp; C++-concepts based template meta-programming combined with
+generic operator overloading meets these design goals without sacrificing the
+runtime or memory efficiency of the underlying algorithms.&nbsp; The API is
+intended to demonstrate what could be achieved with ease by a C++-concepts based
+library interface, but is implemented based on current language features.&nbsp; This API makes
+the following code snippet that operates on non-library geometry types possible:</p>
+<p:colorscheme
+ colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"/>
+
+<div v:shape="_x0000_s1026" class="O">
+ <div style="text-align:justify;mso-char-wrap:1;mso-kinsoku-overflow:1">
+ <nobr>
+ <span style="font-family: Courier New; mso-ascii-font-family: Courier New; mso-bidi-font-family: Arial; mso-hansi-font-family: Courier New">
+ void foo(list&lt;CPolygon&gt;&amp; result, const list&lt;CPolygon&gt;&amp; a, </span></nobr><br>
+ <span style="font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </span><nobr>
+ <span style="font-family: Courier New; mso-ascii-font-family: Courier New; mso-bidi-font-family: Arial; mso-hansi-font-family: Courier New">
+ const list&lt;CPolygon&gt;&amp;
+ b, int deflateValue) { </span></nobr></div>
+ <div style="text-align:justify;mso-char-wrap:1;mso-kinsoku-overflow:1">
+ <nobr>
+<span style="font-family: Courier New; mso-ascii-font-family: Courier New; mso-bidi-font-family: Arial; mso-hansi-font-family: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;
+ CBoundingBox domainExtent; </span></nobr></div>
+ <div style="text-align:justify;mso-char-wrap:1;mso-kinsoku-overflow:1">
+ <nobr>
+ <span style="font-family: Courier New; mso-ascii-font-family: Courier New; mso-bidi-font-family: Arial; mso-hansi-font-family: Courier New">
+ <span style="mso-spacerun:yes">&nbsp; </span>&nbsp;&nbsp; using namespace boost::polygon::operators; </span></nobr></div>
+ <div style="text-align:justify;mso-char-wrap:1;mso-kinsoku-overflow:1">
+ <nobr>
+ <span style="font-family: Courier New; mso-ascii-font-family: Courier New; mso-bidi-font-family: Arial; mso-hansi-font-family: Courier New">
+ <span style="mso-spacerun:yes">&nbsp; </span>&nbsp;&nbsp;
+ boost::polygon::extents(domainExtent, a); </span></nobr></div>
+ <div style="text-align:justify;mso-char-wrap:1;mso-kinsoku-overflow:1">
+ <nobr>
+ <span style="font-family: Courier New; mso-ascii-font-family: Courier New; mso-bidi-font-family: Arial; mso-hansi-font-family: Courier New">
+ <span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>result += (b &amp;
+ domainExtent) ^ (a - deflateValue); </span></nobr></div>
+ <div style="text-align:justify;mso-char-wrap:1;mso-kinsoku-overflow:1">
+ <nobr>
+ <span style="font-family: Courier New; mso-ascii-font-family: Courier New; mso-bidi-font-family: Arial; mso-hansi-font-family: Courier New">
+ }</span></nobr></div>
+</div>
+<p>In the code snippet above the hypothetical polygon type CPolygon has been
+mapped to the library polygon concept and is used with library APIs to clip
+polygon list <i>b</i> against the bounding box of polygon list <i>a</i> and apply the
+disjoint-union of that with polygon list <i>a</i> deflated by some integer amount.&nbsp;
+The end result is accumulated into a list of polygons with a union operation.&nbsp;
+It is considerably more typing to describe this usage of the API than to code
+it, and the description is not much clearer than the code itself.&nbsp;
+A picture is worth a thousand words.</p>
+<p><img border="0" src="images/foo.PNG" width="432" height="371"></p>
+<p>In Boost.Polygon operations such as those shown above are free functions named for what they do, or are overloads of C++ operators that make it
+easy to infer from reading the code what to expect.&nbsp; Operators are
+contained in the namespace <font face="Courier New">boost::polygon::operators</font>
+so that they can be used outside the <font face="Courier New">boost::polygon</font>
+namespace without bringing in the entire <font face="Courier New">boost::polygon</font>
+namespace.&nbsp; Following the
+principle of least astonishment, the inferred behavior should generally match
+the actual behavior.&nbsp; Conventions such as argument ordering (output
+arguments come first) and consistently applying the same semantics across
+different functions (accumulate) reduces the learning curve for new users while reducing the
+need to memorize semantics and argument ordering of many different functions for
+advanced users.</p>
+<p>While the internal library code that implements this API is usually complex and
+cryptic due to heavy use of template meta-programming, the application of the library
+API in user code is usually simple and clear because it is free of any
+extraneous syntax.&nbsp; The one exception to this is the mapping of user types
+to library concepts, which necessitates that the user perform some simple
+template programming and understand some of the internals of how the library
+concept type system works.&nbsp; The examples below should aid the user in
+performing these programming tasks.</p>
+<ul>
+
+<li>Example files:
+ <ul>
+ <li>point_usage.cpp Using the
+ library provided point data type and functions</li>
+ <li>custom_point.cpp Mapping a
+ user defined point class to the library point_concept</li>
+ <li>polygon_usage.cpp Using
+ the library provided polygon data types and functions</li>
+ <li>custom_polygon.cpp Mapping a
+ user defined polygon class to the library polygon_concept</li>
+ <li>polygon_set_usage.cpp Using
+ the library provided polygon set data types and functions</li>
+ <li>custom_polygon_set.cpp
+ Mapping a user defined class to the library polygon_set_concept</li>
+ <li>connectivity_extraction_usage.cpp
+ Using the connectivity extraction algorithm to build a connectivity
+ graph on polygons</li>
+ <li>property_merge_usage.cpp
+ Using the n-layer map-overlay algorithm on polygon data</li>
+ </ul>
+
+<li>Tutorials:
+<ul>
+ <li>Layout Versus Schematic Learn how to
+ apply Boost.Polygon capabilities to implement a simplified circuit
+ extraction application</li>
+ <li>Minkowski Sum Learn how to
+ apply Boost.Polygon capabilities to implement Minkowski sum of polygon sets</li>
+</ul>
+
+</ul>
+
+
+<p>We would like to thank: Thomas Klimpel, Frank Mori Hess, Barend Gehrels,
+Andreas Fabri, Jeffrey Hellrung, Tim Keitt, Markus Werle, Paul A. Bristow,
+Robert Stewart, Mathias Gaunard, Michael Fawcett, Steven Watanabe, Joachim
+Faulhaber, John Bytheway, Sebastian Redl, Mika Heiskanen, John Phillips, Kai
+Benndorf, Hartmut Kaiser, Arash Partow, Maurizio Vitale, Brandon Kohn, David
+Abrahams, Gordon Woodhull, Daniel James, John Maddock, Tom Brinkman, Bo Persson,
+Mateusz Loskot, Christian Henning, Jean-Sebastien Stoezel, for providing
+feedback and or formal review of the library as part of the boost submission
+process and Fernando Cacciola for graciously serving as review manager.</p>
+
+
+ <tr>
+<td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ &nbsp;</td>
+<td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
+
+
+<table class="docinfo" rules="none" frame="void" id="table2">
+ <colgroup>
+ <col class="docinfo-name"><col class="docinfo-content">
+ </colgroup>
+ <tbody vAlign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>Copyright © Intel Corporation 2008-2010.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">License:</th>
+ <td class="field-body">Distributed under the Boost Software License,
+ Version 1.0. (See accompanying file <tt class="literal">
+ <span class="pre">LICENSE_1_0.txt</span></tt> or copy at
+ <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
+ http://www.boost.org/LICENSE_1_0.txt>)</td>
+ </tr>
+</table>
+
+</html>
\ No newline at end of file

Added: trunk/libs/polygon/doc/tutorial/compare_schematics.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/compare_schematics.hpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,96 @@
+/*
+Copyright 2010 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+
http://www.boost.org/LICENSE_1_0.txt).
+*/
+//compare_schematics.hpp
+#ifndef BOOST_POLYGON_TUTORIAL_COMPARE_SCHEMATICS_HPP
+#define BOOST_POLYGON_TUTORIAL_COMPARE_SCHEMATICS_HPP
+#include <string>
+#include "schematic_database.hpp"
+
+bool compare_connectivity(std::string& ref_net, std::string& net,
+ schematic_database& reference_schematic,
+ schematic_database& schematic,
+ std::vector<std::size_t>& reference_to_internal_device_map,
+ std::size_t node_id) {
+ std::set<std::size_t>& ref_nodes = reference_schematic.nets[ref_net];
+ std::set<std::size_t>& nodes = schematic.nets[net];
+ for(std::set<std::size_t>::iterator itr = ref_nodes.begin();
+ itr != ref_nodes.end() && *itr < node_id; ++itr) {
+ if(nodes.find(reference_to_internal_device_map[*itr]) == nodes.end())
+ return false;
+ }
+ return true;
+}
+
+bool compare_schematics_recursive
+(schematic_database& reference_schematic,
+ schematic_database& schematic,
+ std::vector<std::size_t>& reference_to_internal_device_map,
+ std::set<std::size_t>& assigned_devices, std::size_t node_id){
+ //do check of equivalence up to this node
+ for(std::size_t i = 0; i < node_id; ++i) {
+ for(std::size_t j = 0; j < reference_schematic.devices[i].terminals.size(); ++j) {
+ device& rd = reference_schematic.devices[i];
+ device& xd = schematic.devices[reference_to_internal_device_map[i]];
+ if(rd.type == "PIN") {
+ if(rd.terminals[j] != xd.terminals[j])
+ return false;
+ } else {
+ //connectivity must be the same
+ if(j == 1) {
+ //gate has to be the same net
+ if(!compare_connectivity(rd.terminals[1], xd.terminals[1], reference_schematic, schematic,
+ reference_to_internal_device_map, node_id))
+ return false;
+ } else {
+ //order of nets in source and drain is not important so check both ways and accept either
+ if(!compare_connectivity(rd.terminals[j], xd.terminals[0], reference_schematic, schematic,
+ reference_to_internal_device_map, node_id) &&
+ !compare_connectivity(rd.terminals[j], xd.terminals[2], reference_schematic, schematic,
+ reference_to_internal_device_map, node_id))
+ return false;
+ }
+ }
+ }
+ }
+ if(node_id >= reference_schematic.devices.size())
+ return true; //final success
+
+ //recurse into subsequent nodes
+ for(std::size_t i = 0; i < schematic.devices.size(); ++i) {
+ if(reference_schematic.devices[node_id].type !=
+ schematic.devices[i].type)
+ continue; //skip dissimilar devices
+ //avoid multi-assignment of devices
+ if(assigned_devices.find(i) == assigned_devices.end()) {
+ reference_to_internal_device_map[node_id] = i;
+ std::set<std::size_t>::iterator itr = assigned_devices.insert(assigned_devices.end(), i);
+ if(compare_schematics_recursive(reference_schematic, schematic,
+ reference_to_internal_device_map,
+ assigned_devices, node_id + 1))
+ return true;
+ assigned_devices.erase(itr);
+ }
+ }
+ //could not find match between schematics
+ return false;
+}
+
+//this is a trivial brute force comparison algorithm because comparing
+//schematics does not require the use of Boost.Polygon and doing it more
+//optimally does not add to the tutorial
+inline bool compare_schematics(schematic_database& reference_schematic,
+ schematic_database& schematic) {
+ std::vector<std::size_t>
+ reference_to_internal_device_map(reference_schematic.devices.size(), 0);
+ std::set<std::size_t> assigned_devices;
+ return compare_schematics_recursive(reference_schematic, schematic,
+ reference_to_internal_device_map,
+ assigned_devices, 0);
+}
+
+#endif

Added: trunk/libs/polygon/doc/tutorial/connectivity_database.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/connectivity_database.hpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,149 @@
+/*
+ Copyright 2010 Intel Corporation
+
+ Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+*/
+//connectivity_database.hpp
+#ifndef BOOST_POLYGON_TUTORIAL_CONNECTIVITY_DATABASE_HPP
+#define BOOST_POLYGON_TUTORIAL_CONNECTIVITY_DATABASE_HPP
+#include <boost/polygon/polygon.hpp>
+#include <map>
+#include <sstream>
+#include "layout_database.hpp"
+#include "layout_pin.hpp"
+
+typedef std::map<std::string, layout_database > connectivity_database;
+
+//map layout pin data type to boost::polygon::rectangle_concept
+namespace boost { namespace polygon{
+ template <>
+ struct rectangle_traits<layout_pin> {
+ typedef int coordinate_type;
+ typedef interval_data<int> interval_type;
+ static inline interval_type get(const layout_pin& pin, orientation_2d orient) {
+ if(orient == HORIZONTAL)
+ return interval_type(pin.xl, pin.xh);
+ return interval_type(pin.yl, pin.yh);
+ }
+ };
+
+ template <>
+ struct geometry_concept<layout_pin> { typedef rectangle_concept type; };
+}}
+
+typedef boost::polygon::polygon_90_data<int> polygon;
+typedef boost::polygon::polygon_90_set_data<int> polygon_set;
+
+inline void populate_connected_component
+(connectivity_database& connectivity, std::vector<polygon>& polygons,
+ std::vector<int> polygon_color, std::vector<std::set<int> >& graph,
+ std::size_t node_id, std::size_t polygon_id_offset, std::string& net,
+ std::vector<std::string>& net_ids, std::string net_prefix,
+ std::string& layout_layer) {
+ if(polygon_color[node_id] == 1)
+ return;
+ polygon_color[node_id] = 1;
+ if(node_id < polygon_id_offset && net_ids[node_id] != net) {
+ //merge nets in connectivity database
+ //if one of the nets is internal net merge it into the other
+ std::string net1 = net_ids[node_id];
+ std::string net2 = net;
+ if(net.compare(0, net_prefix.length(), net_prefix) == 0) {
+ net = net1;
+ std::swap(net1, net2);
+ } else {
+ net_ids[node_id] = net;
+ }
+ connectivity_database::iterator itr = connectivity.find(net1);
+ if(itr != connectivity.end()) {
+ for(layout_database::iterator itr2 = (*itr).second.begin();
+ itr2 != (*itr).second.end(); ++itr2) {
+ connectivity[net2][(*itr2).first].insert((*itr2).second);
+ }
+ connectivity.erase(itr);
+ }
+ }
+ if(node_id >= polygon_id_offset)
+ connectivity[net][layout_layer].insert(polygons[node_id - polygon_id_offset]);
+ for(std::set<int>::iterator itr = graph[node_id].begin();
+ itr != graph[node_id].end(); ++itr) {
+ populate_connected_component(connectivity, polygons, polygon_color, graph,
+ *itr, polygon_id_offset, net, net_ids, net_prefix, layout_layer);
+ }
+}
+
+inline void connect_layout_to_layer(connectivity_database& connectivity, polygon_set& layout, std::string layout_layer, std::string layer, std::string net_prefix, int& net_suffix) {
+ if(layout_layer.empty())
+ return;
+ boost::polygon::connectivity_extraction_90<int> ce;
+ std::vector<std::string> net_ids;
+ for(connectivity_database::iterator itr = connectivity.begin(); itr != connectivity.end(); ++itr) {
+ net_ids.push_back((*itr).first);
+ ce.insert((*itr).second[layer]);
+ }
+ std::vector<polygon> polygons;
+ layout.get_polygons(polygons);
+ std::size_t polygon_id_offset = net_ids.size();
+ for(std::size_t i = 0; i < polygons.size(); ++i) {
+ ce.insert(polygons[i]);
+ }
+ std::vector<std::set<int> > graph(polygons.size() + net_ids.size(), std::set<int>());
+ ce.extract(graph);
+ std::vector<int> polygon_color(polygons.size() + net_ids.size(), 0);
+ //for each net in net_ids populate connected component with net
+ for(std::size_t node_id = 0; node_id < net_ids.size(); ++node_id) {
+ populate_connected_component(connectivity, polygons, polygon_color, graph, node_id,
+ polygon_id_offset, net_ids[node_id], net_ids,
+ net_prefix, layout_layer);
+ }
+ //for each polygon_color that is zero populate connected compontent with net_prefix + net_suffix++
+ for(std::size_t i = 0; i < polygons.size(); ++i) {
+ if(polygon_color[i + polygon_id_offset] == 0) {
+ std::stringstream ss(std::stringstream::in | std::stringstream::out);
+ ss << net_prefix << net_suffix++;
+ std::string internal_net;
+ ss >> internal_net;
+ populate_connected_component(connectivity, polygons, polygon_color, graph,
+ i + polygon_id_offset,
+ polygon_id_offset, internal_net, net_ids,
+ net_prefix, layout_layer);
+ }
+ }
+}
+
+//given a layout_database we populate a connectivity database
+inline void populate_connectivity_database(connectivity_database& connectivity, std::vector<layout_pin>& pins, layout_database& layout) {
+ using namespace boost::polygon;
+ using namespace boost::polygon::operators;
+ for(std::size_t i = 0; i < pins.size(); ++i) {
+ connectivity[pins[i].net][pins[i].layer].insert(pins[i]);
+ }
+ int internal_net_suffix = 0;
+ //connect metal1 layout to pins which were on metal1
+ connect_layout_to_layer(connectivity, layout["METAL1"], "METAL1",
+ "METAL1", "__internal_net_", internal_net_suffix);
+ //connect via0 layout to metal1
+ connect_layout_to_layer(connectivity, layout["VIA0"], "VIA0",
+ "METAL1", "__internal_net_", internal_net_suffix);
+ //poly needs to have gates subtracted from it to prevent shorting through transistors
+ polygon_set poly_not_gate = layout["POLY"] - layout["GATE"];
+ //connect poly minus gate to via0
+ connect_layout_to_layer(connectivity, poly_not_gate, "POLY",
+ "VIA0", "__internal_net_", internal_net_suffix);
+ //we don't want to short signals through transistors so we subtract the gate regions
+ //from the diffusions
+ polygon_set diff_not_gate = (layout["PDIFF"] + layout["NDIFF"]) - layout["GATE"];
+ //connect diffusion minus gate to poly
+ //Note that I made up the DIFF layer name for combined P and NDIFF
+ connect_layout_to_layer(connectivity, diff_not_gate, "DIFF",
+ "POLY", "__internal_net_", internal_net_suffix);
+ //connect gate to poly to make connections through gates on poly
+ connect_layout_to_layer(connectivity, layout["GATE"], "GATE",
+ "POLY", "__internal_net_", internal_net_suffix);
+ //now we have traced connectivity of the layout down to the transistor level
+ //any polygons not connected to pins have been assigned internal net names
+}
+
+#endif

Added: trunk/libs/polygon/doc/tutorial/device.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/device.hpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,38 @@
+/*
+ Copyright 2010 Intel Corporation
+
+ Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+*/
+
+//device.hpp
+#ifndef BOOST_POLYGON_TUTORIAL_DEVICE_HPP
+#define BOOST_POLYGON_TUTORIAL_DEVICE_HPP
+#include <string>
+#include <vector>
+#include <iostream>
+
+struct device {
+ std::string type;
+ std::vector<std::string> terminals;
+};
+
+inline std::ostream& operator << (std::ostream& o, const device& r)
+{
+ o << r.type << " ";
+ for(std::size_t i = 0; i < r.terminals.size(); ++i) {
+ o << r.terminals[i] << " ";
+ }
+ return o;
+}
+
+inline std::istream& operator >> (std::istream& i, device& r)
+{
+ i >> r.type;
+ r.terminals = std::vector<std::string>(3, std::string());
+ i >> r.terminals[0] >> r.terminals[1] >> r.terminals[2];
+ return i;
+}
+
+#endif

Added: trunk/libs/polygon/doc/tutorial/extract.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/extract.cpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,63 @@
+/*
+Copyright 2010 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+#include "schematic_database.hpp"
+#include "layout_pin.hpp"
+#include "layout_rectangle.hpp"
+#include "connectivity_database.hpp"
+#include "compare_schematics.hpp"
+#include "extract_devices.hpp"
+#include "parse_layout.hpp"
+#include "layout_database.hpp"
+#include "device.hpp"
+#include <string>
+#include <fstream>
+#include <iostream>
+
+bool compare_files(std::string layout_file, std::string schematic_file) {
+ std::ifstream sin(schematic_file.c_str());
+ std::ifstream lin(layout_file.c_str());
+
+ std::vector<layout_rectangle> rects;
+ std::vector<layout_pin> pins;
+ parse_layout(rects, pins, lin);
+
+ schematic_database reference_schematic;
+ parse_schematic_database(reference_schematic, sin);
+
+ layout_database layout;
+ populate_layout_database(layout, rects);
+
+ connectivity_database connectivity;
+ populate_connectivity_database(connectivity, pins, layout);
+
+ schematic_database schematic;
+ std::vector<device>& devices = schematic.devices;
+ for(std::size_t i = 0; i < pins.size(); ++i) {
+ devices.push_back(device());
+ devices.back().type = "PIN";
+ devices.back().terminals.push_back(pins[i].net);
+ }
+ extract_devices(devices, connectivity, layout);
+ extract_netlist(schematic.nets, devices);
+
+ return compare_schematics(reference_schematic, schematic);
+}
+
+int main(int argc, char **argv) {
+ if(argc < 3) {
+ std::cout << "usage: " << argv[0] << " <layout_file> <schematic_file>" << std::endl;
+ return -1;
+ }
+ bool result = compare_files(argv[1], argv[2]);
+ if(result == false) {
+ std::cout << "Layout does not match schematic." << std::endl;
+ return 1;
+ }
+ std::cout << "Layout does match schematic." << std::endl;
+ return 0;
+}

Added: trunk/libs/polygon/doc/tutorial/extract_devices.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/extract_devices.hpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,99 @@
+/*
+Copyright 2010 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+//extract_devices.hpp
+#ifndef BOOST_POLYGON_TUTORIAL_EXTRACT_DEVICES_HPP
+#define BOOST_POLYGON_TUTORIAL_EXTRACT_DEVICES_HPP
+#include <string>
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include "connectivity_database.hpp"
+#include "device.hpp"
+
+typedef boost::polygon::connectivity_extraction_90<int> connectivity_extraction;
+inline std::vector<std::set<int> >
+extract_layer(connectivity_extraction& ce, std::vector<std::string>& net_ids,
+ connectivity_database& connectivity, polygon_set& layout,
+ std::string layer) {
+ for(connectivity_database::iterator itr = connectivity.begin(); itr != connectivity.end(); ++itr) {
+ net_ids.push_back((*itr).first);
+ ce.insert((*itr).second[layer]);
+ }
+ std::vector<polygon> polygons;
+ layout.get_polygons(polygons);
+ for(std::size_t i = 0; i < polygons.size(); ++i) {
+ ce.insert(polygons[i]);
+ }
+ std::vector<std::set<int> > graph(polygons.size() + net_ids.size(), std::set<int>());
+ ce.extract(graph);
+ return graph;
+}
+
+inline void extract_device_type(std::vector<device>& devices, connectivity_database& connectivity,
+ polygon_set& layout, std::string type) {
+ //recall that P and NDIFF were merged into one DIFF layer in the connectivity database
+ //find the two nets on the DIFF layer that interact with each transistor
+ //and then find the net on the poly layer that interacts with each transistor
+ boost::polygon::connectivity_extraction_90<int> cediff;
+ std::vector<std::string> net_ids_diff;
+ std::vector<std::set<int> > graph_diff =
+ extract_layer(cediff, net_ids_diff, connectivity, layout, "DIFF");
+ boost::polygon::connectivity_extraction_90<int> cepoly;
+ std::vector<std::string> net_ids_poly;
+ std::vector<std::set<int> > graph_poly =
+ extract_layer(cepoly, net_ids_poly, connectivity, layout, "POLY");
+ std::vector<device> tmp_devices(graph_diff.size() - net_ids_poly.size());
+ for(std::size_t i = net_ids_poly.size(); i < graph_diff.size(); ++i) {
+ tmp_devices[i - net_ids_diff.size()].type = type;
+ tmp_devices[i - net_ids_diff.size()].terminals = std::vector<std::string>(3, std::string());
+ std::size_t j = 0;
+ for(std::set<int>::iterator itr = graph_diff[i].begin();
+ itr != graph_diff[i].end(); ++itr, ++j) {
+ if(j == 0) {
+ tmp_devices[i - net_ids_diff.size()].terminals[0] = net_ids_diff[*itr];
+ } else if(j == 1) {
+ tmp_devices[i - net_ids_diff.size()].terminals[2] = net_ids_diff[*itr];
+ } else {
+ //error, too many diff connections
+ tmp_devices[i - net_ids_diff.size()].terminals = std::vector<std::string>(3, std::string());
+ }
+ }
+ j = 0;
+ for(std::set<int>::iterator itr = graph_poly[i].begin();
+ itr != graph_poly[i].end(); ++itr, ++j) {
+ if(j == 0) {
+ tmp_devices[i - net_ids_diff.size()].terminals[1] = net_ids_poly[*itr];
+ } else {
+ //error, too many poly connections
+ tmp_devices[i - net_ids_poly.size()].terminals = std::vector<std::string>(3, std::string());
+ }
+ }
+ }
+
+ devices.insert(devices.end(), tmp_devices.begin(), tmp_devices.end());
+}
+
+//populates vector of devices based on connectivity and layout data
+inline void extract_devices(std::vector<device>& devices, connectivity_database& connectivity,
+ layout_database& layout) {
+ using namespace boost::polygon::operators;
+ //p-type transistors are gate that interact with p diffusion and nwell
+ polygon_set ptransistors = layout["GATE"];
+ ptransistors.interact(layout["PDIFF"]);
+ ptransistors.interact(layout["NWELL"]);
+ //n-type transistors are gate that interact with n diffusion and not nwell
+ polygon_set ntransistors = layout["GATE"];
+ ntransistors.interact(layout["NDIFF"]);
+ polygon_set not_ntransistors = ntransistors;
+ not_ntransistors.interact(layout["NWELL"]);
+ ntransistors -= not_ntransistors;
+ extract_device_type(devices, connectivity, ptransistors, "PTRANS");
+ extract_device_type(devices, connectivity, ntransistors, "NTRANS");
+}
+
+#endif

Added: trunk/libs/polygon/doc/tutorial/layout_database.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/layout_database.hpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,41 @@
+/*
+Copyright 2010 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+
+//layout_database.hpp
+#ifndef BOOST_POLYGON_TUTORIAL_LAYOUT_DATABASE_HPP
+#define BOOST_POLYGON_TUTORIAL_LAYOUT_DATABASE_HPP
+#include <boost/polygon/polygon.hpp>
+#include <map>
+#include "layout_rectangle.hpp"
+
+typedef std::map<std::string, boost::polygon::polygon_90_set_data<int> > layout_database;
+
+//map the layout rectangle data type to the boost::polygon::rectangle_concept
+namespace boost { namespace polygon{
+ template <>
+ struct rectangle_traits<layout_rectangle> {
+ typedef int coordinate_type;
+ typedef interval_data<int> interval_type;
+ static inline interval_type get(const layout_rectangle& rectangle, orientation_2d orient) {
+ if(orient == HORIZONTAL)
+ return interval_type(rectangle.xl, rectangle.xh);
+ return interval_type(rectangle.yl, rectangle.yh);
+ }
+ };
+
+ template <>
+ struct geometry_concept<layout_rectangle> { typedef rectangle_concept type; };
+}}
+
+//insert layout rectangles into a layout database
+inline void populate_layout_database(layout_database& layout, std::vector<layout_rectangle>& rects) {
+ for(std::size_t i = 0; i < rects.size(); ++i) {
+ layout[rects[i].layer].insert(rects[i]);
+ }
+}
+#endif

Added: trunk/libs/polygon/doc/tutorial/layout_pin.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/layout_pin.hpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,33 @@
+/*
+Copyright 2010 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+
+//layout_pin.hpp
+#ifndef BOOST_POLYGON_TUTORIAL_LAYOUT_PIN_HPP
+#define BOOST_POLYGON_TUTORIAL_LAYOUT_PIN_HPP
+#include <string>
+#include <iostream>
+
+struct layout_pin {
+ int xl, yl, xh, yh;
+ std::string layer;
+ std::string net;
+};
+
+inline std::ostream& operator << (std::ostream& o, const layout_pin& r)
+{
+ o << r.xl << " " << r.xh << " " << r.yl << " " << r.yh << " " << r.layer << " " << r.net;
+ return o;
+}
+
+inline std::istream& operator >> (std::istream& i, layout_pin& r)
+{
+ i >> r.xl >> r.xh >> r.yl >> r.yh >> r.layer >> r.net;
+ return i;
+}
+
+#endif

Added: trunk/libs/polygon/doc/tutorial/layout_rectangle.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/layout_rectangle.hpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,32 @@
+/*
+Copyright 2010 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+
+//layout_rectangle.hpp
+#ifndef BOOST_POLYGON_TUTORIAL_LAYOUT_RECTANGLE_HPP
+#define BOOST_POLYGON_TUTORIAL_LAYOUT_RECTANGLE_HPP
+#include <string>
+#include <iostream>
+
+struct layout_rectangle {
+ int xl, yl, xh, yh;
+ std::string layer;
+};
+
+inline std::ostream& operator << (std::ostream& o, const layout_rectangle& r)
+{
+ o << r.xl << " " << r.xh << " " << r.yl << " " << r.yh << " " << r.layer;
+ return o;
+}
+
+inline std::istream& operator >> (std::istream& i, layout_rectangle& r)
+{
+ i >> r.xl >> r.xh >> r.yl >> r.yh >> r.layer;
+ return i;
+}
+
+#endif

Added: trunk/libs/polygon/doc/tutorial/minkowski.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/minkowski.cpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,154 @@
+/*
+Copyright 2010 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+#include <iostream>
+#include <boost/polygon/polygon.hpp>
+
+typedef boost::polygon::point_data<int> point;
+typedef boost::polygon::polygon_set_data<int> polygon_set;
+typedef boost::polygon::polygon_with_holes_data<int> polygon;
+typedef std::pair<point, point> edge;
+using namespace boost::polygon::operators;
+
+void convolve_two_segments(std::vector<point>& figure, const edge& a, const edge& b) {
+ using namespace boost::polygon;
+ figure.clear();
+ figure.push_back(point(a.first));
+ figure.push_back(point(a.first));
+ figure.push_back(point(a.second));
+ figure.push_back(point(a.second));
+ convolve(figure[0], b.second);
+ convolve(figure[1], b.first);
+ convolve(figure[2], b.first);
+ convolve(figure[3], b.second);
+}
+
+template <typename itrT1, typename itrT2>
+void convolve_two_point_sequences(polygon_set& result, itrT1 ab, itrT1 ae, itrT2 bb, itrT2 be) {
+ using namespace boost::polygon;
+ if(ab == ae || bb == be)
+ return;
+ point first_a = *ab;
+ point prev_a = *ab;
+ std::vector<point> vec;
+ polygon poly;
+ ++ab;
+ for( ; ab != ae; ++ab) {
+ point first_b = *bb;
+ point prev_b = *bb;
+ itrT2 tmpb = bb;
+ ++tmpb;
+ for( ; tmpb != be; ++tmpb) {
+ convolve_two_segments(vec, std::make_pair(prev_b, *tmpb), std::make_pair(prev_a, *ab));
+ set_points(poly, vec.begin(), vec.end());
+ result.insert(poly);
+ prev_b = *tmpb;
+ }
+ prev_a = *ab;
+ }
+}
+
+template <typename itrT>
+void convolve_point_sequence_with_polygons(polygon_set& result, itrT b, itrT e, const std::vector<polygon>& polygons) {
+ using namespace boost::polygon;
+ for(std::size_t i = 0; i < polygons.size(); ++i) {
+ convolve_two_point_sequences(result, b, e, begin_points(polygons[i]), end_points(polygons[i]));
+ for(polygon_with_holes_traits<polygon>::iterator_holes_type itrh = begin_holes(polygons[i]);
+ itrh != end_holes(polygons[i]); ++itrh) {
+ convolve_two_point_sequences(result, b, e, begin_points(*itrh), end_points(*itrh));
+ }
+ }
+}
+
+void convolve_two_polygon_sets(polygon_set& result, const polygon_set& a, const polygon_set& b) {
+ using namespace boost::polygon;
+ result.clear();
+ std::vector<polygon> a_polygons;
+ std::vector<polygon> b_polygons;
+ a.get(a_polygons);
+ b.get(b_polygons);
+ for(std::size_t ai = 0; ai < a_polygons.size(); ++ai) {
+ convolve_point_sequence_with_polygons(result, begin_points(a_polygons[ai]),
+ end_points(a_polygons[ai]), b_polygons);
+ for(polygon_with_holes_traits<polygon>::iterator_holes_type itrh = begin_holes(a_polygons[ai]);
+ itrh != end_holes(a_polygons[ai]); ++itrh) {
+ convolve_point_sequence_with_polygons(result, begin_points(*itrh),
+ end_points(*itrh), b_polygons);
+ }
+ for(std::size_t bi = 0; bi < b_polygons.size(); ++bi) {
+ polygon tmp_poly = a_polygons[ai];
+ result.insert(convolve(tmp_poly, *(begin_points(b_polygons[bi]))));
+ tmp_poly = b_polygons[bi];
+ result.insert(convolve(tmp_poly, *(begin_points(a_polygons[ai]))));
+ }
+ }
+}
+
+namespace boost { namespace polygon{
+
+ template <typename T>
+ std::ostream& operator<<(std::ostream& o, const polygon_data<T>& poly) {
+ o << "Polygon { ";
+ for(typename polygon_data<T>::iterator_type itr = poly.begin();
+ itr != poly.end(); ++itr) {
+ if(itr != poly.begin()) o << ", ";
+ o << (*itr).get(HORIZONTAL) << " " << (*itr).get(VERTICAL);
+ }
+ o << " } ";
+ return o;
+ }
+
+ template <typename T>
+ std::ostream& operator<<(std::ostream& o, const polygon_with_holes_data<T>& poly) {
+ o << "Polygon With Holes { ";
+ for(typename polygon_with_holes_data<T>::iterator_type itr = poly.begin();
+ itr != poly.end(); ++itr) {
+ if(itr != poly.begin()) o << ", ";
+ o << (*itr).get(HORIZONTAL) << " " << (*itr).get(VERTICAL);
+ } o << " { ";
+ for(typename polygon_with_holes_data<T>::iterator_holes_type itr = poly.begin_holes();
+ itr != poly.end_holes(); ++itr) {
+ o << (*itr);
+ }
+ o << " } } ";
+ return o;
+ }
+}}
+
+int main(int argc, char **argv) {
+ polygon_set a, b, c;
+ a += boost::polygon::rectangle_data<int>(0, 0, 1000, 1000);
+ a -= boost::polygon::rectangle_data<int>(100, 100, 900, 900);
+ a += boost::polygon::rectangle_data<int>(1000, -1000, 1010, -990);
+ std::vector<polygon> polys;
+ std::vector<point> pts;
+ pts.push_back(point(-40, 0));
+ pts.push_back(point(-10, 10));
+ pts.push_back(point(0, 40));
+ pts.push_back(point(10, 10));
+ pts.push_back(point(40, 0));
+ pts.push_back(point(10, -10));
+ pts.push_back(point(0, -40));
+ pts.push_back(point(-10, -10));
+ pts.push_back(point(-40, 0));
+ polygon poly;
+ boost::polygon::set_points(poly, pts.begin(), pts.end());
+ b+=poly;
+ pts.clear();
+ pts.push_back(point(1040, 1040));
+ pts.push_back(point(1050, 1045));
+ pts.push_back(point(1045, 1050));
+ boost::polygon::set_points(poly, pts.begin(), pts.end());
+ b+=poly;
+ polys.clear();
+ convolve_two_polygon_sets(c, a, b);
+ c.get(polys);
+ for(int i = 0; i < polys.size(); ++i ){
+ std::cout << polys[i] << std::endl;
+ }
+ return 0;
+}

Added: trunk/libs/polygon/doc/tutorial/parse_layout.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/parse_layout.hpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,39 @@
+/*
+Copyright 2010 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+
+//parse_layout.hpp
+#ifndef BOOST_POLYGON_TUTORIAL_PARSE_LAYOUT_HPP
+#define BOOST_POLYGON_TUTORIAL_PARSE_LAYOUT_HPP
+#include <string>
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include "layout_rectangle.hpp"
+#include "layout_pin.hpp"
+
+//populates vectors of layout rectangles and pins
+inline void parse_layout(std::vector<layout_rectangle>& rects, std::vector<layout_pin>& pins,
+ std::ifstream& sin) {
+ while(!sin.eof()) {
+ std::string type_id;
+ sin >> type_id;
+ if(type_id == "Rectangle") {
+ layout_rectangle rect;
+ sin >> rect;
+ rects.push_back(rect);
+ } else if (type_id == "Pin") {
+ layout_pin pin;
+ sin >> pin;
+ pins.push_back(pin);
+ } else if (type_id == "") {
+ break;
+ }
+ }
+}
+
+#endif

Added: trunk/libs/polygon/doc/tutorial/schematic_database.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/doc/tutorial/schematic_database.hpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,58 @@
+/*
+Copyright 2010 Intel Corporation
+
+Use, modification and distribution are subject to the Boost Software License,
+Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+*/
+
+//schematic_database.hpp
+#ifndef BOOST_POLYGON_TUTORIAL_SCHEMATIC_DATABASE_HPP
+#define BOOST_POLYGON_TUTORIAL_SCHEMATIC_DATABASE_HPP
+#include <string>
+#include <fstream>
+#include <map>
+#include <set>
+#include "device.hpp"
+
+struct schematic_database{
+ std::vector<device> devices;
+ std::map<std::string, std::set<std::size_t> > nets;
+};
+
+//given a vector of devices populate the map of net name to set of device index
+inline void extract_netlist(std::map<std::string, std::set<std::size_t> >& nets,
+ std::vector<device>& devices) {
+ for(std::size_t i = 0; i < devices.size(); ++i) {
+ for(std::size_t j = 0; j < devices[i].terminals.size(); ++j) {
+ //create association between net name and device id
+ nets[devices[i].terminals[j]].insert(nets[devices[i].terminals[j]].end(), i);
+ }
+ }
+}
+
+inline void parse_schematic_database(schematic_database& schematic,
+ std::ifstream& sin) {
+ std::vector<device>& devices = schematic.devices;
+ while(!sin.eof()) {
+ std::string type_id;
+ sin >> type_id;
+ if(type_id == "Device") {
+ device d;
+ sin >> d;
+ devices.push_back(d);
+ } else if (type_id == "Pin") {
+ std::string net;
+ sin >> net;
+ device d;
+ d.type = "PIN";
+ d.terminals.push_back(net);
+ devices.push_back(d);
+ } else if (type_id == "") {
+ break;
+ }
+ }
+ extract_netlist(schematic.nets, devices);
+}
+
+#endif

Added: trunk/libs/polygon/test/Jamfile.v2
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/test/Jamfile.v2 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,22 @@
+# test/Jamfile.v2 controls building of Polygon Library unit tests
+#
+# Copyright (c) 2010 Intel Corporation
+#
+# Use, modification and distribution is subject to the Boost Software License,
+# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import testing ;
+
+project polygon-test
+ :
+ requirements
+ <include>.
+ <toolset>msvc:<asynch-exceptions>on
+ ;
+
+test-suite polygon-unit
+ :
+ [ run gtl_boost_unit_test.cpp ]
+ ;
+

Added: trunk/libs/polygon/test/gtl_boost_unit_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/polygon/test/gtl_boost_unit_test.cpp 2010-05-28 13:17:22 EDT (Fri, 28 May 2010)
@@ -0,0 +1,3368 @@
+/*
+ Copyright 2008 Intel Corporation
+
+ Use, modification and distribution are subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+*/
+#include <iostream>
+#include <boost/polygon/polygon.hpp>
+namespace gtl = boost::polygon;
+using namespace boost::polygon::operators;
+#include <time.h>
+#include <stdlib.h>
+
+namespace boost { namespace polygon{
+
+ template <class T>
+ std::ostream& operator << (std::ostream& o, const interval_data<T>& i)
+ {
+ return o << i.get(LOW) << ' ' << i.get(HIGH);
+ }
+ template <class T>
+ std::ostream& operator << (std::ostream& o, const point_data<T>& r)
+ {
+ return o << r.get(HORIZONTAL) << ' ' << r.get(VERTICAL);
+ }
+ template <typename T>
+ std::ostream& operator<<(std::ostream& o, const polygon_45_data<T>& poly) {
+ o << "Polygon { ";
+ for(typename polygon_45_data<T>::iterator_type itr = poly.begin();
+ itr != poly.end(); ++itr) {
+ if(itr != poly.begin()) o << ", ";
+ o << (*itr).get(HORIZONTAL) << " " << (*itr).get(VERTICAL);
+ }
+ o << " } ";
+ return o;
+ }
+ template <typename Unit>
+ inline std::ostream& operator<< (std::ostream& o, const polygon_45_set_data<Unit>& p) {
+ o << "Polygon45Set ";
+ o << " " << !p.sorted() << " " << p.dirty() << " { ";
+ for(typename polygon_45_set_data<Unit>::iterator_type itr = p.begin();
+ itr != p.end(); ++itr) {
+ o << (*itr).pt << ":";
+ for(unsigned int i = 0; i < 4; ++i) {
+ o << (*itr).count[i] << ",";
+ } o << " ";
+ //o << (*itr).first << ":" << (*itr).second << "; ";
+ }
+ o << "} ";
+ return o;
+ }
+
+ template <typename Unit>
+ inline std::istream& operator>> (std::istream& i, polygon_45_set_data<Unit>& p) {
+ //TODO
+ return i;
+ }
+ template <typename T>
+ std::ostream& operator << (std::ostream& o, const polygon_90_data<T>& r)
+ {
+ o << "Polygon { ";
+ for(typename polygon_90_data<T>::iterator_type itr = r.begin(); itr != r.end(); ++itr) {
+ o << *itr << ", ";
+ }
+ return o << "} ";
+ }
+
+ template <typename T>
+ std::istream& operator >> (std::istream& i, polygon_90_data<T>& r)
+ {
+ std::size_t size;
+ i >> size;
+ std::vector<T> vec;
+ vec.reserve(size);
+ for(std::size_t ii = 0; ii < size; ++ii) {
+ T coord;
+ i >> coord;
+ vec.push_back(coord);
+ }
+ r.set_compact(vec.begin(), vec.end());
+ return i;
+ }
+
+ template <typename T>
+ std::ostream& operator << (std::ostream& o, const std::vector<polygon_90_data<T> >& r) {
+ o << r.size() << ' ';
+ for(std::size_t ii = 0; ii < r.size(); ++ii) {
+ o << (r[ii]);
+ }
+ return o;
+ }
+ template <typename T>
+ std::istream& operator >> (std::istream& i, std::vector<polygon_90_data<T> >& r) {
+ std::size_t size;
+ i >> size;
+ r.clear();
+ r.reserve(size);
+ for(std::size_t ii = 0; ii < size; ++ii) {
+ polygon_90_data<T> tmp;
+ i >> tmp;
+ r.push_back(tmp);
+ }
+ return i;
+ }
+ template <typename T>
+ std::ostream& operator<<(std::ostream& o, const polygon_data<T>& poly) {
+ o << "Polygon { ";
+ for(typename polygon_data<T>::iterator_type itr = poly.begin();
+ itr != poly.end(); ++itr) {
+ if(itr != poly.begin()) o << ", ";
+ o << (*itr).get(HORIZONTAL) << " " << (*itr).get(VERTICAL);
+ }
+ o << " } ";
+ return o;
+ }
+ template <typename T>
+ std::ostream& operator << (std::ostream& o, const polygon_set_data<T>& r)
+ {
+ o << "Polygon Set Data { ";
+ for(typename polygon_set_data<T>::iterator_type itr = r.begin(); itr != r.end(); ++itr) {
+ o << "<" << (*itr).first.first << ", " << (*itr).first.second << ">:" << (*itr).second << " ";
+ }
+ o << "} ";
+ return o;
+ }
+ template <typename T>
+ std::ostream& operator<<(std::ostream& o, const polygon_90_with_holes_data<T>& poly) {
+ o << "Polygon With Holes { ";
+ for(typename polygon_90_with_holes_data<T>::iterator_type itr = poly.begin();
+ itr != poly.end(); ++itr) {
+ if(itr != poly.begin()) o << ", ";
+ o << (*itr).get(HORIZONTAL) << " " << (*itr).get(VERTICAL);
+ } o << " { ";
+ for(typename polygon_90_with_holes_data<T>::iterator_holes_type itr = poly.begin_holes();
+ itr != poly.end_holes(); ++itr) {
+ o << (*itr);
+ }
+ o << " } } ";
+ return o;
+ }
+ template <typename T>
+ std::ostream& operator<<(std::ostream& o, const polygon_45_with_holes_data<T>& poly) {
+ o << "Polygon With Holes { ";
+ for(typename polygon_45_with_holes_data<T>::iterator_type itr = poly.begin();
+ itr != poly.end(); ++itr) {
+ if(itr != poly.begin()) o << ", ";
+ o << (*itr).get(HORIZONTAL) << " " << (*itr).get(VERTICAL);
+ } o << " { ";
+ for(typename polygon_45_with_holes_data<T>::iterator_holes_type itr = poly.begin_holes();
+ itr != poly.end_holes(); ++itr) {
+ o << (*itr);
+ }
+ o << " } } ";
+ return o;
+ }
+ template <typename T>
+ std::ostream& operator<<(std::ostream& o, const polygon_with_holes_data<T>& poly) {
+ o << "Polygon With Holes { ";
+ for(typename polygon_with_holes_data<T>::iterator_type itr = poly.begin();
+ itr != poly.end(); ++itr) {
+ if(itr != poly.begin()) o << ", ";
+ o << (*itr).get(HORIZONTAL) << " " << (*itr).get(VERTICAL);
+ } o << " { ";
+ for(typename polygon_with_holes_data<T>::iterator_holes_type itr = poly.begin_holes();
+ itr != poly.end_holes(); ++itr) {
+ o << (*itr);
+ }
+ o << " } } ";
+ return o;
+ }
+ template <class T>
+ std::ostream& operator << (std::ostream& o, const rectangle_data<T>& r)
+ {
+ return o << r.get(HORIZONTAL) << ' ' << r.get(VERTICAL);
+ }
+
+
+ template <typename T>
+ typename enable_if<typename is_polygon_90_set_type<T>::type, void>::type
+ print_is_polygon_90_set_concept(const T& ) { std::cout << "is polygon 90 set concept\n"; }
+ template <typename T>
+ typename enable_if<typename is_mutable_polygon_90_set_type<T>::type, void>::type
+ print_is_mutable_polygon_90_set_concept(const T& ) { std::cout << "is mutable polygon 90 set concept\n"; }
+ namespace boolean_op {
+ //self contained unit test for BooleanOr algorithm
+ template <typename Unit>
+ inline bool testBooleanOr() {
+ BooleanOp<int, Unit> booleanOr;
+ //test one rectangle
+ std::vector<std::pair<interval_data<Unit>, int> > container;
+ booleanOr.processInterval(container, interval_data<Unit>(0, 10), 1);
+ booleanOr.advanceScan();
+ booleanOr.processInterval(container, interval_data<Unit>(0, 10), -1);
+ if(container.size() != 2) {
+ std::cout << "Test one rectangle, wrong output size\n";
+ return false;
+ }
+ if(container[0] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(0, 10), 1)) {
+ std::cout << "Test one rectangle, first output wrong: Interval(" <<
+ container[0].first << "), " << container[0].second << std::endl;
+ }
+ if(container[1] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(0, 10), -1)) {
+ std::cout << "Test one rectangle, second output wrong: Interval(" <<
+ container[1].first << "), " << container[1].second << std::endl;
+ }
+
+ //test two rectangles
+ container.clear();
+ booleanOr = BooleanOp<int, Unit>();
+ booleanOr.processInterval(container, interval_data<Unit>(0, 10), 1);
+ booleanOr.advanceScan();
+ booleanOr.processInterval(container, interval_data<Unit>(5, 15), 1);
+ booleanOr.advanceScan();
+ booleanOr.processInterval(container, interval_data<Unit>(0, 10), -1);
+ booleanOr.advanceScan();
+ booleanOr.processInterval(container, interval_data<Unit>(5, 15), -1);
+ if(container.size() != 4) {
+ std::cout << "Test two rectangles, wrong output size\n";
+ for(std::size_t i = 0; i < container.size(); ++i){
+ std::cout << container[i].first << "), " << container[i].second << std::endl;
+ }
+ return false;
+ }
+ if(container[0] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(0, 10), 1)) {
+ std::cout << "Test two rectangles, first output wrong: Interval(" <<
+ container[0].first << "), " << container[0].second << std::endl;
+ }
+ if(container[1] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(10, 15), 1)) {
+ std::cout << "Test two rectangles, second output wrong: Interval(" <<
+ container[1].first << "), " << container[1].second << std::endl;
+ }
+ if(container[2] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(0, 5), -1)) {
+ std::cout << "Test two rectangles, third output wrong: Interval(" <<
+ container[2].first << "), " << container[2].second << std::endl;
+ }
+ if(container[3] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(5, 15), -1)) {
+ std::cout << "Test two rectangles, fourth output wrong: Interval(" <<
+ container[3].first << "), " << container[3].second << std::endl;
+ }
+
+ //test two rectangles
+ container.clear();
+ booleanOr = BooleanOp<int, Unit>();
+ booleanOr.processInterval(container, interval_data<Unit>(5, 15), 1);
+ booleanOr.advanceScan();
+ booleanOr.processInterval(container, interval_data<Unit>(0, 10), 1);
+ booleanOr.advanceScan();
+ booleanOr.processInterval(container, interval_data<Unit>(5, 15), -1);
+ booleanOr.advanceScan();
+ booleanOr.processInterval(container, interval_data<Unit>(0, 10), -1);
+ if(container.size() != 4) {
+ std::cout << "Test other two rectangles, wrong output size\n";
+ for(std::size_t i = 0; i < container.size(); ++i){
+ std::cout << container[i].first << "), " << container[i].second << std::endl;
+ }
+ return false;
+ }
+ if(container[0] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(5, 15), 1)) {
+ std::cout << "Test other two rectangles, first output wrong: Interval(" <<
+ container[0].first << "), " << container[0].second << std::endl;
+ }
+ if(container[1] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(0, 5), 1)) {
+ std::cout << "Test other two rectangles, second output wrong: Interval(" <<
+ container[1].first << "), " << container[1].second << std::endl;
+ }
+ if(container[2] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(10, 15), -1)) {
+ std::cout << "Test other two rectangles, third output wrong: Interval(" <<
+ container[2].first << "), " << container[2].second << std::endl;
+ }
+ if(container[3] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(0, 10), -1)) {
+ std::cout << "Test other two rectangles, fourth output wrong: Interval(" <<
+ container[3].first << "), " << container[3].second << std::endl;
+ }
+
+ //test two nonoverlapping rectangles
+ container.clear();
+ booleanOr = BooleanOp<int, Unit>();
+ booleanOr.processInterval(container, interval_data<Unit>(0, 10), 1);
+ booleanOr.advanceScan();
+ booleanOr.processInterval(container, interval_data<Unit>(15, 25), 1);
+ booleanOr.advanceScan();
+ booleanOr.processInterval(container, interval_data<Unit>(0, 10), -1);
+ booleanOr.advanceScan();
+ booleanOr.processInterval(container, interval_data<Unit>(15, 25), -1);
+ if(container.size() != 4) {
+ std::cout << "Test two nonoverlapping rectangles, wrong output size\n";
+ return false;
+ }
+ if(container[0] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(0, 10), 1)) {
+ std::cout << "Test two nonoverlapping rectangles, first output wrong: Interval(" <<
+ container[0].first << "), " << container[0].second << std::endl;
+ }
+ if(container[1] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(15, 25), 1)) {
+ std::cout << "Test two nonoverlapping rectangles, second output wrong: Interval(" <<
+ container[1].first << "), " << container[1].second << std::endl;
+ }
+ if(container[2] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(0, 10), -1)) {
+ std::cout << "Test two nonoverlapping rectangles, third output wrong: Interval(" <<
+ container[2].first << "), " << container[2].second << std::endl;
+ }
+ if(container[3] != std::pair<interval_data<Unit>, int>(interval_data<Unit>(15, 25), -1)) {
+ std::cout << "Test two nonoverlapping rectangles, fourth output wrong: Interval(" <<
+ container[3].first << "), " << container[3].second << std::endl;
+ }
+ return true;
+ }
+ }
+
+ void test_assign() {
+ using namespace gtl;
+ std::vector<polygon_data<int> > ps;
+ polygon_90_set_data<int> ps90;
+ assign(ps, ps90);
+ }
+
+ //this is a compile time test, if it compiles it passes
+ void test_view_as() {
+ using namespace gtl;
+ polygon_data<int> p;
+ polygon_45_data<int> p45;
+ polygon_90_data<int> p90;
+ polygon_with_holes_data<int> pwh;
+ polygon_45_with_holes_data<int> p45wh;
+ polygon_90_with_holes_data<int> p90wh;
+ rectangle_data<int> rect(0, 1, 10, 11);
+ polygon_90_set_data<int> ps90;
+ polygon_45_set_data<int> ps45;
+ polygon_set_data<int> ps;
+
+ assign(p, rect);
+ assign(p90, view_as<polygon_90_concept>(p));
+ if(!equivalence(p90, rect))
+ std::cout << "fail 1\n";
+ assign(p45, view_as<polygon_45_concept>(p));
+ if(!equivalence(p45, rect))
+ std::cout << "fail 2\n";
+ assign(p90, view_as<polygon_90_concept>(p45));
+ if(!equivalence(p90, rect))
+ std::cout << "fail 3\n";
+ if(!equivalence(rect, view_as<rectangle_concept>(p)))
+ std::cout << "fail 4\n";
+ if(!equivalence(rect, view_as<rectangle_concept>(p45)))
+ std::cout << "fail 5\n";
+ if(!equivalence(rect, view_as<rectangle_concept>(p90)))
+ std::cout << "fail 6\n";
+ assign(pwh, rect);
+ assign(p90wh, rect);
+ assign(p45wh, rect);
+ if(!equivalence(rect, view_as<rectangle_concept>(pwh)))
+ std::cout << "fail 7\n";
+ if(!equivalence(rect, view_as<rectangle_concept>(p45wh)))
+ std::cout << "fail 8\n";
+ if(!equivalence(rect, view_as<rectangle_concept>(p90wh)))
+ std::cout << "fail 9\n";
+ assign(p90wh, view_as<polygon_90_with_holes_concept>(pwh));
+ if(!equivalence(p90wh, rect))
+ std::cout << "fail 10\n";
+ assign(p45wh, view_as<polygon_45_with_holes_concept>(pwh));
+ if(!equivalence(p45wh, rect))
+ std::cout << "fail 11\n";
+ assign(p90wh, view_as<polygon_90_with_holes_concept>(p45wh));
+ if(!equivalence(p90wh, rect))
+ std::cout << "fail 12\n";
+ assign(p90, view_as<polygon_90_concept>(pwh));
+ if(!equivalence(p90, rect))
+ std::cout << "fail 13\n";
+ assign(p45, view_as<polygon_45_concept>(pwh));
+ if(!equivalence(p45, rect))
+ std::cout << "fail 14\n";
+ assign(p90, view_as<polygon_90_concept>(p45wh));
+ if(!equivalence(p90, rect))
+ std::cout << "fail 15\n";
+ assign(ps, rect);
+ assign(ps90, view_as<polygon_90_set_concept>(ps));
+ if(!equivalence(ps90, rect))
+ std::cout << "fail 16\n";
+ assign(ps45, view_as<polygon_45_set_concept>(ps));
+ if(!equivalence(ps45, rect))
+ std::cout << "fail 17\n";
+ assign(ps90, view_as<polygon_90_set_concept>(ps45));
+ if(!equivalence(ps90, rect))
+ std::cout << "fail 18\n";
+ }
+
+ inline bool testPolygon45SetRect() {
+ std::vector<point_data<int> > points;
+ points.push_back(point_data<int>(0,0));
+ points.push_back(point_data<int>(0,10));
+ points.push_back(point_data<int>(10,10));
+ points.push_back(point_data<int>(10,0));
+ polygon_45_data<int> poly;
+ poly.set(points.begin(), points.end());
+ polygon_45_set_data<int> ps;
+ ps.insert(poly);
+ std::vector<polygon_45_data<int> > polys;
+ ps.get_polygons(polys);
+ std::cout << polys.size() << std::endl;
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ return true;
+ }
+
+ inline bool testPolygon45Set() {
+ polygon_45_formation<int>::Polygon45Formation pf(true);
+ typedef boolean_op_45<int>::Vertex45 Vertex45;
+ std::vector<Vertex45> data;
+ // result == 0 8 -1 1
+ data.push_back(Vertex45(point_data<int>(0, 8), -1, 1));
+ // result == 0 8 1 -1
+ data.push_back(Vertex45(point_data<int>(0, 8), 1, -1));
+ // result == 4 0 1 1
+ data.push_back(Vertex45(point_data<int>(4, 0), 1, 1));
+ // result == 4 0 2 1
+ data.push_back(Vertex45(point_data<int>(4, 0), 2, 1));
+ // result == 4 4 2 -1
+ data.push_back(Vertex45(point_data<int>(4, 4), 2, -1));
+ // result == 4 4 -1 -1
+ data.push_back(Vertex45(point_data<int>(4, 4), -1, -1));
+ // result == 4 12 1 1
+ data.push_back(Vertex45(point_data<int>(4, 12), 1, 1));
+ // result == 4 12 2 1
+ data.push_back(Vertex45(point_data<int>(4, 12), 2, 1));
+ // result == 4 16 2 -1
+ data.push_back(Vertex45(point_data<int>(4, 16), 2, 1));
+ // result == 4 16 -1 -1
+ data.push_back(Vertex45(point_data<int>(4, 16), -1, -1));
+ // result == 6 2 1 -1
+ data.push_back(Vertex45(point_data<int>(6, 2), 1, -1));
+ // result == 6 14 -1 1
+ data.push_back(Vertex45(point_data<int>(6, 14), -1, 1));
+ // result == 6 2 -1 1
+ data.push_back(Vertex45(point_data<int>(6, 2), -1, 1));
+ // result == 6 14 1 -1
+ data.push_back(Vertex45(point_data<int>(6, 14), 1, -1));
+ // result == 8 0 -1 -1
+ data.push_back(Vertex45(point_data<int>(8, 0), -1, -1));
+ // result == 8 0 2 -1
+ data.push_back(Vertex45(point_data<int>(8, 0), 2, -1));
+ // result == 8 4 2 1
+ data.push_back(Vertex45(point_data<int>(8, 4), 2, 1));
+ // result == 8 4 1 1
+ data.push_back(Vertex45(point_data<int>(8, 4), 1, 1));
+ // result == 8 12 -1 -1
+ data.push_back(Vertex45(point_data<int>(8, 12), -1, -1));
+ // result == 8 12 2 -1
+ data.push_back(Vertex45(point_data<int>(8, 12), 2, -1));
+ // result == 8 16 2 1
+ data.push_back(Vertex45(point_data<int>(8, 16), 2, 1));
+ // result == 8 16 1 1
+ data.push_back(Vertex45(point_data<int>(8, 16), 1, 1));
+ // result == 12 8 1 -1
+ data.push_back(Vertex45(point_data<int>(12, 8), 1, -1));
+ // result == 12 8 -1 1
+ data.push_back(Vertex45(point_data<int>(12, 8), -1, 1));
+
+ data.push_back(Vertex45(point_data<int>(6, 4), 1, -1));
+ data.push_back(Vertex45(point_data<int>(6, 4), 2, -1));
+ data.push_back(Vertex45(point_data<int>(6, 12), -1, 1));
+ data.push_back(Vertex45(point_data<int>(6, 12), 2, 1));
+ data.push_back(Vertex45(point_data<int>(10, 8), -1, -1));
+ data.push_back(Vertex45(point_data<int>(10, 8), 1, 1));
+
+ std::sort(data.begin(), data.end());
+ std::vector<polygon_45_data<int> > polys;
+ pf.scan(polys, data.begin(), data.end());
+ polygon_45_set_data<int> ps;
+ std::cout << "inserting1\n";
+ //std::vector<point_data<int> > points;
+ //points.push_back(point_data<int>(0,0));
+ //points.push_back(point_data<int>(0,10));
+ //points.push_back(point_data<int>(10,10));
+ //points.push_back(point_data<int>(10,0));
+ //Polygon45 poly;
+ //poly.set(points.begin(), points.end());
+ //ps.insert(poly);
+ ps.insert(polys[0]);
+
+ polygon_45_set_data<int> ps2;
+ std::cout << "inserting2\n";
+ ps2.insert(polys[0]);
+ std::cout << "applying boolean\n";
+ ps |= ps2;
+ std::vector<polygon_45_data<int> > polys2;
+ std::cout << "getting result\n";
+ ps.get_polygons(polys2);
+ std::cout << ps2 << std::endl;
+ std::cout << ps << std::endl;
+ std::cout << polys[0] << std::endl;
+ std::cout << polys2[0] << std::endl;
+ if(polys != polys2) std::cout << "test Polygon45Set failed\n";
+ return polys == polys2;
+ }
+
+ inline bool testPolygon45SetPerterbation() {
+ polygon_45_formation<int>::Polygon45Formation pf(true);
+ typedef boolean_op_45<int>::Vertex45 Vertex45;
+ std::vector<Vertex45> data;
+ // result == 0 8 -1 1
+ data.push_back(Vertex45(point_data<int>(0, 80), -1, 1));
+ // result == 0 8 1 -1
+ data.push_back(Vertex45(point_data<int>(0, 80), 1, -1));
+ // result == 4 0 1 1
+ data.push_back(Vertex45(point_data<int>(40, 0), 1, 1));
+ // result == 4 0 2 1
+ data.push_back(Vertex45(point_data<int>(40, 0), 2, 1));
+ // result == 4 4 2 -1
+ data.push_back(Vertex45(point_data<int>(40, 40), 2, -1));
+ // result == 4 4 -1 -1
+ data.push_back(Vertex45(point_data<int>(40, 40), -1, -1));
+ // result == 4 12 1 1
+ data.push_back(Vertex45(point_data<int>(40, 120), 1, 1));
+ // result == 4 12 2 1
+ data.push_back(Vertex45(point_data<int>(40, 120), 2, 1));
+ // result == 4 16 2 -1
+ data.push_back(Vertex45(point_data<int>(40, 160), 2, 1));
+ // result == 4 16 -1 -1
+ data.push_back(Vertex45(point_data<int>(40, 160), -1, -1));
+ // result == 6 2 1 -1
+ data.push_back(Vertex45(point_data<int>(60, 20), 1, -1));
+ // result == 6 14 -1 1
+ data.push_back(Vertex45(point_data<int>(60, 140), -1, 1));
+ // result == 6 2 -1 1
+ data.push_back(Vertex45(point_data<int>(60, 20), -1, 1));
+ // result == 6 14 1 -1
+ data.push_back(Vertex45(point_data<int>(60, 140), 1, -1));
+ // result == 8 0 -1 -1
+ data.push_back(Vertex45(point_data<int>(80, 0), -1, -1));
+ // result == 8 0 2 -1
+ data.push_back(Vertex45(point_data<int>(80, 0), 2, -1));
+ // result == 8 4 2 1
+ data.push_back(Vertex45(point_data<int>(80, 40), 2, 1));
+ // result == 8 4 1 1
+ data.push_back(Vertex45(point_data<int>(80, 40), 1, 1));
+ // result == 8 12 -1 -1
+ data.push_back(Vertex45(point_data<int>(80, 120), -1, -1));
+ // result == 8 12 2 -1
+ data.push_back(Vertex45(point_data<int>(80, 120), 2, -1));
+ // result == 8 16 2 1
+ data.push_back(Vertex45(point_data<int>(80, 160), 2, 1));
+ // result == 8 16 1 1
+ data.push_back(Vertex45(point_data<int>(80, 160), 1, 1));
+ // result == 12 8 1 -1
+ data.push_back(Vertex45(point_data<int>(120, 80), 1, -1));
+ // result == 12 8 -1 1
+ data.push_back(Vertex45(point_data<int>(120, 80), -1, 1));
+
+ data.push_back(Vertex45(point_data<int>(60, 40), 1, -1));
+ data.push_back(Vertex45(point_data<int>(60, 40), 2, -1));
+ data.push_back(Vertex45(point_data<int>(60, 120), -1, 1));
+ data.push_back(Vertex45(point_data<int>(60, 120), 2, 1));
+ data.push_back(Vertex45(point_data<int>(100, 80), -1, -1));
+ data.push_back(Vertex45(point_data<int>(100, 80), 1, 1));
+
+ std::sort(data.begin(), data.end());
+ std::vector<polygon_45_data<int> > polys;
+ pf.scan(polys, data.begin(), data.end());
+ polygon_45_set_data<int> ps;
+ std::cout << "inserting1\n";
+ //std::vector<point_data<int> > points;
+ //points.push_back(point_data<int>(0,0));
+ //points.push_back(point_data<int>(0,10));
+ //points.push_back(point_data<int>(10,10));
+ //points.push_back(point_data<int>(10,0));
+ //Polygon45 poly;
+ //poly.set(points.begin(), points.end());
+ //ps.insert(poly);
+ polygon_45_set_data<int> preps(polys[0]);
+
+ ps.insert(polys[0]);
+ convolve(polys[0], point_data<int>(0, 1) );
+
+ polygon_45_set_data<int> ps2;
+ std::cout << "inserting2\n";
+ ps2.insert(polys[0]);
+ std::cout << "applying boolean\n";
+ ps |= ps2;
+ std::vector<polygon_45_data<int> > polys2;
+ std::cout << "getting result\n";
+ ps.get_polygons(polys2);
+ std::cout << preps << std::endl;
+ std::cout << ps2 << std::endl;
+ std::cout << ps << std::endl;
+ std::cout << polys[0] << std::endl;
+ std::cout << polys2[0] << std::endl;
+ if(polys != polys2) std::cout << "test Polygon45Set failed\n";
+ return polys == polys2;
+ //return true;
+ }
+
+ inline int testPolygon45SetDORA() {
+ std::cout << "testPolygon45SetDORA" << std::endl;
+ std::vector<point_data<int> > pts;
+ pts.push_back(point_data<int>(0, 0));
+ pts.push_back(point_data<int>(10, 0));
+ pts.push_back(point_data<int>(10, 10));
+ pts.push_back(point_data<int>(0, 10));
+ polygon_45_data<int> apoly;
+ apoly.set(pts.begin(), pts.end());
+ polygon_45_set_data<int> ps(apoly);
+ polygon_45_set_data<int> ps2(ps);
+ ps2 = apoly;
+ std::vector<polygon_45_data<int> > apolys;
+ apolys.push_back(apoly);
+ ps2.insert(apolys.begin(), apolys.end());
+ apolys.clear();
+ ps2.get(apolys);
+ std::cout << apolys.size() << std::endl;
+ std::cout << (ps == ps2) << std::endl;
+ std::cout << !(ps != ps2) << std::endl;
+ ps2.clear();
+ std::cout << (ps2.value().empty()) << std::endl;
+ ps2.set(apolys.begin(), apolys.end());
+ ps2.set(ps.value());
+ ps.clean();
+ ps2.set_clean(ps.value());
+ ps2.insert(ps.value().begin(), ps.value().end());
+ ps2.clear();
+ for(polygon_45_set_data<int>::iterator_type itr = ps.begin();
+ itr != ps.end(); ++itr) {
+ ps2.insert(*itr);
+ }
+ std::vector<polygon_45_with_holes_data<int> > apolywhs;
+ ps2.get_polygons_with_holes(apolywhs);
+ std::cout << apolywhs.size() << std::endl;
+ ps2 += 1;
+ apolywhs.clear();
+ ps2.get_polygons_with_holes(apolywhs);
+ if(apolywhs.size()) std::cout << apolywhs[0] << std::endl;
+ ps2 -= 1;
+ apolywhs.clear();
+ ps2.get_polygons_with_holes(apolywhs);
+ if(apolywhs.size()) std::cout << apolywhs[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ rectangle_data<int> rect;
+ extents(rect, apolywhs[0]);
+ ps2.clear();
+ ps2.insert(rect);
+ ps2.extents(rect);
+ ps2.clear();
+ ps2.insert(rect);
+ ps2.clear();
+ ps2.insert(apolywhs[0]);
+ apolywhs.clear();
+ ps2.get_trapezoids(apolywhs);
+ if(apolywhs.size()) std::cout << apolywhs[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ ps2 *= ps;
+ std::cout << (ps2 == ps) << std::endl;
+ ps2 ^= ps;
+ std::cout << ps2.empty() << std::endl;
+ axis_transformation atr(axis_transformation::WS);
+ ps2 = ps;
+ ps.transform(atr);
+ transformation<int> tr(atr);
+ tr.invert();
+ ps.transform(tr);
+ ps.scale_up(2);
+ ps.scale_down(2);
+ std::cout << (ps2 == ps) << std::endl;
+ pts.clear();
+ pts.push_back(point_data<int>(0,0));
+ pts.push_back(point_data<int>(10,10));
+ pts.push_back(point_data<int>(10,11));
+ pts.push_back(point_data<int>(0,21));
+ apoly.set(pts.begin(), pts.end());
+ ps2.clear();
+ ps2.insert(apoly);
+ ps2 -= 1;
+ apolywhs.clear();
+ ps2.get_polygons_with_holes(apolywhs);
+ if(apolywhs.size()) std::cout << apolywhs[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ pts.clear();
+ pts.push_back(point_data<int>(0, 0));
+ pts.push_back(point_data<int>(10, 10));
+ pts.push_back(point_data<int>(0, 20));
+ apoly.set(pts.begin(), pts.end());
+ ps2.clear();
+ ps2.insert(apoly);
+ pts.clear();
+ pts.push_back(point_data<int>(0, 5));
+ pts.push_back(point_data<int>(10, 15));
+ pts.push_back(point_data<int>(0, 25));
+ apoly.set(pts.begin(), pts.end());
+ ps2.insert(apoly);
+ apolywhs.clear();
+ ps2.get_polygons_with_holes(apolywhs);
+ if(apolywhs.size()) std::cout << apolywhs[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ return 0;
+
+ }
+}
+}
+using namespace gtl;
+
+bool testInterval() {
+ interval_data<int> interval(0, 10), interval2(10, 20);
+ if(!abuts(interval, interval2)) return false;
+ if(!boundaries_intersect(interval, interval2)) return false;
+ if(boundaries_intersect(interval, interval2, false)) return false;
+ if(intersect(interval, interval2, false)) return false;
+ if(!intersect(interval, interval2)) return false;
+ if(euclidean_distance(interval, interval2) != 0) return false;
+ encompass(interval, interval2);
+ set(interval, LOW, 0);
+ high(interval, 10);
+ scale(interval, 2.0f);
+ scale(interval, 0.5f);
+ if(low(interval) != 0) return false;
+ if(high(interval) != 10) return false;
+ move(interval, 10);
+ if(!equivalence(interval, interval2)) return false;
+ flip(interval, 10);
+ bloat(interval, -2);
+ shrink(interval, -2);
+ flip(interval, 10);
+ if(!equivalence(interval, interval2)) return false;
+ interval_data<int> half = get_half(interval, LOW);
+ if(high(half) != 15) return false;
+ convolve(interval, interval2);
+ if(high(interval) != 40) return false;
+ deconvolve(interval, interval2);
+ if(!equivalence(interval, interval2)) return false;
+ reflected_convolve(interval, interval2);
+ if(low(interval) != -10) return false;
+ reflected_deconvolve(interval, interval2);
+ if(!equivalence(interval, interval2)) return false;
+ euclidean_distance(interval, 0);
+ move(interval, 20);
+ if(euclidean_distance(interval, interval2) != 10) return false;
+ interval = interval2;
+ move(interval, -5);
+ if(!intersects(interval, interval2)) return false;
+ move(interval, 15);
+ if(!abuts(interval, interval2)) return false;
+ if(abuts(interval, interval2, HIGH)) return false;
+ move(interval, 10);
+ generalized_intersect(interval, interval2);
+ move(interval, -10);
+ if(!equivalence(interval, interval2)) return false;
+ if(get(interval, LOW) != low(interval)) return false;
+ if(get(interval, HIGH) != high(interval)) return false;
+ if(center(interval2) != 15) return false;
+ if(delta(interval2) != 10) return false;
+ assign(interval, interval2);
+ low(interval, 0);
+ if(low(interval) != 0) return false;
+ high(interval, 10);
+ join_with(interval, interval2);
+ if(high(interval) != high(interval2)) return false;
+ return true;
+}
+
+bool testRectangle() {
+ rectangle_data<int> rect, rect2;
+#ifdef BOOST_POLYGON_MSVC
+ horizontal(rect, interval_data<int>(0, 10));
+ vertical(rect, interval_data<int>(20, 30));
+#else
+ horizontal(rect, interval_data<polygon_long_long_type>(0, 10));
+ vertical(rect, interval_data<polygon_long_long_type>(20, 30));
+#endif
+ xl(rect2, 0);
+ xh(rect2, 10);
+ yl(rect2, 20);
+ yh(rect2, 30);
+ if(euclidean_distance(rect, rect2) != 0) return false;
+ if(euclidean_distance(rect2, rect) != 0) return false;
+#ifdef BOOST_POLYGON_MSVC
+ set(rect, HORIZONTAL, interval_data<int>(0, 10));
+ if(!equivalence(horizontal(rect), interval_data<int>(0, 10))) return false;
+ if(!equivalence(vertical(rect2), interval_data<int>(20, 30))) return false;
+#else
+ set(rect, HORIZONTAL, interval_data<polygon_long_long_type>(0, 10));
+ if(!equivalence(horizontal(rect), interval_data<polygon_long_long_type>(0, 10))) return false;
+ if(!equivalence(vertical(rect2), interval_data<polygon_long_long_type>(20, 30))) return false;
+#endif
+ if(xl(rect) != 0) return false;
+ if(xh(rect) != 10) return false;
+ if(yl(rect) != 20) return false;
+ if(yh(rect) != 30) return false;
+ move(rect, HORIZONTAL, 10);
+ if(xl(rect) != 10) return false;
+#ifdef BOOST_POLYGON_MSVC
+ set_points(rect, point_data<int>(0, 20), point_data<int>(10, 30));
+#else
+ set_points(rect, point_data<int>(0, 20), point_data<polygon_long_long_type>(10, 30));
+#endif
+ if(xl(rect) != 0) return false;
+ convolve(rect, rect2);
+ if(xh(rect) != 20) return false;
+ deconvolve(rect, rect2);
+ if(xh(rect) != 10) return false;
+ reflected_convolve(rect, rect2);
+ reflected_deconvolve(rect, rect2);
+ if(!equivalence(rect, rect2)) return false;
+#ifdef BOOST_POLYGON_MSVC
+ convolve(rect, point_data<int>(100, 200));
+#else
+ convolve(rect, point_data<polygon_long_long_type>(100, 200));
+#endif
+ if(xh(rect) != 110) return false;
+ deconvolve(rect, point_data<int>(100, 200));
+ if(!equivalence(rect, rect2)) return false;
+ xh(rect, 100);
+ if(delta(rect, HORIZONTAL) != 100) return false;
+ if(area(rect) != 1000) return false;
+ if(half_perimeter(rect) != 110) return false;
+ if(perimeter(rect) != 220) return false;
+ if(guess_orientation(rect) != HORIZONTAL) return false;
+ return true;
+}
+
+
+bool testPolygon() {
+ int rect[4] = {0, 10, 20, 30};
+ iterator_compact_to_points<int*, point_data<int> > itr(rect, rect+4);
+ iterator_compact_to_points<int*, point_data<int> > itr_end(rect, rect+4);
+ std::vector<point_data<int> > points;
+ points.insert(points.end(), itr, itr_end);
+ polygon_90_data<int> p90;
+ assign(p90, rectangle_data<int>(interval_data<int>(0, 10), interval_data<int>(20, 30)));
+ if(winding(p90) != COUNTERCLOCKWISE) return false;
+ polygon_45_data<int> p45;
+ assign(p45, rectangle_data<int>(interval_data<int>(0, 10), interval_data<int>(20, 30)));
+ if(winding(p45) != COUNTERCLOCKWISE) return false;
+ polygon_data<int> p;
+ assign(p, rectangle_data<int>(interval_data<int>(0, 10), interval_data<int>(20, 30)));
+ if(winding(p) != COUNTERCLOCKWISE) return false;
+ set_compact(p90, rect, rect+4);
+ if(winding(p90) != COUNTERCLOCKWISE) return false;
+ points.clear();
+ points.push_back(point_data<int>(0, 0));
+ points.push_back(point_data<int>(10, 10));
+ points.push_back(point_data<int>(0, 20));
+ points.push_back(point_data<int>(-10, 10));
+ set_points(p45, points.begin(), points.end());
+ if(winding(p45) != COUNTERCLOCKWISE) return false;
+ std::swap(points[1], points[3]);
+ set_points(p, points.begin(), points.end());
+ if(winding(p) == COUNTERCLOCKWISE) return false;
+ point_data<int> cp;
+ center(cp, p);
+ if(cp != point_data<int>(0, 10)) return false;
+ move(p, HORIZONTAL, 3);
+ rectangle_data<int> bounding_box;
+ extents(bounding_box, p);
+ if(bounding_box != rectangle_data<int>(interval_data<int>(-7, 13), interval_data<int>(0, 20))) return false;
+ if(area(p90) != 400) return false;
+ if(area(p45) != 200) return false;
+ if(perimeter(p90) != 80) return false;
+ return true;
+}
+
+bool testPolygonAssign() {
+ polygon_data<int> p;
+ polygon_data<int> p1;
+ polygon_45_data<int> p_45;
+ polygon_45_data<int> p_451;
+ polygon_90_data<int> p_90;
+ polygon_90_data<int> p_901;
+ polygon_with_holes_data<int> p_wh;
+ polygon_with_holes_data<int> p_wh1;
+ polygon_45_with_holes_data<int> p_45_wh;
+ polygon_45_with_holes_data<int> p_45_wh1;
+ polygon_90_with_holes_data<int> p_90_wh;
+ polygon_90_with_holes_data<int> p_90_wh1;
+ assign(p, p1);
+ assign(p, p_45);
+ assign(p, p_90);
+ //assign(p, p_wh);
+ //assign(p, p_45_wh);
+ //assign(p, p_90_wh);
+ //assign(p_45, p);
+ assign(p_451, p_45);
+ assign(p_45, p_90);
+ //assign(p_45, p_wh);
+ //assign(p_45, p_45_wh);
+ //assign(p_45, p_90_wh);
+ //assign(p_90, p);
+ //assign(p_90, p_45);
+ assign(p_901, p_90);
+ //assign(p_90, p_wh);
+ //assign(p_90, p_45_wh);
+ //assign(p_90, p_90_wh);
+ assign(p_wh, p);
+ assign(p_wh, p_45);
+ assign(p_wh, p_90);
+ assign(p_wh1, p_wh);
+ assign(p_wh, p_45_wh);
+ assign(p_wh, p_90_wh);
+ //assign(p_45_wh, p);
+ assign(p_45_wh, p_45);
+ assign(p_45_wh, p_90);
+ //assign(p_45_wh, p_wh);
+ assign(p_45_wh1, p_45_wh);
+ //assign(p_90_wh, p);
+ //assign(p_90_wh, p_45);
+ assign(p_90_wh, p_90);
+ assign(p_90_wh1, p_90_wh);
+ return true;
+}
+
+int testPropertyMerge() {
+ rectangle_data<int> rect1 = construct<rectangle_data<int> >(0, 1, 10, 11);
+ rectangle_data<int> rect2 = construct<rectangle_data<int> >(5, 6, 17, 18);
+ property_merge_90<int, int> pm;
+ pm.insert(rect1, 0);
+ pm.insert(rect2, 1);
+ std::map<std::set<int>, polygon_90_set_data<int> > result;
+ pm.merge(result);
+ std::vector<rectangle_data<int> > rects;
+ std::set<int> key;
+ key.insert(0);
+ result[key].get(rects);
+ std::cout << rects.size() << std::endl;
+ std::vector<polygon_data<int> > polys;
+ result[key].get(polys);
+ std::cout << polys.size() << std::endl;
+ std::vector<polygon_90_with_holes_data<int> > polywhs;
+ result[key].get(polywhs);
+ std::cout << polys.size() << std::endl;
+ return result.size();
+}
+
+bool testPolygonWithHoles() {
+ int rect[4] = {0, 10, 20, 30};
+ iterator_compact_to_points<int*, point_data<int> > itr(rect, rect+4);
+ iterator_compact_to_points<int*, point_data<int> > itr_end(rect, rect+4);
+ std::vector<point_data<int> > points;
+ points.insert(points.end(), itr, itr_end);
+ polygon_45_with_holes_data<int> p45wh;
+ assign(p45wh, rectangle_data<int>(interval_data<int>(0, 10), interval_data<int>(20, 30)));
+ if(winding(p45wh) != COUNTERCLOCKWISE) return false;
+ polygon_45_with_holes_data<int> p45;
+ assign(p45, rectangle_data<int>(interval_data<int>(0, 10), interval_data<int>(20, 30)));
+ if(winding(p45) != COUNTERCLOCKWISE) return false;
+ polygon_45_with_holes_data<int> p;
+ assign(p, rectangle_data<int>(interval_data<int>(0, 10), interval_data<int>(20, 30)));
+ if(winding(p) != COUNTERCLOCKWISE) return false;
+ set_compact(p45wh, rect, rect+4);
+ if(winding(p45wh) != COUNTERCLOCKWISE) return false;
+ points.clear();
+ points.push_back(point_data<int>(0, 0));
+ points.push_back(point_data<int>(10, 10));
+ points.push_back(point_data<int>(0, 20));
+ points.push_back(point_data<int>(-10, 10));
+ set_points(p45, points.begin(), points.end());
+ if(winding(p45) != COUNTERCLOCKWISE) return false;
+ std::swap(points[1], points[3]);
+ set_points(p, points.begin(), points.end());
+ if(winding(p) == COUNTERCLOCKWISE) return false;
+ point_data<int> cp;
+ center(cp, p);
+ if(cp != point_data<int>(0, 10)) return false;
+ move(p, HORIZONTAL, 3);
+ rectangle_data<int> bounding_box;
+ extents(bounding_box, p);
+ if(bounding_box != rectangle_data<int>(interval_data<int>(-7, 13), interval_data<int>(0, 20))) return false;
+ if(area(p45wh) != 400) return false;
+ if(area(p45) != 200) return false;
+ if(perimeter(p45wh) != 80) return false;
+ return true;
+}
+
+using namespace gtl;
+
+typedef int Unit;
+typedef point_data<int> Point;
+typedef interval_data<int> Interval;
+typedef rectangle_data<int> Rectangle;
+typedef polygon_90_data<int> Polygon;
+typedef polygon_90_with_holes_data<int> PolygonWithHoles;
+typedef polygon_45_data<int> Polygon45;
+typedef polygon_45_with_holes_data<int> Polygon45WithHoles;
+typedef polygon_90_set_data<int> PolygonSet;
+typedef polygon_45_set_data<int> Polygon45Set;
+typedef axis_transformation AxisTransform;
+typedef transformation<int> Transform;
+
+bool getRandomBool() {
+ return rand()%2 != 0;
+}
+int getRandomInt() {
+ return rand()%6-2;
+}
+Point getRandomPoint() {
+ int x = rand()%8;
+ int y = rand()%8;
+ return Point(x, y);
+}
+Polygon45 getRandomTriangle() {
+ Point pts[3];
+ pts[0] = getRandomPoint();
+ pts[1] = pts[2] = pts[0];
+ int disp = getRandomInt();
+ bool dir = getRandomBool();
+ x(pts[2], x(pts[2]) + disp);
+ x(pts[1], x(pts[1]) + disp);
+ if(dir)
+ y(pts[1], y(pts[1]) + disp);
+ else
+ y(pts[1], y(pts[1]) - disp);
+ return Polygon45(pts, pts+3);
+}
+
+bool nonInteger45StessTest() {
+ for(unsigned int tests = 0; tests < 10; ++tests) {
+ Polygon45Set ps1, ps2;
+ std::vector<Polygon45> p45s;
+ for(unsigned int i = 0; i < 10; ++i) {
+ Polygon45 p45 = getRandomTriangle();
+ p45s.push_back(p45);
+ ps1.insert(p45);
+ scale_up(p45, 2);
+ ps2.insert(p45);
+ }
+ std::vector<Polygon45> polys;
+ ps1.get(polys);
+ Polygon45Set ps3;
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ scale_up(polys[i], 2);
+ ps3.insert(polys[i]);
+ }
+ Polygon45Set ps4 = ps3 ^ ps2;
+ std::vector<Polygon45> polys_error;
+ ps4.get(polys_error);
+ for(unsigned int i = 0; i < polys_error.size(); ++i) {
+ //if(polys_error[i].size() > 3) return false;
+ if(area(polys_error[i]) != 1) {
+ if(area(polys_error[i]) == 2) {
+ //if two area 1 errors merge it will have area 2
+ continue;
+ }
+ std::cout << "test failed\n";
+ for(unsigned int j =0; j < p45s.size(); ++j) {
+ std::cout << p45s[j] << std::endl;
+ }
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+bool validate_polygon_set_op(Polygon45Set& ps45_o,
+ const Polygon45Set& ps45_1,
+ const Polygon45Set& ps45_2,
+ int op_type) {
+ Polygon45Set s_ps_45_o(ps45_o);
+ Polygon45Set s_ps_45_1(ps45_1);
+ Polygon45Set s_ps_45_2(ps45_2);
+ s_ps_45_o.scale_up(2);
+ s_ps_45_1.scale_up(2);
+ s_ps_45_2.scale_up(2);
+ Polygon45Set s_ps_45_validate;
+ if(op_type == 0) {
+ s_ps_45_validate = s_ps_45_1 + s_ps_45_2;
+ s_ps_45_validate += Rectangle(4, 4, 6, 6);
+ } else if(op_type == 1) {
+ s_ps_45_validate = s_ps_45_1 * s_ps_45_2;
+ s_ps_45_validate -= Rectangle(4, 4, 6, 6);
+ } else if(op_type == 2) {
+ s_ps_45_validate = s_ps_45_1 ^ s_ps_45_2;
+ s_ps_45_validate -= Rectangle(4, 4, 6, 6);
+ } else {
+ s_ps_45_validate = s_ps_45_1 - s_ps_45_2;
+ s_ps_45_validate -= Rectangle(4, 4, 6, 6);
+ }
+ if(s_ps_45_validate != s_ps_45_o) {
+ std::cout << "TEST FAILED\n";
+ std::vector<Polygon45> polys;
+ s_ps_45_o.get(polys);
+ std::cout << "Result:\n";
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ polys.clear();
+ s_ps_45_validate.get(polys);
+ std::cout << "Expected Result:\n";
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ //redo the operation, set breakpoints here
+ switch (op_type) {
+ case 0:
+ ps45_o = ps45_1 + ps45_2;
+ ps45_o.get(polys);//needed to force clean
+ break;
+ case 1:
+ ps45_o = ps45_1 * ps45_2;
+ break;
+ case 2:
+ ps45_o = ps45_1 ^ ps45_2;
+ break;
+ default:
+ ps45_o = ps45_1 - ps45_2;
+ };
+ //redo the check, set breakpoints here
+ if(op_type == 0) {
+ s_ps_45_validate = s_ps_45_1 + s_ps_45_2;
+ s_ps_45_validate += Rectangle(4, 4, 6, 6);
+ s_ps_45_validate.get(polys);
+ } else if(op_type == 1) {
+ s_ps_45_validate = s_ps_45_1 * s_ps_45_2;
+ s_ps_45_validate -= Rectangle(4, 4, 6, 6);
+ } else if(op_type == 2) {
+ s_ps_45_validate = s_ps_45_1 ^ s_ps_45_2;
+ s_ps_45_validate -= Rectangle(4, 4, 6, 6);
+ } else {
+ s_ps_45_validate = s_ps_45_1 - s_ps_45_2;
+ s_ps_45_validate -= Rectangle(4, 4, 6, 6);
+ }
+ return false;
+ }
+ return true;
+}
+
+bool test_two_polygon_sets(const Polygon45Set& ps45_1,
+ const Polygon45Set& ps45_2) {
+ std::cout << "test two polygon sets \n";
+ std::vector<Polygon45> polys;
+ ps45_1.get(polys);
+ std::cout << "LVALUE:\n";
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ polys.clear();
+ ps45_2.get(polys);
+ std::cout << "RVALUE:\n";
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ Polygon45Set ps45_o;
+ std::cout << "OR\n";
+ ps45_o = ps45_1 + ps45_2;
+ polys.clear();
+ ps45_o.get(polys);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ if(!validate_polygon_set_op(ps45_o, ps45_1, ps45_2, 0)) return false;
+ std::cout << "AND\n";
+ ps45_o = ps45_1 * ps45_2;
+ polys.clear();
+ ps45_o.get(polys);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ if(!validate_polygon_set_op(ps45_o, ps45_1, ps45_2, 1)) return false;
+ std::cout << "XOR\n";
+ ps45_o = ps45_1 ^ ps45_2;
+ polys.clear();
+ ps45_o.get(polys);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ if(!validate_polygon_set_op(ps45_o, ps45_1, ps45_2, 2)) return false;
+ std::cout << "SUBTRACT\n";
+ ps45_o = ps45_1 - ps45_2;
+ polys.clear();
+ ps45_o.get(polys);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ if(!validate_polygon_set_op(ps45_o, ps45_1, ps45_2, 3)) return false;
+ return true;
+}
+
+bool test_two_polygons(const Polygon45& p45_1,
+ const Polygon45& p45_2) {
+ Polygon45Set ps45_1, ps45_2;
+ ps45_1.insert(p45_1);
+ ps45_2.insert(p45_2);
+ ps45_1.insert(rectangle_data<int>(10, -100, 20, 100));
+ ps45_2.insert(rectangle_data<int>(0, 10, 100, 20));
+ if(!test_two_polygon_sets(ps45_1, ps45_2)) return false;
+ Polygon45Set ps45_1_c = ps45_1 - Rectangle(0, 0, 2, 5);
+ Polygon45Set ps45_2_c = ps45_2 - Rectangle(0, 0, 2, 5);
+ if(!test_two_polygon_sets(ps45_1_c, ps45_2_c)) return false;
+ if(!test_two_polygon_sets(ps45_1_c, ps45_2)) return false;
+ if(!test_two_polygon_sets(ps45_1, ps45_2_c)) return false;
+ return true;
+}
+
+bool test_45_touch() {
+ using namespace gtl;
+ connectivity_extraction_45<int> ce;
+ rectangle_data<int> rect1(0, 0, 10, 10);
+ rectangle_data<int> rect2(5, 5, 15, 15);
+ rectangle_data<int> rect3(5, 20, 15, 25);
+ ce.insert(rect1);
+ ce.insert(rect2);
+ ce.insert(rect3);
+ std::vector<std::set<int> > graph(3);
+ ce.extract(graph);
+ if(graph[0].size() == 1 && graph[1].size() == 1 && graph[2].size() == 0) {
+ std::set<int>::iterator itr = graph[0].begin();
+ std::cout << *itr << std::endl;
+ std::set<int>::iterator itr1 = graph[1].begin();
+ std::cout << *itr1 << std::endl;
+ return true;
+ }
+ std::cout << "test failed\n";
+ return false;
+}
+
+bool test_45_touch_ur() {
+ using namespace gtl;
+ connectivity_extraction_45<int> ce;
+ rectangle_data<int> rect1(0, 0, 5, 5);
+ rectangle_data<int> rect2(5, 5, 10, 10);
+ ce.insert(rect1);
+ ce.insert(rect2);
+ std::vector<std::set<int> > graph(2);
+ ce.extract(graph);
+ if(graph[0].size() == 1 && graph[1].size() == 1) {
+ std::set<int>::iterator itr = graph[0].begin();
+ std::cout << *itr << std::endl;
+ std::set<int>::iterator itr1 = graph[1].begin();
+ std::cout << *itr1 << std::endl;
+ return true;
+ }
+ std::cout << "test failed\n";
+ return false;
+}
+
+bool test_45_touch_r() {
+ using namespace gtl;
+ connectivity_extraction_45<int> ce;
+ rectangle_data<int> rect1(0, 0, 5, 5);
+ rectangle_data<int> rect2(5, 0, 10, 5);
+ ce.insert(rect1);
+ ce.insert(rect2);
+ std::vector<std::set<int> > graph(2);
+ ce.extract(graph);
+ if(graph[0].size() == 1 && graph[1].size() == 1) {
+ std::set<int>::iterator itr = graph[0].begin();
+ std::cout << *itr << std::endl;
+ std::set<int>::iterator itr1 = graph[1].begin();
+ std::cout << *itr1 << std::endl;
+ return true;
+ }
+ std::cout << "test failed\n";
+ return false;
+}
+
+bool test_45_touch_boundaries() {
+ using namespace gtl;
+ connectivity_extraction_45<int> ce;
+ rectangle_data<int> rect1(0, 0, 10, 10);
+ rectangle_data<int> rect2(10, 0, 20, 10);
+ rectangle_data<int> rect3(20, 0, 30, 10);
+ rectangle_data<int> rect4(0, 10, 10, 20);
+ rectangle_data<int> rect5(10, 10, 20, 20);
+ rectangle_data<int> rect6(20, 10, 30, 20);
+ rectangle_data<int> rect7(0, 20, 10, 30);
+ rectangle_data<int> rect8(10, 20, 20, 30);
+ rectangle_data<int> rect9(20, 20, 30, 30);
+ ce.insert(rect1);
+ ce.insert(rect2);
+ ce.insert(rect3);
+ ce.insert(rect4);
+ ce.insert(rect5);
+ ce.insert(rect6);
+ ce.insert(rect7);
+ ce.insert(rect8);
+ ce.insert(rect9);
+ std::vector<std::set<int> > graph(9);
+ ce.extract(graph);
+ for(unsigned int i = 0; i < 9; ++i) {
+ std::cout << i << ": ";
+ for(std::set<int>::iterator itr = graph[i].begin(); itr != graph[i].end(); ++itr) {
+ std::cout << *itr << " ";
+ } std::cout << std::endl;
+ }
+ if(graph[0].size() == 3 && graph[1].size() == 5 && graph[2].size() == 3 &&
+ graph[3].size() == 5 && graph[4].size() == 8 && graph[5].size() == 5 &&
+ graph[6].size() == 3 && graph[7].size() == 5 && graph[8].size() == 3) {
+ return true;
+ }
+ std::cout << "test failed\n";
+ return false;
+}
+
+bool test_45_concept_interact() {
+ using namespace gtl;
+ std::vector<polygon_45_data<int> > polys;
+ polys += rectangle_data<int>(10, 10, 20, 20);
+ polys += rectangle_data<int>(15, 15, 25, 25);
+ polys += rectangle_data<int>(5, 25, 10, 35);
+ interact(polys, rectangle_data<int>(0, 0, 13, 13));
+ if(polys.size() != 1) return false;
+ return true;
+}
+
+bool test_aa_touch() {
+ using namespace gtl;
+ connectivity_extraction<int> ce;
+ rectangle_data<int> rect1(0, 0, 10, 10);
+ rectangle_data<int> rect2(5, 5, 15, 15);
+ rectangle_data<int> rect3(5, 20, 15, 25);
+ ce.insert(rect1);
+ ce.insert(rect2);
+ ce.insert(rect3);
+ std::vector<std::set<int> > graph(3);
+ ce.extract(graph);
+ if(graph[0].size() == 1 && graph[1].size() == 1 && graph[2].size() == 0) {
+ std::set<int>::iterator itr = graph[0].begin();
+ std::cout << *itr << std::endl;
+ std::set<int>::iterator itr1 = graph[1].begin();
+ std::cout << *itr1 << std::endl;
+ return true;
+ }
+ std::cout << "test failed\n";
+ return false;
+}
+
+bool test_aa_touch_ur() {
+ using namespace gtl;
+ connectivity_extraction<int> ce;
+ rectangle_data<int> rect1(0, 0, 5, 5);
+ rectangle_data<int> rect2(5, 5, 10, 10);
+ ce.insert(rect1);
+ ce.insert(rect2);
+ std::vector<std::set<int> > graph(2);
+ ce.extract(graph);
+ if(graph[0].size() == 1 && graph[1].size() == 1) {
+ std::set<int>::iterator itr = graph[0].begin();
+ std::cout << *itr << std::endl;
+ std::set<int>::iterator itr1 = graph[1].begin();
+ std::cout << *itr1 << std::endl;
+ return true;
+ }
+ std::cout << "test failed\n";
+ return false;
+}
+
+bool test_aa_touch_ur2() {
+ using namespace gtl;
+ connectivity_extraction<int> ce;
+ rectangle_data<int> rect2(5, 5, 10, 10);
+ point_data<int> pts[3] = {
+ point_data<int>(0, 0),
+ point_data<int>(5, 5),
+ point_data<int>(0, 5)
+ };
+ polygon_data<int> poly;
+ poly.set(pts, pts+3);
+ ce.insert(poly);
+ ce.insert(rect2);
+ std::vector<std::set<int> > graph(2);
+ ce.extract(graph);
+ if(graph[0].size() == 1 && graph[1].size() == 1) {
+ std::set<int>::iterator itr = graph[0].begin();
+ std::cout << *itr << std::endl;
+ std::set<int>::iterator itr1 = graph[1].begin();
+ std::cout << *itr1 << std::endl;
+ return true;
+ }
+ std::cout << "test failed\n";
+ return false;
+}
+
+bool test_aa_touch_r() {
+ using namespace gtl;
+ connectivity_extraction<int> ce;
+ rectangle_data<int> rect1(0, 0, 5, 5);
+ rectangle_data<int> rect2(5, 0, 10, 5);
+ ce.insert(rect1);
+ ce.insert(rect2);
+ std::vector<std::set<int> > graph(2);
+ ce.extract(graph);
+ if(graph[0].size() == 1 && graph[1].size() == 1) {
+ std::set<int>::iterator itr = graph[0].begin();
+ std::cout << *itr << std::endl;
+ std::set<int>::iterator itr1 = graph[1].begin();
+ std::cout << *itr1 << std::endl;
+ return true;
+ }
+ std::cout << "test failed\n";
+ return false;
+}
+
+bool test_aa_touch_boundaries() {
+ using namespace gtl;
+ connectivity_extraction<int> ce;
+ rectangle_data<int> rect1(0, 0, 10, 10);
+ rectangle_data<int> rect2(10, 0, 20, 10);
+ rectangle_data<int> rect3(20, 0, 30, 10);
+ rectangle_data<int> rect4(0, 10, 10, 20);
+ rectangle_data<int> rect5(10, 10, 20, 20);
+ rectangle_data<int> rect6(20, 10, 30, 20);
+ rectangle_data<int> rect7(0, 20, 10, 30);
+ rectangle_data<int> rect8(10, 20, 20, 30);
+ rectangle_data<int> rect9(20, 20, 30, 30);
+ ce.insert(rect1);
+ ce.insert(rect2);
+ ce.insert(rect3);
+ ce.insert(rect4);
+ ce.insert(rect5);
+ ce.insert(rect6);
+ ce.insert(rect7);
+ ce.insert(rect8);
+ ce.insert(rect9);
+ std::vector<std::set<int> > graph(9);
+ ce.extract(graph);
+ for(unsigned int i = 0; i < 9; ++i) {
+ std::cout << i << ": ";
+ for(std::set<int>::iterator itr = graph[i].begin(); itr != graph[i].end(); ++itr) {
+ std::cout << *itr << " ";
+ } std::cout << std::endl;
+ }
+ if(graph[0].size() == 3 && graph[1].size() == 5 && graph[2].size() == 3 &&
+ graph[3].size() == 5 && graph[4].size() == 8 && graph[5].size() == 5 &&
+ graph[6].size() == 3 && graph[7].size() == 5 && graph[8].size() == 3) {
+ return true;
+ }
+ std::cout << "test failed\n";
+ return false;
+}
+
+bool test_aa_concept_interact() {
+ using namespace gtl;
+ std::vector<polygon_data<int> > polys;
+ polys += rectangle_data<int>(10, 10, 20, 20);
+ polys += rectangle_data<int>(15, 15, 25, 25);
+ polys += rectangle_data<int>(5, 25, 10, 35);
+ interact(polys, rectangle_data<int>(0, 0, 13, 13));
+ if(polys.size() != 1) return false;
+ return true;
+}
+
+bool test_get_rectangles() {
+ using namespace gtl;
+ polygon_90_set_data<int> ps(VERTICAL);
+ ps += rectangle_data<int>(0, 0, 10, 10);
+ ps += rectangle_data<int>(5, 5, 15, 15);
+ std::vector<polygon_90_data<int> > polys;
+ ps.get_rectangles(polys, HORIZONTAL);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ if(polys.size() != 3) return false;
+ std::vector<rectangle_data<int> > rects;
+ ps.get_rectangles(rects, HORIZONTAL);
+ for(unsigned int i = 0; i < rects.size(); ++i) {
+ std::cout << rects[i] << std::endl;
+ }
+ if(rects.size() != 3) return false;
+ if(!equivalence(rects[2], rectangle_data<int>(5,10,15,15))) return false;
+
+ get_rectangles(polys, rects, VERTICAL);
+ get_rectangles(rects, polys, HORIZONTAL);
+ return equivalence(rects, polys);
+}
+
+bool test_get_trapezoids() {
+ using namespace gtl;
+ polygon_45_set_data<int> ps;
+ ps += rectangle_data<int>(0, 0, 10, 10);
+ ps += rectangle_data<int>(5, 5, 15, 15);
+ std::vector<polygon_45_data<int> > polys;
+ ps.get_trapezoids(polys, HORIZONTAL);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ if(polys.size() != 3) return false;
+ std::vector<polygon_45_data<int> > rects;
+ ps.get_trapezoids(rects, HORIZONTAL);
+ for(unsigned int i = 0; i < rects.size(); ++i) {
+ std::cout << rects[i] << std::endl;
+ }
+ if(rects.size() != 3) return false;
+ if(!equivalence(rects[2], rectangle_data<int>(5,10,15,15))) return false;
+ get_trapezoids(polys, rects, VERTICAL);
+ get_trapezoids(rects, polys, HORIZONTAL);
+ return equivalence(rects, polys);
+}
+
+bool test_SQRT1OVER2() {
+ Point pts[] = {
+ Point(100, 100),
+ Point(0, 100),
+ Point(100, 200),
+ Point(0, 300),
+ Point(100, 400),
+ Point(0, 500),
+ Point(100, 500),
+ Point(100, 600),
+ Point(200, 500),
+ Point(300, 600),
+ Point(400, 500),
+ Point(500, 600),
+ Point(500, 500),
+ Point(600, 500),
+ Point(500, 400),
+ Point(600, 300),
+ Point(500, 200),
+ Point(600, 100),
+ Point(500, 100),
+ Point(500, 0),
+ Point(400, 100),
+ Point(300, 0),
+ Point(200, 100),
+ Point(100, 0),
+ Point(100, 100)
+ };
+ Polygon45 p45(pts, pts+25);
+ std::cout << is_45(p45) << std::endl;
+ std::cout << p45 << std::endl;
+ Polygon45Set ps45;
+ ps45 += p45;
+ ps45.resize(10, SQRT1OVER2, ORTHOGONAL);
+ std::vector<Polygon45> polys;
+ ps45.get(polys);
+ if(polys.size() != 1) return false;
+ Point pts2[] = {
+ Point(90, 90),
+ Point(-10, 90),
+ Point(-10, 100),
+ Point(90, 200),
+ Point(-10, 300),
+ Point(90, 400),
+ Point(-10, 500),
+ Point(-10, 510),
+ Point(90, 510),
+ Point(90, 610),
+ Point(100, 610),
+ Point(200, 510),
+ Point(300, 610),
+ Point(400, 510),
+ Point(500, 610),
+ Point(510, 610),
+ Point(510, 510),
+ Point(610, 510),
+ Point(610, 500),
+ Point(510, 400),
+ Point(610, 300),
+ Point(510, 200),
+ Point(610, 100),
+ Point(610, 90),
+ Point(510, 90),
+ Point(510, -10),
+ Point(500, -10),
+ Point(400, 90),
+ Point(300, -10),
+ Point(200, 90),
+ Point(100, -10),
+ Point(90, -10),
+ Point(90, 90)
+ };
+ Polygon45 p45reference(pts2, pts2+33);
+ std::cout << is_45(polys[0]) << std::endl;
+ std::cout << polys[0] << std::endl;
+ std::cout << p45reference << std::endl;
+ std::cout << is_45(p45reference) << std::endl;
+ if(!equivalence(polys[0], p45reference)) {
+ std::cout << "polys don't match\n";
+ return false;
+ }
+ ps45.resize(-10, SQRT1OVER2, ORTHOGONAL);
+ polys.clear();
+ ps45.get(polys);
+ if(polys.size() != 1) return false;
+ std::cout << is_45(polys[0]) << std::endl;
+ std::cout << polys[0] << std::endl;
+ if(!equivalence(polys[0], p45)) {
+ std::cout << "polys don't match\n";
+ return false;
+ }
+ ps45.resize(11, SQRT1OVER2, UNFILLED);
+ polys.clear();
+ ps45.get(polys);
+ if(polys.size() != 1) return false;
+ std::cout << is_45(polys[0]) << std::endl;
+ std::cout << polys[0] << std::endl;
+ return true;
+}
+
+bool test_scaling_by_floating(){
+ Point pts[] = {
+ Point(1, 1),
+ Point(10, 1),
+ Point(1, 10)
+ };
+ Polygon45 poly(pts, pts+3);
+ Polygon45Set ps45;
+ ps45 += poly;
+ ps45.scale(double(2.5));
+ std::vector<Polygon45> polys;
+ ps45.get(polys);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ std::cout << area(polys[i]) << std::endl;
+ }
+ if(polys.size() != 1) return false;
+ if(area(polys[0]) != 242) return false;
+ scale(ps45, double(1)/double(2.5));
+ polys.clear();
+ ps45.get(polys);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ return equivalence(polys, poly);
+}
+
+bool test_directional_resize() {
+ std::vector<Rectangle> rects;
+ rects.push_back(Rectangle(0, 0, 100, 100));
+ resize(rects, -10, 10, -10, 10);
+ for(unsigned int i = 0; i < rects.size(); ++i) {
+ std::cout << rects[i] << std::endl;
+ }
+ if(rects.size() != 1) return false;
+ if(rects[0] != Rectangle(10, 10, 110, 110)) return false;
+
+ return true;
+}
+
+bool test_self_xor() {
+ std::vector<Rectangle> rects;
+ rects.push_back(Rectangle(0, 0, 10, 10));
+ rects.push_back(Rectangle(5, 5, 15, 15));
+ self_xor(rects);
+ for(unsigned int i = 0; i < rects.size(); ++i) {
+ std::cout << rects[i] << std::endl;
+ }
+ if(rects.size() == 4) return true;
+ else return false;
+}
+
+bool test_grow_and_45() {
+ polygon_45_set_data<int> ps;
+ ps.insert(Rectangle(0, 0, 5, 5));
+ ps.insert(Rectangle(5, 5, 15, 15));
+ grow_and(ps, 2);
+ std::vector<polygon_45_data<int> > rects;
+ ps.get_trapezoids(rects);
+ for(unsigned int i = 0; i < rects.size(); ++i) {
+ std::cout << rects[i] << std::endl;
+ }
+ if(rects.size() != 1) return false;
+ return equivalence(rects, Rectangle(3, 3, 7, 7));
+}
+
+bool test_self_xor_45() {
+ polygon_45_set_data<int> ps;
+ ps.insert(Rectangle(0, 0, 10, 10));
+ ps.insert(Rectangle(5, 5, 15, 15));
+ self_xor(ps);
+ std::vector<polygon_45_data<int> > rects;
+ ps.get_trapezoids(rects);
+ for(unsigned int i = 0; i < rects.size(); ++i) {
+ std::cout << rects[i] << std::endl;
+ }
+ if(rects.size() == 4) return true;
+ else return false;
+}
+
+bool testViewCopyConstruct() {
+ PolygonSet ps1, ps2;
+ ps1.insert(Rectangle(0, 0, 10, 10));
+ ps2.insert(Rectangle(5, 5, 15, 15));
+ PolygonSet psr = ps1 - ps2;
+ std::vector<Rectangle> rects;
+ rects += psr;
+ for(unsigned int i = 0; i < rects.size(); ++i)
+ std::cout << rects[i] << std::endl;
+ if( rects.size() != 2) return false;
+ Polygon45Set ps45_1, ps45_2;
+ ps45_1.insert(Rectangle(0, 0, 10, 10));
+ ps45_2.insert(Rectangle(5, 5, 15, 15));
+ Polygon45Set ps45_r = ps45_1 - ps45_2;
+ std::vector<Polygon45> polys;
+ ps45_r.get_trapezoids(polys);
+ for(unsigned int i = 0; i < polys.size(); ++i)
+ std::cout << polys[i] << std::endl;
+ if( polys.size() != 2) return false;
+ return true;
+}
+
+bool testpip() {
+ std::vector<Point> pts;
+ pts.push_back(Point(0, 0));
+ pts.push_back(Point(10, 0));
+ pts.push_back(Point(20, 10));
+ pts.push_back(Point(0, 20));
+ pts.push_back(Point(30, 40));
+ pts.push_back(Point(-10, 50));
+ pts.push_back(Point(-20, -20));
+ pts.push_back(Point(0, 0));
+ polygon_data<int> poly;
+ polygon_with_holes_data<int> poly2;
+ polygon_45_data<int> poly45;
+ polygon_45_with_holes_data<int> poly245;
+ polygon_90_data<int> poly90;
+ polygon_90_with_holes_data<int> poly290;
+ poly.set(pts.begin(), pts.end());
+ poly2.set(pts.begin(), pts.end());
+ assign(poly45, Rectangle(0, 0, 100, 100));
+ assign(poly245, Rectangle(0, 0, 100, 100));
+ assign(poly90, Rectangle(0, 0, 100, 100));
+ assign(poly290, Rectangle(0, 0, 100, 100));
+ for(unsigned int i = 0; i < pts.size(); ++i) {
+ if(!contains(poly, pts[i], true)) return false;
+ if(contains(poly, pts[i], false)) return false;
+ if(!contains(poly2, pts[i], true)) return false;
+ if(contains(poly2, pts[i], false)) return false;
+ }
+ if(!contains(poly45, pts[0], true)) return false;
+ if(contains(poly245, pts[0], false)) return false;
+ if(!contains(poly90, pts[0], true)) return false;
+ if(contains(poly290, pts[0], false)) return false;
+ Point pt(0, -10);
+ if(contains(poly, pt)) return false;
+ Point p2(0, 1);
+ if(!contains(poly, p2)) return false;
+ return true;
+}
+
+void testHand() {
+ using namespace gtl;
+ int handcoords[] = {
+12375, 11050, 13175, 10200, 15825, 9275, 18750, 8525, 24150, 8300, 27575, 8400, 31775, 7800,
+35975, 7200, 41375, 4800, 42575, 4200, 43175, 4200, 47375, 2400, 49175, 1800, 51150, 2200,
+52275, 2825, 52625, 4150, 52375, 4975, 51575, 6000, 49275, 6850, 45700, 7950, 43175, 9600,
+39575, 10800, 37775, 12000, 37775, 12600, 37775, 13800, 38975, 14400, 41375, 14400, 45575, 13200,
+48600, 13000, 51575, 13200, 55175, 12600, 58775, 12600, 61175, 13200, 62375, 14400, 62550, 15700,
+61975, 16875, 60775, 17600, 60100, 17675, 58525, 17675, 56150, 17575, 52175, 18000, 47975, 18600,
+45575, 19200, 44375, 19200, 42675, 19325, 41600, 19775, 41600, 20500, 42100, 20825, 44975, 20400,
+48575, 20400, 52775, 21000, 53975, 21000, 57575, 21000, 62375, 21000, 65450, 22000, 66300, 23100,
+66100, 24550, 64750, 25925, 62975, 26400, 61175, 26400, 58775, 26400, 56025, 26050, 53450, 26025,
+50975, 26400, 48575, 26400, 46775, 26400, 43650, 26075, 41375, 26400, 40775, 27000, 40775, 27600,
+42225, 28650, 44375, 29400, 48575, 30000, 50975, 31200, 53975, 31800, 58775, 33000, 61200, 34300,
+62375, 35400, 62375, 37200, 61175, 38400, 60000, 38700, 57575, 38400, 54550, 37575, 50975, 36600,
+49075, 36125, 47750, 36125, 45700, 35425, 42350, 34350, 38900, 33775, 30575, 33000, 26975, 33600,
+25975, 34900, 26375, 36600, 28175, 38400, 30575, 40800, 32375, 43800, 33200, 46200, 33200, 48000,
+32650, 49300, 31425, 50000, 29950, 50125, 28825, 49375, 27575, 48000, 25825, 46000, 23975, 44100,
+22175, 42600, 19775, 39600, 17325, 37300, 14975, 34800, 13175, 31800, 10775, 29400, 9600, 27400,
+10175, 27000, 11375, 27600, 12575, 28800, 14375, 31800, 16175, 34800, 18575, 37200, 21575, 39000,
+22775, 40200, 23975, 41400, 24575, 42600, 26375, 44400, 28325, 46000, 29850, 46775, 31175, 46200,
+31550, 44575, 30575, 43200, 28775, 40800, 25775, 38400, 24575, 34800, 24750, 33175, 26975, 31800,
+29975, 31800, 33575, 31800, 37775, 32400, 39575, 33000, 41975, 33600, 45150, 34175, 46975, 34750,
+48575, 35400, 50975, 35400, 51575, 34800, 51875, 33725, 50775, 32575, 48575, 31800, 45750, 30875,
+43775, 30600, 41375, 29400, 38975, 28800, 35975, 28200, 34775, 27600, 34175, 27000, 34775, 25800,
+37175, 25200, 40175, 25200, 43175, 25200, 46775, 25200, 50975, 25425, 53375, 25200, 55175, 24600,
+55525, 23450, 53975, 22200, 52775, 22200, 49075, 21850, 45950, 21925, 40775, 21600, 37775, 21600,
+35150, 21350, 34325, 20950, 34175, 19800, 35975, 19200, 38375, 19200, 40750, 18900, 42575, 18600,
+44375, 18000, 47975, 17400, 50375, 17125, 52025, 16625, 52775, 15600, 52100, 14625, 49675, 14125,
+48625, 14125, 46775, 14400, 44375, 15000, 41375, 15150, 37700, 15275, 34775, 15600, 32850, 15925,
+31775, 15600, 31425, 14875, 32375, 13800, 36575, 11400, 38975, 10200, 41375, 9000, 43075, 8150,
+43650, 7200, 43325, 6250, 42225, 5825, 40800, 6275, 38900, 6925, 35375, 8400, 32375, 10200,
+27575, 11400, 22775, 12600, 19775, 13225, 16775, 13800, 14975, 14400, 13050, 14000, 11975, 12600,
+ 0, 0 };
+ std::vector<Point> handpoints;
+ for(unsigned int i = 0; i < 100000; i += 2) {
+ Point pt(handcoords[i], handcoords[i+1]);
+ if(pt == Point(0, 0)) break;
+ handpoints.push_back(pt);
+ }
+ polygon_data<int> handpoly;
+ handpoly.set(handpoints.begin(), handpoints.end());
+ int spiralcoords [] = {
+37200, 3600, 42075, 4025, 47475, 5875, 51000, 7800, 55800, 12300, 59000, 17075, 60000, 20400,
+61200, 25800, 61200, 29400, 60600, 33600, 58800, 38400, 55800, 42600, 53200, 45625,
+49200, 48600, 43200, 51000, 35400, 51600, 29400, 50400, 23400, 47400, 19200, 43800,
+16200, 39600, 14400, 35400, 13200, 29400, 13200, 24000, 15000, 18600, 17400, 13800,
+20525, 10300, 24600, 7200, 29400, 4800, 32450, 4000, 34825, 3675, 35625, 3625,
+35825, 7275, 39600, 7200, 43800, 8400, 46800, 9600, 50400, 12000, 53400, 15000,
+55800, 18600, 57000, 23400, 57600, 27000, 57000, 32400, 55200, 37200, 52200, 41400,
+48000, 45000, 42000, 47400, 35400, 48000, 30000, 46800, 24600, 43800, 20325, 39100,
+17850, 34275, 16800, 27600, 17400, 22200, 20400, 16200, 24600, 11400, 28800, 9000,
+32400, 7800, 33200, 7575, 33925, 11050, 35400, 10800, 37200, 10800, 41400, 11400,
+46200, 13200, 49800, 16200, 51600, 19200, 53400, 23400, 54000, 29400, 52800, 33600,
+49800, 39000, 45000, 42600, 39000, 44400, 33600, 43800, 28200, 42000, 24000, 37800,
+21000, 33000, 20400, 26400, 21600, 21000, 24600, 16200, 28200, 13200, 31875, 11625,
+33200, 15625, 36000, 15000, 39000, 15000, 43800, 16800, 46800, 19200, 49200, 23400,
+49800, 27600, 48750, 32700, 46350, 36275, 42600, 39000, 38400, 40200, 31800, 39000,
+28200, 36600, 25200, 31200, 24600, 26400, 26025, 21800, 28200, 18600, 30600, 16800,
+32575, 19875, 34200, 19200, 36000, 18600, 37200, 18600, 40375, 19125, 43200, 21000,
+45600, 24000, 46200, 27600, 45600, 30600, 43800, 33600, 41475, 35625, 37800, 36600,
+33600, 36000, 30000, 33600, 28200, 28800, 28800, 24600, 30000, 22200, 31200, 23400,
+30600, 25200, 30000, 27000, 30600, 30000, 31800, 32400, 34200, 34200, 38400, 34800,
+41400, 33000, 44025, 30225, 44400, 26400, 43200, 23400, 40900, 21200, 37800, 20400,
+34950, 20675, 32400, 22200, 30175, 19475, 28425, 21300, 27000, 24000, 26400, 27600,
+27000, 31800, 31200, 36600, 36600, 38400, 42600, 37200, 46200, 33600, 48000, 30000,
+47650, 24425, 45600, 20400, 42650, 18200, 39000, 16800, 35400, 16800, 33600, 17400,
+32875, 17675, 31100, 13850, 28200, 15600, 25200, 18600, 22800, 22800, 22200, 27000,
+23400, 33600, 26400, 38400, 31675, 41575, 37800, 42600, 40850, 42150, 42800, 41550,
+47050, 39025, 50100, 35375, 52200, 29400, 51675, 23950, 49800, 19200, 46200, 15600,
+41400, 13200, 37800, 12600, 35025, 12750, 33350, 13050, 32400, 9600, 30025, 10325,
+25925, 12725, 22200, 16800, 19800, 21000, 18600, 25800, 18600, 30000, 20400, 35400,
+22575, 39250, 25225, 41825, 28200, 43800, 33600, 46200, 39000, 46200, 44400, 45000,
+48650, 42350, 52800, 37800, 55200, 32400, 55800, 26400, 54600, 21000, 53400, 18000,
+50400, 14400, 47400, 12000, 42600, 9600, 39000, 9000, 36000, 9000, 34775, 9125,
+34300, 5600, 30000, 6600, 25800, 8400, 22025, 11350, 18725, 15125, 16200, 20400,
+15000, 24600, 15000, 30600, 16800, 36600, 20400, 42600, 25800, 46800, 31200, 49200,
+38400, 49800, 45000, 48600, 51000, 45000, 55475, 40225, 58200, 34800, 59400, 30000,
+59400, 25200, 58200, 19800, 55200, 14400, 52225, 11150, 47400, 7800, 44175, 6500,
+40200, 5400, 38400, 5400, 37200, 5400, 0, 0 };
+ std::vector<Point> spiralpoints;
+ for(unsigned int i = 0; i < 100000; i += 2) {
+ Point pt(spiralcoords[i], spiralcoords[i+1]);
+ if(pt == Point(0, 0)) break;
+ spiralpoints.push_back(pt);
+ }
+ polygon_data<int> spiralpoly;
+ spiralpoly.set(spiralpoints.begin(), spiralpoints.end());
+ polygon_set_data<int> handset;
+ handset += handpoly;
+ polygon_set_data<int> spiralset;
+ spiralset += spiralpoly;
+ polygon_set_data<int> xorset = handset ^ spiralset;
+ std::vector<polygon_data<int> > polys;
+ polys += xorset;
+ std::cout << polys.size() << std::endl;
+ for(unsigned int i = 0; i < polys.size(); ++i)
+ std::cout << polys[i] << std::endl;
+}
+
+//void testHandFloat() {
+// using namespace gtl;
+// double handcoords[] = {
+//12375, 11050, 13175, 10200, 15825, 9275, 18750, 8525, 24150, 8300, 27575, 8400, 31775, 7800,
+//35975, 7200, 41375, 4800, 42575, 4200, 43175, 4200, 47375, 2400, 49175, 1800, 51150, 2200,
+//52275, 2825, 52625, 4150, 52375, 4975, 51575, 6000, 49275, 6850, 45700, 7950, 43175, 9600,
+//39575, 10800, 37775, 12000, 37775, 12600, 37775, 13800, 38975, 14400, 41375, 14400, 45575, 13200,
+//48600, 13000, 51575, 13200, 55175, 12600, 58775, 12600, 61175, 13200, 62375, 14400, 62550, 15700,
+//61975, 16875, 60775, 17600, 60100, 17675, 58525, 17675, 56150, 17575, 52175, 18000, 47975, 18600,
+//45575, 19200, 44375, 19200, 42675, 19325, 41600, 19775, 41600, 20500, 42100, 20825, 44975, 20400,
+//48575, 20400, 52775, 21000, 53975, 21000, 57575, 21000, 62375, 21000, 65450, 22000, 66300, 23100,
+//66100, 24550, 64750, 25925, 62975, 26400, 61175, 26400, 58775, 26400, 56025, 26050, 53450, 26025,
+//50975, 26400, 48575, 26400, 46775, 26400, 43650, 26075, 41375, 26400, 40775, 27000, 40775, 27600,
+//42225, 28650, 44375, 29400, 48575, 30000, 50975, 31200, 53975, 31800, 58775, 33000, 61200, 34300,
+//62375, 35400, 62375, 37200, 61175, 38400, 60000, 38700, 57575, 38400, 54550, 37575, 50975, 36600,
+//49075, 36125, 47750, 36125, 45700, 35425, 42350, 34350, 38900, 33775, 30575, 33000, 26975, 33600,
+//25975, 34900, 26375, 36600, 28175, 38400, 30575, 40800, 32375, 43800, 33200, 46200, 33200, 48000,
+//32650, 49300, 31425, 50000, 29950, 50125, 28825, 49375, 27575, 48000, 25825, 46000, 23975, 44100,
+//22175, 42600, 19775, 39600, 17325, 37300, 14975, 34800, 13175, 31800, 10775, 29400, 9600, 27400,
+//10175, 27000, 11375, 27600, 12575, 28800, 14375, 31800, 16175, 34800, 18575, 37200, 21575, 39000,
+//22775, 40200, 23975, 41400, 24575, 42600, 26375, 44400, 28325, 46000, 29850, 46775, 31175, 46200,
+//31550, 44575, 30575, 43200, 28775, 40800, 25775, 38400, 24575, 34800, 24750, 33175, 26975, 31800,
+//29975, 31800, 33575, 31800, 37775, 32400, 39575, 33000, 41975, 33600, 45150, 34175, 46975, 34750,
+//48575, 35400, 50975, 35400, 51575, 34800, 51875, 33725, 50775, 32575, 48575, 31800, 45750, 30875,
+//43775, 30600, 41375, 29400, 38975, 28800, 35975, 28200, 34775, 27600, 34175, 27000, 34775, 25800,
+//37175, 25200, 40175, 25200, 43175, 25200, 46775, 25200, 50975, 25425, 53375, 25200, 55175, 24600,
+//55525, 23450, 53975, 22200, 52775, 22200, 49075, 21850, 45950, 21925, 40775, 21600, 37775, 21600,
+//35150, 21350, 34325, 20950, 34175, 19800, 35975, 19200, 38375, 19200, 40750, 18900, 42575, 18600,
+//44375, 18000, 47975, 17400, 50375, 17125, 52025, 16625, 52775, 15600, 52100, 14625, 49675, 14125,
+//48625, 14125, 46775, 14400, 44375, 15000, 41375, 15150, 37700, 15275, 34775, 15600, 32850, 15925,
+//31775, 15600, 31425, 14875, 32375, 13800, 36575, 11400, 38975, 10200, 41375, 9000, 43075, 8150,
+//43650, 7200, 43325, 6250, 42225, 5825, 40800, 6275, 38900, 6925, 35375, 8400, 32375, 10200,
+//27575, 11400, 22775, 12600, 19775, 13225, 16775, 13800, 14975, 14400, 13050, 14000, 11975, 12600,
+// 0, 0 };
+// std::vector<point_data<double> > handpoints;
+// for(unsigned int i = 0; i < 100000; i += 2) {
+// point_data<double> pt(handcoords[i], handcoords[i+1]);
+// if(pt == point_data<double> (0, 0)) break;
+// handpoints.push_back(pt);
+// }
+// polygon_data<double> handpoly;
+// handpoly.set(handpoints.begin(), handpoints.end());
+// double spiralcoords [] = {
+//37200, 3600, 42075, 4025, 47475, 5875, 51000, 7800, 55800, 12300, 59000, 17075, 60000, 20400,
+//61200, 25800, 61200, 29400, 60600, 33600, 58800, 38400, 55800, 42600, 53200, 45625,
+//49200, 48600, 43200, 51000, 35400, 51600, 29400, 50400, 23400, 47400, 19200, 43800,
+//16200, 39600, 14400, 35400, 13200, 29400, 13200, 24000, 15000, 18600, 17400, 13800,
+//20525, 10300, 24600, 7200, 29400, 4800, 32450, 4000, 34825, 3675, 35625, 3625,
+//35825, 7275, 39600, 7200, 43800, 8400, 46800, 9600, 50400, 12000, 53400, 15000,
+//55800, 18600, 57000, 23400, 57600, 27000, 57000, 32400, 55200, 37200, 52200, 41400,
+//48000, 45000, 42000, 47400, 35400, 48000, 30000, 46800, 24600, 43800, 20325, 39100,
+//17850, 34275, 16800, 27600, 17400, 22200, 20400, 16200, 24600, 11400, 28800, 9000,
+//32400, 7800, 33200, 7575, 33925, 11050, 35400, 10800, 37200, 10800, 41400, 11400,
+//46200, 13200, 49800, 16200, 51600, 19200, 53400, 23400, 54000, 29400, 52800, 33600,
+//49800, 39000, 45000, 42600, 39000, 44400, 33600, 43800, 28200, 42000, 24000, 37800,
+//21000, 33000, 20400, 26400, 21600, 21000, 24600, 16200, 28200, 13200, 31875, 11625,
+//33200, 15625, 36000, 15000, 39000, 15000, 43800, 16800, 46800, 19200, 49200, 23400,
+//49800, 27600, 48750, 32700, 46350, 36275, 42600, 39000, 38400, 40200, 31800, 39000,
+//28200, 36600, 25200, 31200, 24600, 26400, 26025, 21800, 28200, 18600, 30600, 16800,
+//32575, 19875, 34200, 19200, 36000, 18600, 37200, 18600, 40375, 19125, 43200, 21000,
+//45600, 24000, 46200, 27600, 45600, 30600, 43800, 33600, 41475, 35625, 37800, 36600,
+//33600, 36000, 30000, 33600, 28200, 28800, 28800, 24600, 30000, 22200, 31200, 23400,
+//30600, 25200, 30000, 27000, 30600, 30000, 31800, 32400, 34200, 34200, 38400, 34800,
+//41400, 33000, 44025, 30225, 44400, 26400, 43200, 23400, 40900, 21200, 37800, 20400,
+//34950, 20675, 32400, 22200, 30175, 19475, 28425, 21300, 27000, 24000, 26400, 27600,
+//27000, 31800, 31200, 36600, 36600, 38400, 42600, 37200, 46200, 33600, 48000, 30000,
+//47650, 24425, 45600, 20400, 42650, 18200, 39000, 16800, 35400, 16800, 33600, 17400,
+//32875, 17675, 31100, 13850, 28200, 15600, 25200, 18600, 22800, 22800, 22200, 27000,
+//23400, 33600, 26400, 38400, 31675, 41575, 37800, 42600, 40850, 42150, 42800, 41550,
+//47050, 39025, 50100, 35375, 52200, 29400, 51675, 23950, 49800, 19200, 46200, 15600,
+//41400, 13200, 37800, 12600, 35025, 12750, 33350, 13050, 32400, 9600, 30025, 10325,
+//25925, 12725, 22200, 16800, 19800, 21000, 18600, 25800, 18600, 30000, 20400, 35400,
+//22575, 39250, 25225, 41825, 28200, 43800, 33600, 46200, 39000, 46200, 44400, 45000,
+//48650, 42350, 52800, 37800, 55200, 32400, 55800, 26400, 54600, 21000, 53400, 18000,
+//50400, 14400, 47400, 12000, 42600, 9600, 39000, 9000, 36000, 9000, 34775, 9125,
+//34300, 5600, 30000, 6600, 25800, 8400, 22025, 11350, 18725, 15125, 16200, 20400,
+//15000, 24600, 15000, 30600, 16800, 36600, 20400, 42600, 25800, 46800, 31200, 49200,
+//38400, 49800, 45000, 48600, 51000, 45000, 55475, 40225, 58200, 34800, 59400, 30000,
+//59400, 25200, 58200, 19800, 55200, 14400, 52225, 11150, 47400, 7800, 44175, 6500,
+//40200, 5400, 38400, 5400, 37200, 5400, 0, 0 };
+// std::vector<point_data<double> > spiralpoints;
+// for(unsigned int i = 0; i < 100000; i += 2) {
+// point_data<double> pt(spiralcoords[i], spiralcoords[i+1]);
+// if(pt == point_data<double> (0, 0)) break;
+// spiralpoints.push_back(pt);
+// }
+// polygon_data<double> spiralpoly;
+// spiralpoly.set(spiralpoints.begin(), spiralpoints.end());
+// polygon_set_data<double> handset;
+// handset += handpoly;
+// polygon_set_data<double> spiralset;
+// spiralset += spiralpoly;
+// polygon_set_data<double> xorset = handset ^ spiralset;
+// std::vector<polygon_data<double> > polys;
+// polys += xorset;
+// std::cout << polys.size() << std::endl;
+// for(unsigned int i = 0; i < polys.size(); ++i)
+// std::cout << polys[i] << std::endl;
+//}
+
+bool testDirectionalSize() {
+ {
+ PolygonSet ps(VERTICAL);
+ ps += Rectangle(0, 0, 100, 100);
+ ps.resize(0, -10, 0, -10);
+ std::vector<Rectangle> rects;
+ ps.get(rects);
+ if(rects.size() != 1) return false;
+ std::cout << rects[0] << std::endl;
+ std::cout << Rectangle(0, 0, 90, 90) << std::endl;
+ if(rects[0] != Rectangle(0, 0, 90, 90)) return false;
+ }
+ {
+ PolygonSet ps(VERTICAL);
+ ps += Rectangle(0, 0, 100, 100);
+ ps.resize(0, 0, 0, -10);
+ std::vector<Rectangle> rects;
+ ps.get(rects);
+ if(rects.size() != 1) return false;
+ std::cout << rects[0] << std::endl;
+ std::cout << Rectangle(0, 0, 100, 90) << std::endl;
+ if(rects[0] != Rectangle(0, 0, 100, 90)) return false;
+ }
+ {
+ PolygonSet ps;
+ ps += Rectangle(0, 0, 100, 100);
+ ps.resize(0, -10, 0, 0);
+ std::vector<Rectangle> rects;
+ ps.get(rects);
+ if(rects.size() != 1) return false;
+ std::cout << rects[0] << std::endl;
+ std::cout << Rectangle(0, 0, 90, 100) << std::endl;
+ if(rects[0] != Rectangle(0, 0, 90, 100)) return false;
+ }
+ {
+ PolygonSet ps;
+ ps += Rectangle(0, 0, 100, 100);
+ ps.resize(0, 0, -10, 0);
+ std::vector<Rectangle> rects;
+ ps.get(rects);
+ if(rects.size() != 1) return false;
+ std::cout << rects[0] << std::endl;
+ std::cout << Rectangle(0, 10, 100, 100) << std::endl;
+ if(rects[0] != Rectangle(0, 10, 100, 100)) return false;
+ }
+ {
+ PolygonSet ps;
+ ps += Rectangle(0, 0, 100, 100);
+ ps.resize(-10, 0, 0, 0);
+ std::vector<Rectangle> rects;
+ ps.get(rects);
+ if(rects.size() != 1) return false;
+ std::cout << rects[0] << std::endl;
+ std::cout << Rectangle(10, 0, 100, 100) << std::endl;
+ if(rects[0] != Rectangle(10, 0, 100, 100)) return false;
+ }
+ {
+ PolygonSet ps;
+ ps += Rectangle(0, 0, 100, 100);
+ ps.resize(-10, 10, 0, 0);
+ std::vector<Rectangle> rects;
+ ps.get(rects);
+ if(rects.size() != 1) return false;
+ std::cout << rects[0] << std::endl;
+ std::cout << Rectangle(10, 0, 110, 100) << std::endl;
+ if(rects[0] != Rectangle(10, 0, 110, 100)) return false;
+ }
+ {
+ PolygonSet ps;
+ ps += Rectangle(0, 0, 100, 100);
+ ps.resize(-10, 10, 10, -10);
+ std::vector<Rectangle> rects;
+ ps.get(rects);
+ if(rects.size() != 1) return false;
+ std::cout << rects[0] << std::endl;
+ std::cout << Rectangle(10, -10, 110, 90) << std::endl;
+ if(rects[0] != Rectangle(10, -10, 110, 90)) return false;
+ }
+ {
+ PolygonSet ps;
+ ps += Rectangle(0, 0, 100, 100);
+ ps.resize(10, 10, -10, -10);
+ std::vector<Rectangle> rects;
+ ps.get(rects);
+ if(rects.size() != 1) return false;
+ std::cout << rects[0] << std::endl;
+ std::cout << Rectangle(-10, 10, 110, 90) << std::endl;
+ if(rects[0] != Rectangle(-10, 10, 110, 90)) return false;
+ }
+ return true;
+}
+
+bool testMaxCover() {
+ std::vector<Rectangle> rects;
+ rects.push_back(Rectangle(Interval(60, 124), Interval( 1, 3)));
+ rects.push_back(Rectangle(Interval(59, 83), Interval( 9, 28)));
+ rects.push_back(Rectangle(Interval(90, 124), Interval( 3, 29)));
+ rects.push_back(Rectangle(Interval(64, 124), Interval( 29, 35)));
+ rects.push_back(Rectangle(Interval(64, 102), Interval( 35, 49)));
+ rects.push_back(Rectangle(Interval(1, 20), Interval( 44, 60)));
+ rects.push_back(Rectangle(Interval(50, 102), Interval( 49, 71)));
+ rects.push_back(Rectangle(Interval(49, 102), Interval( 71, 72)));
+ rects.push_back(Rectangle(Interval(49, 94), Interval( 72, 75)));
+ rects.push_back(Rectangle(Interval(50, 74), Interval( 75, 81)));
+ rects.push_back(Rectangle(Interval(90, 127), Interval( 75, 81)));
+ rects.push_back(Rectangle(Interval(50, 127), Interval( 81, 82)));
+ rects.push_back(Rectangle(Interval(3, 7), Interval( 60, 88)));
+ rects.push_back(Rectangle(Interval(50, 92), Interval( 82, 94)));
+ rects.push_back(Rectangle(Interval(58, 92), Interval( 94, 111)));
+ std::vector<Rectangle> expected_result;
+ expected_result.push_back(Rectangle(Interval(60, 124), Interval( 1, 3)));
+ expected_result.push_back(Rectangle(Interval(90, 124), Interval( 1, 35)));
+ expected_result.push_back(Rectangle(Interval(90, 102), Interval( 1, 72)));
+ expected_result.push_back(Rectangle(Interval(90, 94 ), Interval(1 ,82)));
+ expected_result.push_back(Rectangle(Interval(90, 92), Interval( 1, 111)));
+ expected_result.push_back(Rectangle(Interval(59, 83 ), Interval(9, 28)));
+ expected_result.push_back(Rectangle(Interval(64, 124), Interval( 29, 35)));
+ expected_result.push_back(Rectangle(Interval(64, 102), Interval( 29, 72)));
+ expected_result.push_back(Rectangle(Interval(64, 94), Interval( 29, 75)));
+ expected_result.push_back(Rectangle(Interval(64, 74), Interval( 29, 111)));
+ expected_result.push_back(Rectangle(Interval(1, 20), Interval( 44, 60)));
+ expected_result.push_back(Rectangle(Interval(3, 7), Interval( 44, 88)));
+ expected_result.push_back(Rectangle(Interval(50, 102 ), Interval(49, 72)));
+ expected_result.push_back(Rectangle(Interval(50, 94), Interval( 49, 75)));
+ expected_result.push_back(Rectangle(Interval(50, 74), Interval( 49, 94)));
+ expected_result.push_back(Rectangle(Interval(58, 74), Interval( 49, 111)));
+ expected_result.push_back(Rectangle(Interval(49, 102 ), Interval(71, 72)));
+ expected_result.push_back(Rectangle(Interval(49, 94 ), Interval(71, 75)));
+ expected_result.push_back(Rectangle(Interval(90, 127), Interval( 75, 82)));
+ expected_result.push_back(Rectangle(Interval(50, 127), Interval( 81, 82)));
+ expected_result.push_back(Rectangle(Interval(50, 92), Interval( 81, 94)));
+ expected_result.push_back(Rectangle(Interval(58, 92), Interval( 81, 111)));
+ std::vector<Rectangle> result;
+ get_max_rectangles(result, rects);
+ std::cout << "result XOR clean: " << equivalence(result, rects) << std::endl;
+ std::cout << "expected result XOR clean: " << equivalence(expected_result, rects) << std::endl;
+ std::vector<Rectangle>& output = result;
+ std::vector<Rectangle>& voutput = expected_result;
+ std::sort(output.begin(), output.end(), less_rectangle_concept< Rectangle, Rectangle>());
+ std::sort(voutput.begin(), voutput.end(), less_rectangle_concept< Rectangle, Rectangle>());
+ if(output != voutput) {
+ std::cerr << "Max Rectangle TEST failed\n";
+ for(unsigned int i = 0; i < output.size(); ++i) {
+ std::cerr << output[i] << std::endl;
+ }
+ std::cerr << "Incorrect result\n";
+ for(unsigned int i = 0; i < voutput.size(); ++i) {
+ std::cerr << voutput[i] << std::endl;
+ }
+ std::cerr << "Max Rectangle TEST failed\n";
+ for(unsigned int i = 0; i < rects.size(); ++i) {
+ std::cout << rects[i] << std::endl;
+ }
+ return false;
+ }
+ return true;
+}
+
+void max_cover_stress_test() {
+ for(unsigned int k = 3; k < 20; k++) {
+ for(unsigned int i = 0; i < k * k; ++i) {
+ std::vector<Rectangle> rects, result;
+ //std::cout << "test " << i << std::endl;
+ for(unsigned int j = 0; j < k; ++j) {
+ int x1 = rand() % 100;
+ int x2 = rand() % 50;
+ int y1 = rand() % 100;
+ int y2 = rand() % 50;
+ rects.push_back(Rectangle(x1, y1, x1+x2, y1+y2));
+ //std::cout << rects.back() << std::endl;
+ }
+ get_max_rectangles(result, rects);
+ }
+ }
+}
+
+// namespace boost { namespace polygon{
+// template <typename GCT, typename T>
+// struct view_of {};
+
+// template <typename T>
+// struct view_of<polygon_45_concept, T> {
+// const T* t;
+// view_of(const T& obj) : t(&obj) {}
+// typedef typename polygon_traits<T>::coordinate_type coordinate_type;
+// typedef typename polygon_traits<T>::iterator_type iterator_type;
+// typedef typename polygon_traits<T>::point_type point_type;
+
+// /// Get the begin iterator
+// inline iterator_type begin() const {
+// return polygon_traits<T>::begin_points(*t);
+// }
+
+// /// Get the end iterator
+// inline iterator_type end() const {
+// return polygon_traits<T>::end_points(*t);
+// }
+
+// /// Get the number of sides of the polygon
+// inline unsigned int size() const {
+// return polygon_traits<T>::size(*t);
+// }
+
+// /// Get the winding direction of the polygon
+// inline winding_direction winding() const {
+// return polygon_traits<T>::winding(*t);
+// }
+// };
+
+// template <typename T1, typename T2>
+// view_of<T1, T2> view_as(const T2& obj) { return view_of<T1, T2>(obj); }
+
+// template <typename T>
+// struct geometry_concept<view_of<polygon_45_concept, T> > {
+// typedef polygon_45_concept type;
+// };
+
+// template <typename T>
+// struct view_of<polygon_90_concept, T> {
+// const T* t;
+// view_of(const T& obj) : t(&obj) {}
+// typedef typename polygon_traits<T>::coordinate_type coordinate_type;
+// typedef typename polygon_traits<T>::iterator_type iterator_type;
+// typedef typename polygon_traits<T>::point_type point_type;
+// typedef iterator_points_to_compact<iterator_type, point_type> compact_iterator_type;
+
+// /// Get the begin iterator
+// inline compact_iterator_type begin_compact() const {
+// return compact_iterator_type(polygon_traits<T>::begin_points(*t),
+// polygon_traits<T>::end_points(*t));
+// }
+
+// /// Get the end iterator
+// inline compact_iterator_type end_compact() const {
+// return compact_iterator_type(polygon_traits<T>::end_points(*t),
+// polygon_traits<T>::end_points(*t));
+// }
+
+// /// Get the number of sides of the polygon
+// inline unsigned int size() const {
+// return polygon_traits<T>::size(*t);
+// }
+
+// /// Get the winding direction of the polygon
+// inline winding_direction winding() const {
+// return polygon_traits<T>::winding(*t);
+// }
+// };
+
+// template <typename T>
+// struct geometry_concept<view_of<polygon_90_concept, T> > {
+// typedef polygon_90_concept type;
+// };
+// }}
+using namespace gtl;
+
+//this test fails and I'd like to get it to pass
+bool test_colinear_duplicate_points() {
+ Point pts[6] = { Point(0, 10), Point(0, 0), Point(100, 0), Point(100, 100), Point(0, 100), Point(0, 10)};
+ Polygon45 p1;
+ p1.set(pts, pts+5);
+ Polygon45 pg;
+ pg.set(pts, pts+6);
+ Polygon45 p2;
+ p2.set(pts+1, pts+6);
+ std::cout << p2 << std::endl;
+ if(!equivalence(view_as<polygon_90_concept>(p2), view_as<polygon_90_concept>(pg))) return false;
+ std::cout << p1 << std::endl;
+ if(!equivalence(view_as<polygon_90_concept>(p1), view_as<polygon_90_concept>(pg))) return false;
+ return true;
+}
+
+bool test_extents() {
+ PolygonSet psT(gtl::VERTICAL);
+ //int xy[] = { 126, 69, 54, 69, 54, 81, 126, 81 };
+ //CPolygonQuery polygon(0, 4, xy);
+ //Rectangle rectIn(54, 69, 126, 81);
+ polygon_data<int> polygon;
+ std::vector<Point> pts;
+ pts.push_back(Point(126, 69));
+ pts.push_back(Point(54, 69));
+ pts.push_back(Point(54, 81));
+ pts.push_back(Point(126, 81));
+ psT.insert(view_as<polygon_90_concept>(polygon));
+
+ Rectangle rect, rect2;
+ psT.extents(rect2);
+ gtl::extents(rect, psT);
+
+ if (rect != rect2) {
+ std::cout << "gtl::Rectangles differ: " << gtl::xl(rect) << " " << gtl::xh(rect) << " " << gtl::yl(rect) << " " << gtl::yh(rect) << std::endl;
+ std::cout << " " << gtl::xl(rect2) << " " << gtl::xh(rect2) << " " << gtl::yl(rect2) << " " << gtl::yh(rect2) << std::endl;
+ return false;
+ }
+ return true;
+}
+
+bool test_extents2() {
+ Polygon45Set psT;
+ Point xy[] = { Point(130, 50), Point(50, 50), Point(50, 100), Point(119, 100),
+ Point(119, 59), Point(89, 89), Point(59, 59), Point(119, 59), Point(119, 100), Point(130, 100) };
+ Polygon45 polygon(xy, xy+10);
+
+ psT.insert(polygon);
+ psT += 2;
+
+ Rectangle rect, rect2;
+ psT.extents(rect2);
+ gtl::extents(rect, psT);
+ std::cout << "Extents: " << gtl::xl(rect) << " " << gtl::xh(rect) << " " << gtl::yl(rect) << " " << gtl::yh(rect) << std::endl;
+ std::cout << "Extents: " << gtl::xl(rect2) << " " << gtl::xh(rect2) << " " << gtl::yl(rect2) << " " << gtl::yh(rect2) << std::endl;
+ std::vector<Polygon45WithHoles> pwhs;
+ psT.get(pwhs);
+ for(unsigned int i = 0; i < pwhs.size(); ++i) {
+ std::cout << pwhs[i] << std::endl;
+ }
+ return gtl::equivalence(rect, rect2);
+}
+
+int main() {
+ test_view_as();
+ //this test fails and I'd like to get it to pass
+ //if(!test_colinear_duplicate_points()) return 1;
+ if(!test_extents2()) return 1;
+ if(!test_extents()) return 1;
+ if(!testMaxCover()) return 1;
+ //max_cover_stress_test(); //does not include functional testing
+ if(!testDirectionalSize()) return 1;
+ testHand();
+ //testHandFloat();
+ if(!testpip()) return 1;
+ {
+ PolygonSet ps;
+ Polygon p;
+ assign(ps, p);
+ }
+ if(!testViewCopyConstruct()) return 1;
+ if(!test_grow_and_45()) return 1;
+ if(!test_self_xor_45()) return 1;
+ if(!test_self_xor()) return 1;
+ if(!test_directional_resize()) return 1;
+ if(!test_scaling_by_floating()) return 1;
+ if(!test_SQRT1OVER2()) return 1;
+ if(!test_get_trapezoids()) return 1;
+ if(!test_get_rectangles()) return 1;
+ if(!test_45_concept_interact()) return 1;
+ if(!test_45_touch_r()) return 1;
+ if(!test_45_touch_ur()) return 1;
+ if(!test_45_touch()) return 1;
+ if(!test_45_touch_boundaries()) return 1;
+ {
+ Point pts[] = {Point(0,0), Point(5, 5), Point(5, 0)};
+ Polygon45 p45(pts, pts+3);
+ pts[1] = Point(0, 5);
+ Polygon45 p452(pts, pts+3);
+ if(!test_two_polygons(p45,p452)) return 1;
+ pts[2] = Point(5,5);
+ p45.set(pts, pts+3);
+ if(!test_two_polygons(p45,p452)) return 1;
+ pts[0] = Point(5,0);
+ p452.set(pts, pts+3);
+ if(!test_two_polygons(p45, p452)) return 1;
+ Point pts2[] = {Point(0,5), Point(5, 5), Point(5, 0)};
+ Point pts3[] = {Point(0,0), Point(5, 5), Point(5, 0)};
+ p45.set(pts2, pts2 + 3);
+ p452.set(pts3, pts3+3);
+ if(!test_two_polygons(p45, p452)) return 1;
+ Point pts4[] = {Point(0, 5), Point(3, 2), Point(3,5)};
+ Point pts5[] = {Point(0,0), Point(5, 5), Point(5, 0)};
+ p45.set(pts4, pts4+3);
+ p452.set(pts5, pts5+3);
+ if(!test_two_polygons(p45, p452)) return 1;
+ }
+ {
+ std::vector<point_data<int> > pts;
+ pts.push_back(point_data<int>(0, 0));
+ pts.push_back(point_data<int>(10, 0));
+ pts.push_back(point_data<int>(10, 10));
+ pts.push_back(point_data<int>(0, 10));
+ std::vector<point_data<int> > pts2;
+ pts2.push_back(point_data<int>(0, 0));
+ pts2.push_back(point_data<int>(10, 10));
+ pts2.push_back(point_data<int>(0, 20));
+ pts2.push_back(point_data<int>(-10, 10));
+ std::vector<point_data<int> > pts3;
+ pts3.push_back(point_data<int>(0, 0));
+ pts3.push_back(point_data<int>(10, 11));
+ pts3.push_back(point_data<int>(0, 20));
+ pts3.push_back(point_data<int>(-100, 8));
+ polygon_data<int> p, p1; p.set(pts3.begin(), pts3.end());
+ polygon_45_data<int> p45, p451; p45.set(pts2.begin(), pts2.end());
+ polygon_90_data<int> p90, p901; p90.set(pts.begin(), pts.end());
+ polygon_with_holes_data<int> pwh, pwh1; pwh.set(pts3.begin(), pts3.end());
+ polygon_45_with_holes_data<int> p45wh, p45wh1; p45wh.set(pts2.begin(), pts2.end());
+ polygon_90_with_holes_data<int> p90wh, p90wh1; p90wh.set(pts.begin(), pts.end());
+ assign(p, p90);
+ assign(p, p45);
+ assign(p1, p);
+ //illegal: assign(p, p90wh);
+ //illegal: assign(p, p45wh);
+ //illegal: assign(p, pwh);
+
+ assign(p45, p90);
+ assign(p451, p45);
+ //illegal: assign(p45, p);
+ //illegal: assign(p45, p90wh);
+ //illegal: assign(p45, p45wh);
+ //illegal: assign(p45, pwh);
+
+ assign(p901, p90);
+ //illegal: assign(p90, p45);
+ //illegal: assign(p90, p);
+ //illegal: assign(p90, p90wh);
+ //illegal: assign(p90, p45wh);
+ //illegal: assign(p90, pwh);
+
+ assign(pwh, p90);
+ assign(pwh, p45);
+ assign(pwh, p);
+ assign(pwh, p90wh);
+ assign(pwh, p45wh);
+ assign(pwh1, pwh);
+
+ assign(p45wh, p90);
+ assign(p45wh, p45);
+ //illegal: assign(p45wh, p);
+ assign(p45wh, p90wh);
+ assign(p45wh1, p45wh);
+ //illegal: assign(p45wh, pwh);
+
+ assign(p90wh, p90);
+ //illegal: assign(p90wh, p45);
+ //illegal: assign(p90wh, p);
+ assign(p90wh1, p90wh);
+ //illegal: assign(p90wh, p45wh);
+ //illegal: assign(p90wh, pwh);
+ pts.clear();
+ pts.push_back(point_data<int>(0, 0));
+ pts.push_back(point_data<int>(3, 0));
+ pts.push_back(point_data<int>(0, 1));
+ p.set(pts.begin(), pts.end());
+ std::cout << std::endl; std::cout << (area(p90));
+ std::cout << std::endl; std::cout << (area(p45));
+ std::cout << std::endl; std::cout << (area(p));
+ std::cout << std::endl; std::cout << (area(p90wh));
+ std::cout << std::endl; std::cout << (area(p45wh));
+ std::cout << std::endl; std::cout << (area(pwh));
+ std::cout << std::endl;
+ point_data<int> pt(1, 1);
+ std::cout << contains(p, pt) << std::endl;
+ std::cout << contains(p90, pt) << std::endl;
+
+ interval_data<int> ivl = construct<interval_data<int> >(0, 10);
+ std::cout << get(ivl, LOW) << std::endl;
+ set(ivl, HIGH, 20);
+
+ std::cout << perimeter(p) << std::endl;
+ if(winding(p) == LOW) std::cout << "LOW" << std::endl;
+ if(winding(p) == HIGH) std::cout << "HIGH" << std::endl;
+ rectangle_data<polygon_long_long_type> rd;
+ std::cout << extents(rd, p) << std::endl;
+ std::cout << rd << std::endl;
+
+ boolean_op::testBooleanOr<int>();
+
+ std::vector<rectangle_data<int> > rects1, rects2;
+ rects2.push_back(rectangle_data<int>(0, 0, 10, 10));
+ print_is_polygon_90_set_concept((polygon_90_set_data<int>()));
+ print_is_mutable_polygon_90_set_concept((polygon_90_set_data<int>()));
+ print_is_polygon_90_set_concept((polygon_90_data<int>()));
+ print_is_polygon_90_set_concept((std::vector<polygon_90_data<int> >()));
+ assign(rects1, rects2);
+ polygon_90_set_data<int> ps90;
+ assign(ps90, rects2);
+ assign(rects2, ps90);
+ assign(ps90, p90);
+ assign(rects2, p90);
+ std::cout << p90 << std::endl;
+ for(unsigned int i = 0; i < rects2.size(); ++i) {
+ std::cout << rects2[i] << std::endl;
+ }
+ bloat(rects2, 10);
+ shrink(rects2[0], 10);
+ for(unsigned int i = 0; i < rects2.size(); ++i) {
+ std::cout << rects2[i] << std::endl;
+ }
+ move(rects2[0], HORIZONTAL, 30);
+ assign(rects1, rects2 + p90);
+ std::cout << "result of boolean or\n";
+ for(unsigned int i = 0; i < rects1.size(); ++i) {
+ std::cout << rects1[i] << std::endl;
+ }
+ rects1 -= p90;
+ std::cout << "result of boolean not\n";
+ for(unsigned int i = 0; i < rects1.size(); ++i) {
+ std::cout << rects1[i] << std::endl;
+ }
+ rects1 += p90;
+ std::cout << "result of boolean OR\n";
+ for(unsigned int i = 0; i < rects1.size(); ++i) {
+ std::cout << rects1[i] << std::endl;
+ }
+ rects1 *= p90;
+ std::cout << "result of boolean AND\n";
+ for(unsigned int i = 0; i < rects1.size(); ++i) {
+ std::cout << rects1[i] << std::endl;
+ }
+ rects1 ^= rects2;
+ std::cout << "result of boolean XOR\n";
+ for(unsigned int i = 0; i < rects1.size(); ++i) {
+ std::cout << rects1[i] << std::endl;
+ }
+ rects2.clear();
+ get_max_rectangles(rects2, p90);
+ std::cout << "result of max rectangles\n";
+ for(unsigned int i = 0; i < rects2.size(); ++i) {
+ std::cout << rects2[i] << std::endl;
+ }
+ rects2.clear();
+ //operator += and -= don't support polygons, so + and - should not exist
+// rects2 += p90 + 6;
+// std::cout << "result of resize\n";
+// for(unsigned int i = 0; i < rects2.size(); ++i) {
+// std::cout << rects2[i] << std::endl;
+// }
+// std::cout << "result of resize\n";
+ std::vector<polygon_90_with_holes_data<int> > polyswh1, polyswh2;
+// polyswh1 += p90 -2;
+// for(unsigned int i = 0; i < polyswh1.size(); ++i) {
+// std::cout << polyswh1[i] << std::endl;
+// }
+// std::cout << "result of resize\n";
+ std::vector<polygon_90_data<int> > polys1, polys2;
+ polys1 += p90;
+ polys1 -= 2;
+// polys1 += p90 -2;
+ for(unsigned int i = 0; i < polys1.size(); ++i) {
+ std::cout << polys1[i] << std::endl;
+ }
+
+ boolean_op_45<int>::testScan45(std::cout);
+ polygon_45_formation<int>::testPolygon45Formation(std::cout);
+ polygon_45_formation<int>::testPolygon45Tiling(std::cout);
+
+ axis_transformation atr;
+ transform(p, atr);
+ transform(p45, atr);
+ transform(p90, atr);
+ transform(pwh, atr);
+ transform(p45wh, atr);
+ transform(p90wh, atr);
+ scale_up(p, 2);
+ scale_up(p45, 2);
+ scale_up(p90, 2);
+ scale_up(pwh, 2);
+ scale_up(p45wh, 2);
+ scale_up(p90wh, 2);
+ scale_down(p, 2);
+ scale_down(p45, 2);
+ scale_down(p90, 2);
+ scale_down(pwh, 2);
+ scale_down(p45wh, 2);
+ scale_down(p90wh, 2);
+ std::vector<polygon_45_data<int> > p45s1, p45s2;
+ std::cout << equivalence(p45s1, p45s2) << std::endl;
+ std::cout << equivalence(p45, p45wh) << std::endl;
+ std::cout << equivalence(p90, p45wh) << std::endl;
+ gtl::assign(p45s1, p90);
+ p90 = polys1[0];
+ move(p90, orientation_2d(HORIZONTAL), 8);
+ std::cout << p90 << std::endl << p45wh << std::endl;
+ polygon_45_set_data<int> ps45 = p90 + p45wh;
+ assign(p45s1, ps45);
+ std::cout << "result\n";
+ for(unsigned int i = 0; i < p45s1.size(); ++i) {
+ std::cout << p45s1[i] << std::endl;
+ }
+ std::cout << equivalence(p, pwh) << std::endl;
+ std::cout << equivalence(p90, pwh) << std::endl;
+ std::cout << equivalence(p45, pwh) << std::endl;
+ std::cout << equivalence(pwh, pwh) << std::endl;
+ p + pwh;
+ p90 + pwh;
+ p45 + pwh;
+ std::cout << testInterval() << std::endl;
+ std::cout << testRectangle() << std::endl;
+ std::cout << testPolygon() << std::endl;
+ std::cout << testPropertyMerge() << std::endl;
+ std::cout << testPolygonAssign() << std::endl;
+ std::cout << testPolygonWithHoles() << std::endl;
+ std::cout << (polygon_arbitrary_formation<int>::testPolygonArbitraryFormationRect(std::cout)) << std::endl;
+ std::cout << (polygon_arbitrary_formation<int>::testPolygonArbitraryFormationP1(std::cout)) << std::endl;
+ std::cout << (polygon_arbitrary_formation<int>::testPolygonArbitraryFormationP2(std::cout)) << std::endl;
+ std::cout << (polygon_arbitrary_formation<int>::testPolygonArbitraryFormationPolys(std::cout)) << std::endl;
+ std::cout << (polygon_arbitrary_formation<int>::testPolygonArbitraryFormationSelfTouch1(std::cout)) << std::endl;
+ std::cout << (polygon_arbitrary_formation<int>::testPolygonArbitraryFormationSelfTouch2(std::cout)) << std::endl;
+ std::cout << (polygon_arbitrary_formation<int>::testPolygonArbitraryFormationSelfTouch3(std::cout)) << std::endl;
+ std::cout << (polygon_arbitrary_formation<int>::testSegmentIntersection(std::cout)) << std::endl;
+ std::cout << (property_merge<int, int>::test_insertion(std::cout)) << std::endl;
+ std::cout << (line_intersection<int>::test_verify_scan(std::cout)) << std::endl;
+ std::cout << (line_intersection<int>::test_validate_scan(std::cout)) << std::endl;
+ std::cout << (scanline<int, int>::test_scanline(std::cout)) << std::endl;
+ std::cout << (property_merge<int, int>::test_merge(std::cout)) << std::endl;
+ std::cout << (property_merge<int, int>::test_intersection(std::cout)) << std::endl;
+ std::cout << (polygon_arbitrary_formation<int>::testPolygonArbitraryFormationColinear(std::cout)) << std::endl;
+ std::cout << (property_merge<int, int>::test_manhattan_intersection(std::cout)) << std::endl;
+ std::cout << (test_arbitrary_boolean_op<int>(std::cout)) << std::endl;
+ }
+ {
+ polygon_set_data<int> psd;
+ rectangle_data<int> rect;
+ set_points(rect, point_data<int>(0, 0), point_data<int>(10, 10));
+ psd.insert(rect);
+ polygon_set_data<int> psd2;
+ set_points(rect, point_data<int>(5, 5), point_data<int>(15, 15));
+ psd2.insert(rect);
+ std::vector<polygon_data<int> > pv;
+ polygon_set_data<int> psd3;
+ psd3 = psd + psd2;
+ psd3.get(pv);
+ for(unsigned int i = 0; i < pv.size(); ++i) {
+ std::cout << pv[i] << std::endl;
+ }
+ psd += psd2;
+ pv.clear();
+ psd3.get(pv);
+ for(unsigned int i = 0; i < pv.size(); ++i) {
+ std::cout << pv[i] << std::endl;
+ }
+ }
+ {
+ polygon_90_set_data<int> psd;
+ rectangle_data<int> rect;
+ set_points(rect, point_data<int>(0, 0), point_data<int>(10, 10));
+ psd.insert(rect);
+ polygon_90_set_data<int> psd2;
+ set_points(rect, point_data<int>(5, 5), point_data<int>(15, 15));
+ psd2.insert(rect);
+ std::vector<polygon_90_data<int> > pv;
+ interact(psd, psd2);
+ assign(pv, psd);
+ for(unsigned int i = 0; i < pv.size(); ++i) {
+ std::cout << pv[i] << std::endl;
+ }
+
+ connectivity_extraction_90<int> ce;
+ ce.insert(pv[0]);
+ ce.insert(psd2);
+ std::vector<std::set<int> > graph(2);
+ ce.extract(graph);
+ if(graph[0].size() == 1) std::cout << "connectivity extraction is alive\n";
+
+ //std::vector<rectangle_data<polygon_long_long_type> > lobs;
+ //get_max_rectangles(lobs, psd);
+ //if(lobs.size() == 1) std::cout << "max rectangles is alive\n";
+
+ std::vector<rectangle_data<int> > rv;
+ rv.push_back(rect);
+ set_points(rect, point_data<int>(0, 0), point_data<int>(10, 10));
+ rv.push_back(rect);
+ self_intersect(rv);
+ if(rv.size() == 1) {
+ assign(rect, rv.back());
+ std::cout << rect << std::endl;
+ }
+
+ assign(rv, rv + 1);
+ std::cout << rv.size() << std::endl;
+ if(rv.size() == 1) {
+ assign(rect, rv.back());
+ std::cout << rect << std::endl;
+ }
+ assign(rv, rv - 1);
+ if(rv.size() == 1) {
+ assign(rect, rv.back());
+ std::cout << rect << std::endl;
+ }
+ rv += 1;
+ if(rv.size() == 1) {
+ assign(rect, rv.back());
+ std::cout << rect << std::endl;
+ }
+ rv -= 1;
+ if(rv.size() == 1) {
+ assign(rect, rv.back());
+ std::cout << rect << std::endl;
+ }
+ rv.clear();
+ set_points(rect, point_data<int>(0, 0), point_data<int>(10, 10));
+ rv.push_back(rect);
+ set_points(rect, point_data<int>(12, 12), point_data<int>(20, 20));
+ rv.push_back(rect);
+ grow_and(rv, 7);
+ if(rv.size() == 1) {
+ assign(rect, rv.back());
+ std::cout << rect << std::endl;
+ }
+ std::cout << area(rv) << std::endl;
+ std::cout << area(rv) << std::endl;
+
+ scale_up(rv, 10);
+ std::cout << area(rv) << std::endl;
+ scale_down(rv, 7);
+ std::cout << area(rv) << std::endl;
+ if(rv.size() == 1) {
+ assign(rect, rv.back());
+ std::cout << rect << std::endl;
+ }
+ keep(rv, 290, 300, 7, 24, 7, 24);
+ if(rv.size() == 1) {
+ assign(rect, rv.back());
+ std::cout << rect << std::endl;
+ }
+ keep(rv, 300, 310, 7, 24, 7, 24);
+ if(rv.empty()) std::cout << "keep is alive\n";
+ }
+ {
+// typedef int Unit;
+// typedef point_data<int> Point;
+// typedef interval_data<int> Interval;
+// typedef rectangle_data<int> Rectangle;
+// typedef polygon_90_data<int> Polygon;
+// typedef polygon_90_with_holes_data<int> PolygonWithHoles;
+// typedef polygon_45_data<int> Polygon45;
+// typedef polygon_45_with_holes_data<int> Polygon45WithHoles;
+// typedef polygon_90_set_data<int> PolygonSet;
+// //typedef polygon_45_set_data<int> Polygon45Set;
+// typedef axis_transformation AxisTransform;
+// typedef transformation<int> Transform;
+ //test polygon45 area, polygon45 with holes area
+ std::vector<Point> pts;
+ pts.clear();
+ pts.push_back(Point(10, 10));
+ pts.push_back(Point(15, 10));
+ pts.push_back(Point(10, 15));
+ Polygon45 polyHole;
+ polyHole.set(pts.begin(), pts.end());
+ pts.clear();
+ pts.push_back(Point(10, 0));
+ pts.push_back(Point(20, 10));
+ pts.push_back(Point(20, 30));
+ pts.push_back(Point(0, 50));
+ pts.push_back(Point(0, 10));
+ Polygon45WithHoles polyWHoles;
+ polyWHoles.set(pts.begin(), pts.end());
+ polyWHoles.set_holes(&polyHole, (&polyHole)+1);
+ std::cout << polyWHoles << std::endl;
+ std::cout << area(polyWHoles) << std::endl;
+ std::cout << area(polyWHoles) << std::endl;
+ //test polygon45, polygon45with holes transform
+ AxisTransform atr(AxisTransform::EAST_SOUTH);
+ Polygon45WithHoles p45wh(polyWHoles);
+ transform(polyWHoles, atr);
+ std::cout << polyWHoles << std::endl;
+ Transform tr(atr);
+ tr.invert();
+ transform(polyWHoles, tr);
+ std::cout << polyWHoles << std::endl;
+ if(area(polyWHoles) != 687.5) return 1;
+ //test polygon, polygon with holes transform
+ Polygon ph;
+ assign(ph, Rectangle(10, 10, 20, 20));
+ PolygonWithHoles pwh;
+ assign(pwh, Rectangle(0, 0, 100, 100));
+ pwh.set_holes(&ph, (&ph)+1);
+ std::cout << area(pwh) << std::endl;
+ transform(pwh, atr);
+ std::cout << pwh << std::endl;
+ std::cout << area(pwh) << std::endl;
+ transform(pwh, tr);
+ std::cout << pwh << std::endl;
+ std::cout << area(pwh) << std::endl;
+ if(area(pwh) != 9900) return 1;
+
+ //test point scale up / down
+ Point pt(10, 10);
+ scale_up(pt, 25);
+ if(pt != Point(250, 250)) return 1;
+ std::cout << pt << std::endl;
+ scale_down(pt, 25);
+ if(pt != Point(10, 10)) return 1;
+ std::cout << pt << std::endl;
+ scale_down(pt, 25);
+ if(pt != Point(0, 0)) return 1;
+ std::cout << pt << std::endl;
+
+ //test polygon, polygon with holes scale up down
+ PolygonWithHoles tmpPwh(pwh);
+ scale_up(pwh, 25);
+ std::cout << pwh << std::endl;
+ scale_down(pwh, 25);
+ if(area(pwh) != area(tmpPwh)) return 1;
+ std::cout << pwh << std::endl;
+ scale_down(pwh, 25);
+ std::cout << pwh << std::endl;
+ //test polygon45, polygon45 with holes is45
+ std::cout << is_45(polyHole) << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ pts.clear();
+ pts.push_back(Point(10, 10));
+ pts.push_back(Point(15, 10));
+ pts.push_back(Point(10, 16));
+ polyHole.set(pts.begin(), pts.end());
+ std::cout << is_45(polyHole) << std::endl;
+ if(is_45(polyHole) != false) return 1;
+ //test polygon45, polygon45 with holes snap 45
+ snap_to_45(polyHole);
+ std::cout << is_45(polyHole) << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ std::cout << polyHole << std::endl;
+ //test polygon45, polygon45 with holes scalue up down
+ scale_up(polyHole, 10000);
+ std::cout << polyHole << std::endl;
+ scale_down(polyHole, 3);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 5);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 7);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 13);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_up(polyHole, 3);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ pts.clear();
+ pts.push_back(Point(11, 1));
+ pts.push_back(Point(21, 11));
+ pts.push_back(Point(11, 21));
+ pts.push_back(Point(1, 11));
+ polyHole.set(pts.begin(), pts.end());
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 3);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_up(polyHole, 10000);
+ std::cout << polyHole << std::endl;
+ scale_down(polyHole, 3);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 5);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 7);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 13);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_up(polyHole, 3);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+ scale_down(polyHole, 2);
+ std::cout << is_45(polyHole) << " " << polyHole << std::endl;
+ if(is_45(polyHole) != true) return 1;
+
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_up(polyWHoles, 100013);
+ std::cout << polyWHoles << std::endl;
+ scale_down(polyWHoles, 3);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 2);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 3);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 2);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 3);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 2);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 3);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 2);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 3);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 2);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 3);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 3);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 2);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 3);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 2);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 3);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+ scale_down(polyWHoles, 2);
+ std::cout << is_45(polyWHoles) << " " << polyWHoles << std::endl;
+ if(is_45(polyWHoles) != true) return 1;
+
+ std::cout << (boolean_op_45<Unit>::testScan45(std::cout)) << std::endl;
+ std::cout << (polygon_45_formation<Unit>::testPolygon45Formation(std::cout)) << std::endl;
+ std::cout << (polygon_45_formation<Unit>::testPolygon45Tiling(std::cout)) << std::endl;
+
+
+ {
+ PolygonSet ps;
+ Rectangle rect;
+ ps.insert(Rectangle(0, 0, 10, 10));
+ std::cout << area(ps) << std::endl;
+ if(area(ps) != 100) return 1;
+ scale_up(ps, 3);
+ std::cout << area(ps) << std::endl;
+ if(area(ps) != 900) return 1;
+ scale_down(ps, 2);
+ std::cout << area(ps) << std::endl;
+ if(area(ps) != 225) return 1;
+ transform(ps, atr);
+ std::vector<Rectangle> rv;
+ rv.clear();
+ ps.get(rv);
+ if(rv.size() == 1) {
+ assign(rect, rv.back());
+ std::cout << rect << std::endl;
+ }
+ transform(ps, tr);
+ rv.clear();
+ ps.get(rv);
+ if(rv.size() == 1) {
+ assign(rect, rv.back());
+ std::cout << rect << std::endl;
+ }
+ }
+ //test polygon45set transform
+ pts.clear();
+ pts.push_back(Point(10, 10));
+ pts.push_back(Point(15, 10));
+ pts.push_back(Point(10, 15));
+ polyHole.set(pts.begin(), pts.end());
+ Polygon45Set ps451, ps452;
+ ps451.insert(polyHole);
+ ps452 = ps451;
+ std::cout << (ps451 == ps452) << std::endl;
+ if(ps451 != ps452) return 1;
+ ps451.transform(atr);
+ std::cout << (ps451 == ps452) << std::endl;
+ if(ps451 == ps452) return 1;
+ ps451.transform(tr);
+ std::cout << (ps451 == ps452) << std::endl;
+ if(ps451 != ps452) return 1;
+
+ //test polygon45set area
+ std::cout << area(ps451) << std::endl;
+ if(area(ps451) != 12.5) return 1;
+ //test polygon45set scale up down
+ ps451.scale_up(3);
+ std::cout << area(ps451) << std::endl;
+ if(area(ps451) != 112.5) return 1;
+ ps451.scale_down(2);
+ std::cout << area(ps451) << std::endl;
+ if(area(ps451) != 32) return 1;
+ //test polygonset scalue up down
+ }
+ {
+ std::cout << (testPolygon45SetRect()) << std::endl;
+ testPolygon45SetPerterbation(); //re-enable after non-intersection fix
+ testPolygon45Set();
+ testPolygon45SetDORA(); //re-enable after non-intersection fix
+ polygon_45_set_data<int> ps45_1, ps45_2, ps45_3;
+ ps45_1.insert(rectangle_data<int>(0, 0, 10, 10));
+ ps45_2.insert(rectangle_data<int>(5, 5, 15, 15));
+ std::vector<polygon_45_data<int> > p45s;
+ ps45_3 = ps45_1 | ps45_2;
+ ps45_3.get(p45s);
+ if(p45s.size()) std::cout << p45s[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ p45s.clear();
+ ps45_3 = ps45_1 + ps45_2;
+ ps45_3.get(p45s);
+ if(p45s.size()) std::cout << p45s[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ p45s.clear();
+ ps45_3 = ps45_1 * ps45_2;
+ ps45_3.get(p45s);
+ if(p45s.size()) std::cout << p45s[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ p45s.clear();
+ ps45_3 = ps45_1 - ps45_2;
+ ps45_3.get(p45s);
+ if(p45s.size()) std::cout << p45s[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ p45s.clear();
+ ps45_3 = ps45_1 ^ ps45_2;
+ ps45_3.get(p45s);
+ if(p45s.size() == 2) std::cout << p45s[0] << " " << p45s[1] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ std::vector<point_data<int> > pts;
+ pts.clear();
+ pts.push_back(point_data<int>(7, 0));
+ pts.push_back(point_data<int>(20, 13));
+ pts.push_back(point_data<int>(0, 13));
+ pts.push_back(point_data<int>(0, 0));
+ polygon_45_data<int> p45_1(pts.begin(), pts.end());
+ ps45_3.clear();
+ ps45_3.insert(p45_1);
+ p45s.clear();
+ ps45_3.get(p45s);
+ if(p45s.size()) std::cout << p45s[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ ps45_3 += 1;
+ p45s.clear();
+ ps45_3.get(p45s);
+ if(p45s.size()) std::cout << p45s[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ ps45_3 -= 1;
+ p45s.clear();
+ ps45_3.get(p45s);
+ if(p45s.size()) std::cout << p45s[0] << std::endl;
+ else {
+ std::cout << "test failed\n";
+ return 1;
+ }
+ }
+ {
+ polygon_90_set_data<int> p90sd;
+ p90sd.insert(rectangle_data<int>(0, 0, 10, 10));
+ std::vector<rectangle_data<int> > rects;
+ std::vector<polygon_90_data<int> > polys90;
+ std::vector<polygon_90_with_holes_data<int> > pwhs90;
+ assign(rects, p90sd);
+ assign(polys90, p90sd);
+ assign(pwhs90, p90sd);
+ std::cout << equivalence(rects, polys90) << std::endl;
+ std::cout << equivalence(pwhs90, polys90) << std::endl;
+ pwhs90.clear();
+ assign(pwhs90, polys90);
+ std::cout << equivalence(pwhs90, polys90) << std::endl;
+ }
+ {
+ polygon_45_set_data<int> p45sd;
+ p45sd.insert(rectangle_data<int>(0, 0, 10, 10));
+ std::vector<rectangle_data<int> > rects;
+ std::vector<polygon_45_data<int> > polys45;
+ std::vector<polygon_45_with_holes_data<int> > pwhs45;
+ get_trapezoids(polys45, p45sd);
+ assign(polys45, p45sd);
+ assign(pwhs45, p45sd);
+ std::cout << equivalence(pwhs45, polys45) << std::endl;
+ pwhs45.clear();
+ assign(pwhs45, polys45);
+ std::cout << equivalence(pwhs45, polys45) << std::endl;
+ }
+ {
+ polygon_set_data<int> psd;
+ psd.insert(rectangle_data<int>(0, 0, 10, 10));
+ std::vector<polygon_data<int> > polys;
+ std::vector<polygon_with_holes_data<int> > pwhs;
+ assign(polys, psd);
+ assign(pwhs, psd);
+ std::cout << equivalence(pwhs, polys) << std::endl;
+ pwhs.clear();
+ assign(pwhs, polys);
+ std::cout << equivalence(pwhs, polys) << std::endl;
+ }
+ {
+ typedef point_3d_data<int> Point3D;
+ Point3D p3d1(0, 1, 3), p3d2(0, 1, 2);
+ if(equivalence(p3d1, p3d2)) return 1;
+ if(euclidean_distance(p3d1, p3d2) != 1) return 1;
+ if(euclidean_distance(p3d1, p3d2, PROXIMAL) != 1) return 1;
+ if(manhattan_distance(p3d1, p3d2) != 1) return 1;
+ assign(p3d1, p3d2);
+ if(!equivalence(p3d1, p3d2)) return 1;
+ p3d1 = construct<Point3D>(x(p3d1), y(p3d1), z(p3d1));
+ if(!equivalence(p3d1, p3d2)) return 1;
+ convolve(p3d1, p3d2);
+ if(equivalence(p3d1, p3d2)) return 1;
+ deconvolve(p3d1, p3d2);
+ if(!equivalence(p3d1, p3d2)) return 1;
+ if(get(p3d1, PROXIMAL) != 2) return 1;
+ scale(p3d1, anisotropic_scale_factor<double>(2, 2, 2));
+ if(equivalence(p3d1, p3d2)) return 1;
+ scale_down(p3d1, 2);
+ if(!equivalence(p3d1, p3d2)) return 1;
+ scale_up(p3d1, 2);
+ if(equivalence(p3d1, p3d2)) return 1;
+ scale_down(p3d1, 2);
+ set(p3d1, PROXIMAL, 3);
+ if(equivalence(p3d1, p3d2)) return 1;
+ axis_transformation atr = axis_transformation::END;
+ transform(p3d1, atr);
+ if(z(p3d1) != -3) return 1;
+ z(p3d1, 2);
+ if(!equivalence(p3d1, p3d2)) return 1;
+ }
+ {
+ polygon_90_set_data<int> ps1(HORIZONTAL), ps2(VERTICAL);
+ ps1 += rectangle_data<int>(0, 0, 10, 120);
+ assign(ps1, ps2);
+ std::cout << equivalence(ps1, ps2) << std::endl;
+ }
+ {
+ std::vector<rectangle_data<polygon_long_long_type> > lobs, input;
+ input.push_back(rectangle_data<polygon_long_long_type>(0, 0, 10, 10));
+ input.push_back(rectangle_data<polygon_long_long_type>(10, 5, 15, 15));
+ get_max_rectangles(lobs, input);
+ if(lobs.size() == 3) std::cout << "max rectangles is correct\n";
+ }
+ {
+ polygon_set_data<int> ps1, ps2, ps3;
+ ps1.insert(rectangle_data<int>(0, 0, 10, 10));
+ ps2.insert(rectangle_data<int>(0, 0, 15, 5));
+ ps3.insert(rectangle_data<int>(0, 0, 20, 2));
+ std::cout << area(ps1 + ps2) << std::endl;
+ keep(ps1, 0, 100, 0, 100, 0, 100);
+ if(empty(ps1)) return 1;
+ rectangle_data<int> bbox;
+ extents(bbox, ps1);
+ std::cout << bbox << std::endl;
+ //resize(ps1, 1);
+ //shrink(ps1, 1);
+ //bloat(ps1, 1);
+ scale_up(ps1, 2);
+ scale_down(ps1, 2);
+ axis_transformation atr;
+ transform(ps1, atr);
+ std::cout << area(ps1) << std::endl;
+ if(area(ps1) != 100) return 1;
+ clear(ps1);
+ if(!empty(ps1)) return 1;
+ ps1 = ps2 * ps3;
+ ps1 *= ps2;
+ ps1 - ps2;
+ ps1 -= ps2;
+ ps1 ^ ps2;
+ ps1 ^= ps2;
+ ps1 | ps2;
+ ps1 |= ps2;
+ }
+ {
+ polygon_45_set_data<int> ps45_1, ps45_2;
+ ps45_1.insert(rectangle_data<int>(0, 0, 10, 10));
+ keep(ps45_1, 0, 1000, 0, 1000, 0, 1000);
+ std::cout << area(ps45_1) << std::endl;
+ std::cout << empty(ps45_1) << std::endl;
+ rectangle_data<int> bbox;
+ extents(bbox, ps45_1);
+ std::cout << bbox << std::endl;
+ resize(ps45_1, 1);
+ shrink(ps45_1, 1);
+ bloat(ps45_1, 1);
+ scale_up(ps45_1, 2);
+ scale_down(ps45_1, 2);
+ axis_transformation atr;
+ transform(ps45_1, atr);
+ std::cout << area(ps45_1) << std::endl;
+ if(area(ps45_1) != 144) return 1;
+ clear(ps45_1);
+ if(!empty(ps45_1)) return 1;
+ }
+ {
+ std::vector<polygon_45_data<int> > p45v;
+ p45v + p45v;
+ p45v *= p45v;
+ p45v += p45v;
+ p45v - p45v;
+ p45v -= p45v;
+ p45v ^ p45v;
+ p45v ^= p45v;
+ p45v | p45v;
+ p45v |= p45v;
+ p45v + 1;
+ p45v += 1;
+ p45v - 1;
+ p45v -= 1;
+ p45v + (p45v + p45v);
+ }
+ {
+ polygon_45_set_data<int> ps45;
+ polygon_90_set_data<int> ps90;
+ std::vector<polygon_90_with_holes_data<int> > p90whv;
+ ps45.insert(ps90);
+ ps45.insert(p90whv);
+ ps45.insert(p90whv + p90whv);
+
+ ps45.insert(polygon_90_with_holes_data<int>());
+ polygon_with_holes_data<int> pwh;
+ snap_to_45(pwh);
+ }
+ {
+ point_data<int> pt(1,2);
+ point_3d_data<int> pt3d(1,2,3);
+ equivalence(pt, pt3d);
+ deconvolve(pt, pt3d);
+ manhattan_distance(pt, pt3d);
+ move(pt, HORIZONTAL, 1);
+ scale(pt, anisotropic_scale_factor<double>(2, 2, 2));
+ pt = pt3d;
+ }
+ {
+ polygon_90_set_data<int> ps90_1, ps90_2;
+ ps90_1.insert(rectangle_data<int>(0, 0, 10, 10));
+ keep(ps90_1, 0, 1000, 0, 1000, 0, 1000);
+ std::cout << area(ps90_1) << std::endl;
+ std::cout << empty(ps90_1) << std::endl;
+ rectangle_data<int> bbox;
+ extents(bbox, ps90_1);
+ std::cout << bbox << std::endl;
+ resize(ps90_1, 1);
+ shrink(ps90_1, 1);
+ bloat(ps90_1, 1);
+ scale_up(ps90_1, 2);
+ scale_down(ps90_1, 2);
+ scale(ps90_1, anisotropic_scale_factor<double>(2, 2, 2));
+ scale(ps90_1, anisotropic_scale_factor<double>(0.5, 0.5, 0.5));
+ axis_transformation atr;
+ transform(ps90_1, atr);
+ std::cout << area(ps90_1) << std::endl;
+ if(area(ps90_1) != 144) return 1;
+ clear(ps90_1);
+ if(!empty(ps90_1)) return 1;
+ }
+ if(!nonInteger45StessTest()) return 1;
+ {
+ using namespace gtl;
+ typedef polygon_45_property_merge<int, int> p45pm;
+ p45pm::MergeSetData msd;
+ polygon_45_set_data<int> ps;
+ ps += rectangle_data<int>(0, 0, 10, 10);
+ p45pm::populateMergeSetData(msd, ps.begin(), ps.end(), 444);
+ ps.clear();
+ ps += rectangle_data<int>(5, 5, 15, 15);
+ p45pm::populateMergeSetData(msd, ps.begin(), ps.end(), 333);
+ std::map<std::set<int>, polygon_45_set_data<int> > result;
+ p45pm::performMerge(result, msd);
+ int i = 0;
+ for(std::map<std::set<int>, polygon_45_set_data<int> >::iterator itr = result.begin();
+ itr != result.end(); ++itr) {
+ for(std::set<int>::const_iterator itr2 = (*itr).first.begin();
+ itr2 != (*itr).first.end(); ++itr2) {
+ std::cout << *itr2 << " ";
+ } std::cout << " : ";
+ std::cout << area((*itr).second) << std::endl;
+ if(i == 1) {
+ if(area((*itr).second) != 100) return 1;
+ } else
+ if(area((*itr).second) != 300) return 1;
+ ++i;
+ }
+
+
+ property_merge_45<int, int> pm;
+ pm.insert(rectangle_data<int>(0, 0, 10, 10), 444);
+ pm.insert(rectangle_data<int>(5, 5, 15, 15), 333);
+ std::map<std::set<int>, polygon_45_set_data<int> > mp;
+ pm.merge(mp);
+ i = 0;
+ for(std::map<std::set<int>, polygon_45_set_data<int> >::iterator itr = mp.begin();
+ itr != mp.end(); ++itr) {
+ for(std::set<int>::const_iterator itr2 = (*itr).first.begin();
+ itr2 != (*itr).first.end(); ++itr2) {
+ std::cout << *itr2 << " ";
+ } std::cout << " : ";
+ std::cout << area((*itr).second) << std::endl;
+ if(i == 1) {
+ if(area((*itr).second) != 25) return 1;
+ } else
+ if(area((*itr).second) != 75) return 1;
+ ++i;
+ }
+ std::map<std::vector<int>, polygon_45_set_data<int> > mp2;
+ pm.merge(mp2);
+ i = 0;
+ for(std::map<std::vector<int>, polygon_45_set_data<int> >::iterator itr = mp2.begin();
+ itr != mp2.end(); ++itr) {
+ for(std::vector<int>::const_iterator itr2 = (*itr).first.begin();
+ itr2 != (*itr).first.end(); ++itr2) {
+ std::cout << *itr2 << " ";
+ } std::cout << " : ";
+ std::cout << area((*itr).second) << std::endl;
+ if(i == 1) {
+ if(area((*itr).second) != 25) return 1;
+ } else
+ if(area((*itr).second) != 75) return 1;
+ ++i;
+ }
+ }
+ {
+ std::cout << trapezoid_arbitrary_formation<int>::testTrapezoidArbitraryFormationRect(std::cout) << std::endl;
+ std::cout << trapezoid_arbitrary_formation<int>::testTrapezoidArbitraryFormationP1(std::cout) << std::endl;
+ std::cout << trapezoid_arbitrary_formation<int>::testTrapezoidArbitraryFormationP2(std::cout) << std::endl;
+ std::cout << trapezoid_arbitrary_formation<int>::testTrapezoidArbitraryFormationPolys(std::cout) << std::endl;
+ std::cout << polygon_arbitrary_formation<int>::testPolygonArbitraryFormationSelfTouch1(std::cout) << std::endl;
+ std::cout << trapezoid_arbitrary_formation<int>::testTrapezoidArbitraryFormationSelfTouch1(std::cout) << std::endl;
+ typedef rectangle_data<int> Rectangle;
+ polygon_set_data<int> ps;
+ ps += Rectangle(0, 1, 10, 11);
+ ps += Rectangle(5, 6, 15, 16);
+ std::vector<polygon_data<int> > polys;
+ ps.get_trapezoids(polys);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ ps.transform(axis_transformation(axis_transformation::FLIP_X));
+ polys.clear();
+ ps.get_trapezoids(polys);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ polys.clear();
+ ps.get_trapezoids(polys, HORIZONTAL);
+ for(unsigned int i = 0; i < polys.size(); ++i) {
+ std::cout << polys[i] << std::endl;
+ }
+ }
+
+ if(!test_aa_touch()) {
+ std::cout << "test_aa_touch failed\n";
+ return 1;
+ }
+ if(!test_aa_touch_ur()) {
+ std::cout << "test_aa_touch_ur failed\n";
+ return 1;
+ }
+ if(!test_aa_touch_ur()) {
+ std::cout << "test_aa_touch_ur failed\n";
+ return 1;
+ }
+ if(!test_aa_touch_r()) {
+ std::cout << "test_aa_touch_r failed\n";
+ return 1;
+ }
+ if(!test_aa_touch_boundaries()) {
+ std::cout << "test_aa_touch_boundaries failed\n";
+ return 1;
+ }
+ if(!test_aa_concept_interact()) {
+ std::cout << "test_aa_concept_interact failed\n";
+ return 1;
+ }
+
+ std::cout << "ALL TESTS COMPLETE\n";
+ return 0;
+}


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk