<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>SphericalPolygonsSet (Apache Commons Math 3.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="SphericalPolygonsSet (Apache Commons Math 3.3 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SphericalPolygonsSet.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SubCircle.html" title="class in org.apache.commons.math3.geometry.spherical.twod"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html" target="_top">Frames</a></li>
<li><a href="SphericalPolygonsSet.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.math3.geometry.spherical.twod</div>
<h2 title="Class SphericalPolygonsSet" class="title">Class SphericalPolygonsSet</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html" title="class in org.apache.commons.math3.geometry.partitioning">org.apache.commons.math3.geometry.partitioning.AbstractRegion</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>,<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/oned/Sphere1D.html" title="class in org.apache.commons.math3.geometry.spherical.oned">Sphere1D</a>&gt;</li>
<li>
<ul class="inheritance">
<li>org.apache.commons.math3.geometry.spherical.twod.SphericalPolygonsSet</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/Region.html" title="interface in org.apache.commons.math3.geometry.partitioning">Region</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>&gt;</dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">SphericalPolygonsSet</span>
extends <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html" title="class in org.apache.commons.math3.geometry.partitioning">AbstractRegion</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>,<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/oned/Sphere1D.html" title="class in org.apache.commons.math3.geometry.spherical.oned">Sphere1D</a>&gt;</pre>
<div class="block">This class represents a region on the 2-sphere: a set of spherical polygons.</div>
<dl><dt><span class="strong">Since:</span></dt>
  <dd>3.3</dd>
<dt><span class="strong">Version:</span></dt>
  <dd>$Id: SphericalPolygonsSet.java 1591835 2014-05-02 09:04:01Z tn $</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested_class_summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="nested_classes_inherited_from_class_org.apache.commons.math3.geometry.partitioning.Region">
<!--   -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.commons.math3.geometry.partitioning.<a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/Region.html" title="interface in org.apache.commons.math3.geometry.partitioning">Region</a></h3>
<code><a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/Region.Location.html" title="enum in org.apache.commons.math3.geometry.partitioning">Region.Location</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#SphericalPolygonsSet(org.apache.commons.math3.geometry.partitioning.BSPTree, double)">SphericalPolygonsSet</a></strong>(<a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/BSPTree.html" title="class in org.apache.commons.math3.geometry.partitioning">BSPTree</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>&gt;&nbsp;tree,
                    double&nbsp;tolerance)</code>
<div class="block">Build a polygons set from a BSP tree.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#SphericalPolygonsSet(java.util.Collection, double)">SphericalPolygonsSet</a></strong>(<a href="http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/SubHyperplane.html" title="interface in org.apache.commons.math3.geometry.partitioning">SubHyperplane</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>&gt;&gt;&nbsp;boundary,
                    double&nbsp;tolerance)</code>
<div class="block">Build a polygons set from a Boundary REPresentation (B-rep).</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#SphericalPolygonsSet(double)">SphericalPolygonsSet</a></strong>(double&nbsp;tolerance)</code>
<div class="block">Build a polygons set representing the whole real 2-sphere.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#SphericalPolygonsSet(double, org.apache.commons.math3.geometry.spherical.twod.S2Point...)">SphericalPolygonsSet</a></strong>(double&nbsp;hyperplaneThickness,
                    <a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/S2Point.html" title="class in org.apache.commons.math3.geometry.spherical.twod">S2Point</a>...&nbsp;vertices)</code>
<div class="block">Build a polygon from a simple list of vertices.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#SphericalPolygonsSet(org.apache.commons.math3.geometry.euclidean.threed.Vector3D, double)">SphericalPolygonsSet</a></strong>(<a href="../../../../../../../org/apache/commons/math3/geometry/euclidean/threed/Vector3D.html" title="class in org.apache.commons.math3.geometry.euclidean.threed">Vector3D</a>&nbsp;pole,
                    double&nbsp;tolerance)</code>
<div class="block">Build a polygons set representing a hemisphere.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#SphericalPolygonsSet(org.apache.commons.math3.geometry.euclidean.threed.Vector3D, org.apache.commons.math3.geometry.euclidean.threed.Vector3D, double, int, double)">SphericalPolygonsSet</a></strong>(<a href="../../../../../../../org/apache/commons/math3/geometry/euclidean/threed/Vector3D.html" title="class in org.apache.commons.math3.geometry.euclidean.threed">Vector3D</a>&nbsp;center,
                    <a href="../../../../../../../org/apache/commons/math3/geometry/euclidean/threed/Vector3D.html" title="class in org.apache.commons.math3.geometry.euclidean.threed">Vector3D</a>&nbsp;meridian,
                    double&nbsp;outsideRadius,
                    int&nbsp;n,
                    double&nbsp;tolerance)</code>
