566 lines
25 KiB
HTML
566 lines
25 KiB
HTML
|
|
<!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"
|
|||
|
|
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" lang="en">
|
|||
|
|
<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"> -->
|
|||
|
|
</head>
|
|||
|
|
<body>
|
|||
|
|
<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
|
|||
|
|
src="images/boost.png" border="0" height="86" width="277" /><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><a href="index.htm">Boost.Polygon Main Page</a></li>
|
|||
|
|
<li><a href="gtl_design_overview.htm">Design Overview</a></li>
|
|||
|
|
<li>Isotropy</li>
|
|||
|
|
<li><a href="gtl_coordinate_concept.htm">Coordinate Concept</a></li>
|
|||
|
|
<li><a href="gtl_interval_concept.htm">Interval Concept</a></li>
|
|||
|
|
<li><a href="gtl_point_concept.htm">Point Concept</a></li>
|
|||
|
|
<li><a href="gtl_segment_concept.htm">Segment Concept</a></li>
|
|||
|
|
<li><a href="gtl_rectangle_concept.htm">Rectangle Concept</a></li>
|
|||
|
|
<li><a href="gtl_polygon_90_concept.htm">Polygon 90 Concept</a></li>
|
|||
|
|
<li><a href="gtl_polygon_90_with_holes_concept.htm">Polygon 90
|
|||
|
|
With Holes Concept</a></li>
|
|||
|
|
<li><a href="gtl_polygon_45_concept.htm">Polygon 45 Concept</a></li>
|
|||
|
|
<li><a href="gtl_polygon_45_with_holes_concept.htm">Polygon 45
|
|||
|
|
With Holes Concept</a></li>
|
|||
|
|
<li><a href="gtl_polygon_concept.htm">Polygon Concept</a></li>
|
|||
|
|
<li><a href="gtl_polygon_with_holes_concept.htm">Polygon With
|
|||
|
|
Holes Concept</a></li>
|
|||
|
|
<li><a href="gtl_polygon_90_set_concept.htm">Polygon 90 Set
|
|||
|
|
Concept</a></li>
|
|||
|
|
<li><a href="gtl_polygon_45_set_concept.htm">Polygon 45 Set
|
|||
|
|
Concept</a></li>
|
|||
|
|
<li><a href="gtl_polygon_set_concept.htm">Polygon Set Concept</a></li>
|
|||
|
|
<li><a href="gtl_connectivity_extraction_90.htm">Connectivity
|
|||
|
|
Extraction 90</a></li>
|
|||
|
|
<li><a href="gtl_connectivity_extraction_45.htm">Connectivity
|
|||
|
|
Extraction 45</a></li>
|
|||
|
|
<li><a href="gtl_connectivity_extraction.htm">Connectivity
|
|||
|
|
Extraction</a></li>
|
|||
|
|
<li><a href="gtl_property_merge_90.htm">Property Merge 90</a></li>
|
|||
|
|
<li><a href="gtl_property_merge_45.htm">Property Merge 45</a></li>
|
|||
|
|
<li><a href="gtl_property_merge.htm">Property Merge</a></li>
|
|||
|
|
<li><a href="voronoi_main.htm">Voronoi Main Page<br />
|
|||
|
|
</a></li>
|
|||
|
|
<li><a href="voronoi_benchmark.htm">Voronoi Benchmark</a><br />
|
|||
|
|
</li>
|
|||
|
|
<li><a href="voronoi_builder.htm">Voronoi Builder</a></li>
|
|||
|
|
<li><a href="voronoi_diagram.htm">Voronoi Diagram</a></li>
|
|||
|
|
</ul>
|
|||
|
|
<h3 class="navbar">Other Resources</h3>
|
|||
|
|
<ul>
|
|||
|
|
<li><a href="GTL_boostcon2009.pdf">GTL Boostcon 2009 Paper</a></li>
|
|||
|
|
<li><a href="GTL_boostcon_draft03.pdf">GTL Boostcon 2009
|
|||
|
|
Presentation</a></li>
|
|||
|
|
<li><a href="analysis.htm">Performance Analysis</a></li>
|
|||
|
|
<li><a href="gtl_tutorial.htm">Layout Versus Schematic Tutorial</a></li>
|
|||
|
|
<li><a href="gtl_minkowski_tutorial.htm">Minkowski Sum Tutorial</a></li>
|
|||
|
|
<li><a href="voronoi_basic_tutorial.htm">Voronoi Basic Tutorial</a></li>
|
|||
|
|
<li><a href="voronoi_advanced_tutorial.htm">Voronoi Advanced
|
|||
|
|
Tutorial</a></li>
|
|||
|
|
</ul>
|
|||
|
|
</div>
|
|||
|
|
<h3 class="navbar">Polygon Sponsor</h3>
|
|||
|
|
<div style="padding: 5px;" align="center"> <img
|
|||
|
|
src="images/intlogo.gif" border="0" height="51" width="127" /><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>
|
|||
|
|
<p align="left">What is isotropy?</p>
|
|||
|
|
<p:colorscheme
|
|||
|
|
colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00">
|
|||
|
|
</p:colorscheme>
|
|||
|
|
<div class="O" style="text-align: center;" v:shape="_x0000_s1026">
|
|||
|
|
<p style="text-align: left;"> <span style="">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 <an <i>isotropic</i> crystal></span></p>
|
|||
|
|
</div>
|
|||
|
|
<p align="left">In computational geometry things are often
|
|||
|
|
symmetric and invariant to direction and orientation. This
|
|||
|
|
invariance to direction is called isotropy. 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. To do this effectively we provide an internally
|
|||
|
|
consistent set of isotropic data types to represent program data that
|
|||
|
|
describes orientations and directions. 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. Together they
|
|||
|
|
create a language for describing isotropic situations
|
|||
|
|
programmatically. 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. Isotropic programming
|
|||
|
|
style is particularly applicable to working with points, intervals and
|
|||
|
|
rectangles. 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. 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>
|
|||
|
|
<p align="left">The direction_1d data type has two possible
|
|||
|
|
states. These are the positive and negative directions on a
|
|||
|
|
continuum such as the number line. These states can be
|
|||
|
|
described by one of several direction_1d_enum values: We make
|
|||
|
|
clockwise and counterclockwise winding orientation of polygons a
|
|||
|
|
direction 1d value instead of providing a separate winding_orientation
|
|||
|
|
data type. This is because winding orientation can be thought of
|
|||
|
|
as positive and negative directions in a 1d (although cyclic)
|
|||
|
|
space. 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 "right hand rule" 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 />
|
|||
|
|
|
|||
|
|
LEFT = 0, RIGHT = 1,<br />
|
|||
|
|
|
|||
|
|
CLOCKWISE = 0, COUNTERCLOCKWISE = 1,<br />
|
|||
|
|
|
|||
|
|
REVERSE = 0, FORWARD = 1,<br />
|
|||
|
|
|
|||
|
|
NEGATIVE = 0, POSITIVE = 1 };</font></p>
|
|||
|
|
<h2>Member Functions</h2>
|
|||
|
|
<table id="table1" border="1" width="100%">
|
|||
|
|
<tbody>
|
|||
|
|
<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& 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& 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& 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& <b>operator=</b>(const
|
|||
|
|
direction_1d dir)</font></td>
|
|||
|
|
<td>Assignment</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_1d& <b>operator==</b>(const
|
|||
|
|
direction_1d dir) const</font></td>
|
|||
|
|
<td>Equivalence</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_1d& <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. Auto-cast to int is disallowed for type safety
|
|||
|
|
reasons.</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_1d& <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>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
<h2>orientation_2d</h2>
|
|||
|
|
<p> </p>
|
|||
|
|
<p align="left">The orientation_2d data type has two possible
|
|||
|
|
states. These are the horizontal and vertical axis of a 2d
|
|||
|
|
Cartesian coordinate system. 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 id="table2" border="1" width="100%">
|
|||
|
|
<tbody>
|
|||
|
|
<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& 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& 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&
|
|||
|
|
<b>operator=</b>(const orientation_2d o)</font></td>
|
|||
|
|
<td>Assignment</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">orientation_2d&
|
|||
|
|
<b>operator==</b>(const orientation_2d o) const</font></td>
|
|||
|
|
<td>Equivalence</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">orientation_2d&
|
|||
|
|
<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. Auto-cast to int is disallowed for type safety
|
|||
|
|
reasons</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">orientation_2d&
|
|||
|
|
<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>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
<h2>direction_2d</h2>
|
|||
|
|
<p> </p>
|
|||
|
|
<p align="left">The direction_2d data type has four possible
|
|||
|
|
states. These are the cardinal directions of the 2D Cartesian
|
|||
|
|
coordinate system. 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 id="table3" border="1" width="100%">
|
|||
|
|
<tbody>
|
|||
|
|
<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& that)</font></td>
|
|||
|
|
<td>Copy construct.</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_1d& <b>operator=</b>(const
|
|||
|
|
direction_2d dir)</font></td>
|
|||
|
|
<td>Assignment</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_1d& <b>operator==</b>(const
|
|||
|
|
direction_2d dir) const</font></td>
|
|||
|
|
<td>Equivalence</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_1d& <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. Auto-cast to int is disallowed for type safety
|
|||
|
|
reasons.</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_2d& <b>backward</b>()</font></td>
|
|||
|
|
<td>Inverts direction.</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_2d& <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& <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& <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>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
<h2>orientation_3d</h2>
|
|||
|
|
<p> </p>
|
|||
|
|
<p align="left">The orientation_3d data type has three possible
|
|||
|
|
states. These are the horizontal, vertical and proximal (x, y, z)
|
|||
|
|
axis of a 3d Cartesian coordinate system. 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 id="table6" border="1" width="100%">
|
|||
|
|
<tbody>
|
|||
|
|
<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& 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& 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& 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& 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& that)</font></td>
|
|||
|
|
<td>Construct from constant value</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">orientation_3d&
|
|||
|
|
<b>operator=</b>(const orientation_3d o)</font></td>
|
|||
|
|
<td>Assignment</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">orientation_3d&
|
|||
|
|
<b>operator==</b>(const orientation_3d o) const</font></td>
|
|||
|
|
<td>Equivalence</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">orientation_3d&
|
|||
|
|
<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. 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>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
<h2>direction_3d</h2>
|
|||
|
|
<p> </p>
|
|||
|
|
<p align="left">The direction_3d data type has six possible
|
|||
|
|
states. These are the cardinal directions of the 3D Cartesian
|
|||
|
|
coordinate system. 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 id="table5" border="1" width="100%">
|
|||
|
|
<tbody>
|
|||
|
|
<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& 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& <b>operator=</b>(const
|
|||
|
|
direction_3d dir)</font></td>
|
|||
|
|
<td>Assignment</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_3d& <b>operator==</b>(const
|
|||
|
|
direction_3d dir) const</font></td>
|
|||
|
|
<td>Equivalence</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_2d& <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. Auto-cast to int is disallowed for type safety
|
|||
|
|
reasons.</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td width="586"><font face="Courier New">direction_1d& <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>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td style="background-color: rgb(238, 238, 238);" nowrap="1"
|
|||
|
|
valign="top"> </td>
|
|||
|
|
<td
|
|||
|
|
style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;"
|
|||
|
|
valign="top" width="100%">
|
|||
|
|
<table class="docinfo" id="table7" frame="void" rules="none">
|
|||
|
|
<colgroup> <col class="docinfo-name" /><col
|
|||
|
|
class="docinfo-content" /> </colgroup> <tbody valign="top">
|
|||
|
|
<tr>
|
|||
|
|
<th class="docinfo-name">Copyright:</th>
|
|||
|
|
<td>Copyright <20> 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</a>)</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
</body>
|
|||
|
|
</html>
|