<div class="block">Build a polygons set representing a regular polygon.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html" title="class in org.apache.commons.math3.geometry.spherical.twod">SphericalPolygonsSet</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#buildNew(org.apache.commons.math3.geometry.partitioning.BSPTree)">buildNew</a></strong>(<a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/BSPTree.html" title="class in org.apache.commons.math3.geometry.partitioning">BSPTree</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>&gt;&nbsp;tree)</code>
<div class="block">Build a region using the instance as a prototype.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#computeGeometricalProperties()">computeGeometricalProperties</a></strong>()</code>
<div class="block">Compute some geometrical properties.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Vertex.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Vertex</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#getBoundaryLoops()">getBoundaryLoops</a></strong>()</code>
<div class="block">Get the boundary loops of the polygon.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../org/apache/commons/math3/geometry/enclosing/EnclosingBall.html" title="class in org.apache.commons.math3.geometry.enclosing">EnclosingBall</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>,<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/S2Point.html" title="class in org.apache.commons.math3.geometry.spherical.twod">S2Point</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#getEnclosingCap()">getEnclosingCap</a></strong>()</code>
<div class="block">Get a spherical cap enclosing the polygon.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_org.apache.commons.math3.geometry.partitioning.AbstractRegion">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.commons.math3.geometry.partitioning.<a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html" title="class in org.apache.commons.math3.geometry.partitioning">AbstractRegion</a></h3>
<code><a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#applyTransform(org.apache.commons.math3.geometry.partitioning.Transform)">applyTransform</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#checkPoint(org.apache.commons.math3.geometry.partitioning.BSPTree, org.apache.commons.math3.geometry.Point)">checkPoint</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#checkPoint(org.apache.commons.math3.geometry.partitioning.BSPTree, org.apache.commons.math3.geometry.Vector)">checkPoint</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#checkPoint(org.apache.commons.math3.geometry.Point)">checkPoint</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#checkPoint(org.apache.commons.math3.geometry.Vector)">checkPoint</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#contains(org.apache.commons.math3.geometry.partitioning.Region)">contains</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#copySelf()">copySelf</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#getBarycenter()">getBarycenter</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#getBoundarySize()">getBoundarySize</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#getSize()">getSize</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#getTolerance()">getTolerance</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#getTree(boolean)">getTree</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#intersection(org.apache.commons.math3.geometry.partitioning.SubHyperplane)">intersection</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#isEmpty()">isEmpty</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#isEmpty(org.apache.commons.math3.geometry.partitioning.BSPTree)">isEmpty</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#isFull()">isFull</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#isFull(org.apache.commons.math3.geometry.partitioning.BSPTree)">isFull</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#projectToBoundary(org.apache.commons.math3.geometry.Point)">projectToBoundary</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#setBarycenter(org.apache.commons.math3.geometry.Point)">setBarycenter</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#setBarycenter(org.apache.commons.math3.geometry.Vector)">setBarycenter</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#setSize(double)">setSize</a>, <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#side(org.apache.commons.math3.geometry.partitioning.Hyperplane)">side</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="SphericalPolygonsSet(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SphericalPolygonsSet</h4>
<pre>public&nbsp;SphericalPolygonsSet(double&nbsp;tolerance)</pre>
<div class="block">Build a polygons set representing the whole real 2-sphere.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>tolerance</code> - below which points are consider to be identical</dd></dl>
</li>
</ul>
<a name="SphericalPolygonsSet(org.apache.commons.math3.geometry.euclidean.threed.Vector3D, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SphericalPolygonsSet</h4>
<pre>public&nbsp;SphericalPolygonsSet(<a href="../../../../../../../org/apache/commons/math3/geometry/euclidean/threed/Vector3D.html" title="class in org.apache.commons.math3.geometry.euclidean.threed">Vector3D</a>&nbsp;pole,
                    double&nbsp;tolerance)</pre>
<div class="block">Build a polygons set representing a hemisphere.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>pole</code> - pole of the hemisphere (the pole is in the inside half)</dd><dd><code>tolerance</code> - below which points are consider to be identical</dd></dl>
</li>
</ul>
<a name="SphericalPolygonsSet(org.apache.commons.math3.geometry.euclidean.threed.Vector3D, org.apache.commons.math3.geometry.euclidean.threed.Vector3D, double, int, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SphericalPolygonsSet</h4>
<pre>public&nbsp;SphericalPolygonsSet(<a href="../../../../../../../org/apache/commons/math3/geometry/euclidean/threed/Vector3D.html" title="class in org.apache.commons.math3.geometry.euclidean.threed">Vector3D</a>&nbsp;center,
                    <a href="../../../../../../../org/apache/commons/math3/geometry/euclidean/threed/Vector3D.html" title="class in org.apache.commons.math3.geometry.euclidean.threed">Vector3D</a>&nbsp;meridian,
                    double&nbsp;outsideRadius,
                    int&nbsp;n,
                    double&nbsp;tolerance)</pre>
<div class="block">Build a polygons set representing a regular polygon.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>center</code> - center of the polygon (the center is in the inside half)</dd><dd><code>meridian</code> - point defining the reference meridian for first polygon vertex</dd><dd><code>outsideRadius</code> - distance of the vertices to the center</dd><dd><code>n</code> - number of sides of the polygon</dd><dd><code>tolerance</code> - below which points are consider to be identical</dd></dl>
</li>
</ul>
<a name="SphericalPolygonsSet(org.apache.commons.math3.geometry.partitioning.BSPTree, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SphericalPolygonsSet</h4>
<pre>public&nbsp;SphericalPolygonsSet(<a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/BSPTree.html" title="class in org.apache.commons.math3.geometry.partitioning">BSPTree</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>&gt;&nbsp;tree,
                    double&nbsp;tolerance)</pre>
<div class="block">Build a polygons set from a BSP tree.
 <p>The leaf nodes of the BSP tree <em>must</em> have a
 <code>Boolean</code> attribute representing the inside status of
 the corresponding cell (true for inside cells, false for outside
 cells). In order to avoid building too many small objects, it is
 recommended to use the predefined constants
 <code>Boolean.TRUE</code> and <code>Boolean.FALSE</code></p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>tree</code> - inside/outside BSP tree representing the region</dd><dd><code>tolerance</code> - below which points are consider to be identical</dd></dl>
</li>
</ul>
<a name="SphericalPolygonsSet(java.util.Collection, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SphericalPolygonsSet</h4>
<pre>public&nbsp;SphericalPolygonsSet(<a href="http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/SubHyperplane.html" title="interface in org.apache.commons.math3.geometry.partitioning">SubHyperplane</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>&gt;&gt;&nbsp;boundary,
                    double&nbsp;tolerance)</pre>
<div class="block">Build a polygons set from a Boundary REPresentation (B-rep).
 <p>The boundary is provided as a collection of <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/SubHyperplane.html" title="interface in org.apache.commons.math3.geometry.partitioning"><code>sub-hyperplanes</code></a>. Each sub-hyperplane has the
 interior part of the region on its minus side and the exterior on
 its plus side.</p>
 <p>The boundary elements can be in any order, and can form
 several non-connected sets (like for example polygons with holes
 or a set of disjoint polygons considered as a whole). In
 fact, the elements do not even need to be connected together
 (their topological connections are not used here). However, if the
 boundary does not really separate an inside open from an outside
 open (open having here its topological meaning), then subsequent
 calls to the <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/Region.html#checkPoint(org.apache.commons.math3.geometry.Point)"><code>checkPoint</code></a> method will not be meaningful anymore.</p>
 <p>If the boundary is empty, the region will represent the whole
 space.</p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>boundary</code> - collection of boundary elements, as a
 collection of <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/SubHyperplane.html" title="interface in org.apache.commons.math3.geometry.partitioning"><code>SubHyperplane</code></a> objects</dd><dd><code>tolerance</code> - below which points are consider to be identical</dd></dl>
</li>
</ul>
<a name="SphericalPolygonsSet(double, org.apache.commons.math3.geometry.spherical.twod.S2Point...)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SphericalPolygonsSet</h4>
<pre>public&nbsp;SphericalPolygonsSet(double&nbsp;hyperplaneThickness,
                    <a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/S2Point.html" title="class in org.apache.commons.math3.geometry.spherical.twod">S2Point</a>...&nbsp;vertices)</pre>
<div class="block">Build a polygon from a simple list of vertices.
 <p>The boundary is provided as a list of points considering to
 represent the vertices of a simple loop. The interior part of the
 region is on the left side of this path and the exterior is on its
 right side.</p>
 <p>This constructor does not handle polygons with a boundary
 forming several disconnected paths (such as polygons with holes).</p>
 <p>For cases where this simple constructor applies, it is expected to
 be numerically more robust than the <a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html#SphericalPolygonsSet(java.util.Collection, double)"><code>general constructor</code></a> using <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/SubHyperplane.html" title="interface in org.apache.commons.math3.geometry.partitioning"><code>subhyperplanes</code></a>.</p>
 <p>If the list is empty, the region will represent the whole
 space.</p>
 <p>
 Polygons with thin pikes or dents are inherently difficult to handle because
 they involve circles with almost opposite directions at some vertices. Polygons
 whose vertices come from some physical measurement with noise are also
 difficult because an edge that should be straight may be broken in lots of
 different pieces with almost equal directions. In both cases, computing the
 circles intersections is not numerically robust due to the almost 0 or almost
 &pi; angle. Such cases need to carefully adjust the <code>hyperplaneThickness</code>
 parameter. A too small value would often lead to completely wrong polygons
 with large area wrongly identified as inside or outside. Large values are
 often much safer. As a rule of thumb, a value slightly below the size of the
 most accurate detail needed is a good value for the <code>hyperplaneThickness</code>
 parameter.
 </p></div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>hyperplaneThickness</code> - tolerance below which points are considered to
 belong to the hyperplane (which is therefore more a slab)</dd><dd><code>vertices</code> - vertices of the simple loop boundary</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="buildNew(org.apache.commons.math3.geometry.partitioning.BSPTree)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildNew</h4>
<pre>public&nbsp;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html" title="class in org.apache.commons.math3.geometry.spherical.twod">SphericalPolygonsSet</a>&nbsp;buildNew(<a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/BSPTree.html" title="class in org.apache.commons.math3.geometry.partitioning">BSPTree</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>&gt;&nbsp;tree)</pre>
<div class="block">Build a region using the instance as a prototype.
 <p>This method allow to create new instances without knowing
 exactly the type of the region. It is an application of the
 prototype design pattern.</p>
 <p>The leaf nodes of the BSP tree <em>must</em> have a
 <code>Boolean</code> attribute representing the inside status of
 the corresponding cell (true for inside cells, false for outside
 cells). In order to avoid building too many small objects, it is
 recommended to use the predefined constants
 <code>Boolean.TRUE</code> and <code>Boolean.FALSE</code>. The
 tree also <em>must</em> have either null internal nodes or
 internal nodes representing the boundary as specified in the
 <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/Region.html#getTree(boolean)"><code>getTree</code></a> method).</p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/Region.html#buildNew(org.apache.commons.math3.geometry.partitioning.BSPTree)">buildNew</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/Region.html" title="interface in org.apache.commons.math3.geometry.partitioning">Region</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>&gt;</code></dd>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#buildNew(org.apache.commons.math3.geometry.partitioning.BSPTree)">buildNew</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html" title="class in org.apache.commons.math3.geometry.partitioning">AbstractRegion</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>,<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/oned/Sphere1D.html" title="class in org.apache.commons.math3.geometry.spherical.oned">Sphere1D</a>&gt;</code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>tree</code> - inside/outside BSP tree representing the new region</dd>
<dt><span class="strong">Returns:</span></dt><dd>the built region</dd></dl>
</li>
</ul>
<a name="computeGeometricalProperties()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeGeometricalProperties</h4>
<pre>protected&nbsp;void&nbsp;computeGeometricalProperties()
                                     throws <a href="../../../../../../../org/apache/commons/math3/exception/MathIllegalStateException.html" title="class in org.apache.commons.math3.exception">MathIllegalStateException</a></pre>
<div class="block">Compute some geometrical properties.
 <p>The properties to compute are the barycenter and the size.</p></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#computeGeometricalProperties()">computeGeometricalProperties</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html" title="class in org.apache.commons.math3.geometry.partitioning">AbstractRegion</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>,<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/oned/Sphere1D.html" title="class in org.apache.commons.math3.geometry.spherical.oned">Sphere1D</a>&gt;</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../../org/apache/commons/math3/exception/MathIllegalStateException.html" title="class in org.apache.commons.math3.exception">MathIllegalStateException</a></code> - if the tolerance setting does not allow to build
 a clean non-ambiguous boundary</dd></dl>
</li>
</ul>
<a name="getBoundaryLoops()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBoundaryLoops</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Vertex.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Vertex</a>&gt;&nbsp;getBoundaryLoops()
                              throws <a href="../../../../../../../org/apache/commons/math3/exception/MathIllegalStateException.html" title="class in org.apache.commons.math3.exception">MathIllegalStateException</a></pre>
<div class="block">Get the boundary loops of the polygon.
 <p>The polygon boundary can be represented as a list of closed loops,
 each loop being given by exactly one of its vertices. From each loop
 start vertex, one can follow the loop by finding the outgoing edge,
 then the end vertex, then the next outgoing edge ... until the start
 vertex of the loop (exactly the same instance) is found again once
 the full loop has been visited.</p>
 <p>If the polygon has no boundary at all, a zero length loop
 array will be returned.</p>
 <p>If the polygon is a simple one-piece polygon, then the returned
 array will contain a single vertex.
 </p>
 <p>All edges in the various loops have the inside of the region on
 their left side (i.e. toward their pole) and the outside on their
 right side (i.e. away from their pole) when moving in the underlying
 circle direction. This means that the closed loops obey the direct
 trigonometric orientation.</p></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>boundary of the polygon, organized as an unmodifiable list of loops start vertices.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../../org/apache/commons/math3/exception/MathIllegalStateException.html" title="class in org.apache.commons.math3.exception">MathIllegalStateException</a></code> - if the tolerance setting does not allow to build
 a clean non-ambiguous boundary</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Vertex.html" title="class in org.apache.commons.math3.geometry.spherical.twod"><code>Vertex</code></a>, 
<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Edge.html" title="class in org.apache.commons.math3.geometry.spherical.twod"><code>Edge</code></a></dd></dl>
</li>
</ul>
<a name="getEnclosingCap()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getEnclosingCap</h4>
<pre>public&nbsp;<a href="../../../../../../../org/apache/commons/math3/geometry/enclosing/EnclosingBall.html" title="class in org.apache.commons.math3.geometry.enclosing">EnclosingBall</a>&lt;<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod">Sphere2D</a>,<a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/S2Point.html" title="class in org.apache.commons.math3.geometry.spherical.twod">S2Point</a>&gt;&nbsp;getEnclosingCap()</pre>
<div class="block">Get a spherical cap enclosing the polygon.
 <p>
 This method is intended as a first test to quickly identify points
 that are guaranteed to be outside of the region, hence performing a full
 <a href="../../../../../../../org/apache/commons/math3/geometry/partitioning/AbstractRegion.html#checkPoint(org.apache.commons.math3.geometry.Vector)"><code>checkPoint</code></a>
 only if the point status remains undecided after the quick check. It is
 is therefore mostly useful to speed up computation for small polygons with
 complex shapes (say a country boundary on Earth), as the spherical cap will
 be small and hence will reliably identify a large part of the sphere as outside,
 whereas the full check can be more computing intensive. A typical use case is
 therefore:
 </p>
 <pre>
   // compute region, plus an enclosing spherical cap
   SphericalPolygonsSet complexShape = ...;
   EnclosingBall<Sphere2D, S2Point> cap = complexShape.getEnclosingCap();

   // check lots of points
   for (Vector3D p : points) {

     final Location l;
     if (cap.contains(p)) {
       // we cannot be sure where the point is
       // we need to perform the full computation
       l = complexShape.checkPoint(v);
     } else {
       // no need to do further computation,
       // we already know the point is outside
       l = Location.OUTSIDE;
     }

     // use l ...

   }
 </pre>
 <p>
 In the special cases of empty or whole sphere polygons, special
 spherical caps are returned, with angular radius set to negative
 or positive infinity so the <a href="../../../../../../../org/apache/commons/math3/geometry/enclosing/EnclosingBall.html#contains(P)"><code>ball.contains(point)</code></a>
 method return always false or true.
 </p>
 <p>
 This method is <em>not</em> guaranteed to return the smallest enclosing cap.
 </p></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>a spherical cap enclosing the polygon</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/SphericalPolygonsSet.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/Sphere2D.html" title="class in org.apache.commons.math3.geometry.spherical.twod"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../../../org/apache/commons/math3/geometry/spherical/twod/SubCircle.html" title="class in org.apache.commons.math3.geometry.spherical.twod"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../index.html?org/apache/commons/math3/geometry/spherical/twod/SphericalPolygonsSet.html" target="_top">Frames</a></li>
<li><a href="SphericalPolygonsSet.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2003&#x2013;2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
