Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > by-pkgid > 052d79447130ebaf90b2730395954d11 > files > 61

openvrml-doc-0.18.3-1mdv2010.0.i586.rpm

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
               "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>OpenVRML: openvrml::bounding_volume Class Reference</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<link rel="icon" href="../vrml-16">
<link rel="start" href="http://openvrml.org/index" title="OpenVRML Home">
<link rel="prev" href="http://openvrml.org/discussion" title="Discussion">
<link rel="contents" href="index" title="Documentation Main Page">
<link rel="index" href="functions" title="OpenVRML Compound Members">
<link rel="appendix" href="conformance" title="Conformance Test Results">
<style type="text/css">
@import url("tabs.css");
@import url("http://openvrml.org/openvrml.css");

table {
  width: 100%;
}

h2 {
  border-bottom-style: solid;
  border-bottom-width: 1px;
}

/*
 * Doxygen as of 1.5.4-20071217 uses the class "navpath" instead of "nav".
 * For now, we'll do both.
 */

div.nav,
div.navpath {
  background-color: transparent;
  text-align: left;
  margin-top: 1em;
  margin-bottom: 1em;
  border-color: black;
  border-left: none;
  border-right: none;
  padding-top: 0.5em;
  padding-bottom: 0.5em;
}

div.nav :link, div.nav :visited,
div.navpath :link, div.navpath :visited {
  border-width: 1px;
  border-style: solid;
  border-color: silver;
  padding: 2px;
}

div.nav :link:hover, div.nav :visited:hover,
div.navpath :link:hover, div.navpath :visited:hover {
  border-style: outset;
  border-color: gray;
}

div.nav :active,
div.navpath :active {
  border-style: inset;
  border-color: gray;
}

.body td {
  background-color: transparent;
}

.el {
  text-decoration: inherit;
  font-weight: inherit
}
.elRef {
  font-weight: inherit
}
.code:link, .code:visited {
  text-decoration: inherit;
  font-weight: inherit;
  color: inherit;
}
.codeRef:link {
  font-weight: normal;
  color: inherit;
}
:visited {
  color: silver;
}
:link:hover {
  color: inherit;
  text-decoration: inherit;
  background-color: transparent;
}

h1 {
  line-height: 1.2em;
}

td.memItemLeft, td.memItemRight,
td.memTemplParams, td.memTemplItemLeft, td.memTemplItemRight,
.memtemplate, .memname td {
  font-family: Consolas, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Lucida Console", LucidaTypewriter, monospace;
}

td.memItemLeft, td.memItemRight, td.mdescLeft, td.mdescRight {
  background-color: rgb(95%, 95%, 95%);
  border-color: rgb(65%, 65%, 65%);
  border-width: 1px;
  font-size: smaller;
}

.memItemLeft {
  margin-top: 0.5em;
  border-top-style: solid;
}
.mdescLeft {
  border-bottom-style: solid;
}
.memItemRight {
  border-top-style: solid;
  margin-top: 0.5em;
}
.mdescRight {
  border-bottom-style: solid;
}

.mdescRight {
  font-style: italic;
}

.mdTable {
  background-color: rgb(95%, 95%, 95%);
}

.memproto td code {
  font-family: inherit;
  font-style: italic;
}

td.pass {
  background-color: rgb(50%, 100%, 50%);
}

td.fail {
  background-color: rgb(100%, 50%, 50%);
}

td.invalid {
  background-color: rgb(75%, 75%, 75%);
}

.memitem {
  padding: 0;
}

.memitem table {
  width: auto;
}

.memproto, .memdoc {
  border-width: 1px;
  border-color: rgb(65%, 65%, 65%);
}

.memproto {
  background-color: rgb(90%, 90%, 90%);
  font-weight: inherit;
  font-size: smaller;
  border-top-style: solid;
  border-left-style: solid;
  border-right-style: solid;
  -webkit-border-top-left-radius: 0.6em;
  -webkit-border-top-right-radius: 0.6em;
  -moz-border-radius-topleft: 0.6em;
  -moz-border-radius-topright: 0.6em;
}

.memdoc {
  background-color: rgb(95%, 95%, 95%);
  padding: 2px 5px;
  border-style: solid;
  -webkit-border-bottom-left-radius: 0.6em;
  -webkit-border-bottom-right-radius: 0.6em;
  -moz-border-radius-bottomleft: 0.6em;
  -moz-border-radius-bottomright: 0.6em;
}

.memname {
  font-weight: inherit;
}

div.tabs {
  background-image: url("tab_b-openvrml.png");
}

div.tabs span {
  background-image: url("tab_l-openvrml.png");
}

div.tabs a {
  background-image: url("tab_r-openvrml.png");
  border-bottom: 1px solid #a5a5a5;
}

div.tabs a:link, div.tabs a:visited, div.tabs a:active, div.tabs a:hover {
  color: black;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

.note {
  border: 1px solid rgb(65%, 65%, 65%);
  background-color: rgb(95%, 95%, 95%);
  margin-left: 10%;
  margin-right: 10%;
}
</style>
</head>
<body>
<table class="sitenav">
  <tr>
    <th><a href="http://openvrml.org/index" title="Home">Home</a></th>
    <th><a href="http://openvrml.org/download" title="Download">Download</a></th>
    <th><a href="http://openvrml.org/screenshots/index" title="Screen shots">Screen shots</a></th>
    <th><a href="http://openvrml.org/discussion" title="Mailing lists and IRC">Discussion</a></th>
    <th>Documentation</th>
  </tr>
</table>
<div class="body">
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespaceopenvrml.html">openvrml</a>::<a class="el" href="classopenvrml_1_1bounding__volume.html">bounding_volume</a>
  </div>
</div>
<div class="contents">
<h1>openvrml::bounding_volume Class Reference</h1><!-- doxytag: class="openvrml::bounding_volume" -->A bounding volume.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;openvrml/bounding_volume.h&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for openvrml::bounding_volume:</div>
<div class="dynsection">
<p><center><img src="classopenvrml_1_1bounding__volume__inherit__graph.png" border="0" usemap="#openvrml_1_1bounding__volume__inherit__map" alt="Inheritance graph"></center>
<map name="openvrml_1_1bounding__volume__inherit__map">
<area shape="rect" href="classopenvrml_1_1axis__aligned__bounding__box.html" title="An axis&#45;aligned bounding box." alt="" coords="5,83,256,112"><area shape="rect" href="classopenvrml_1_1bounding__sphere.html" title="A bounding sphere." alt="" coords="280,83,467,112"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>

<p>
<a href="classopenvrml_1_1bounding__volume-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">intersection</a> { <br>
&nbsp;&nbsp;<a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3b0e1c4e170a8bdffb64c186e47a0f934">outside</a> =  -1, 
<br>
&nbsp;&nbsp;<a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3b5043a582b7b2c17c9689fe51f26e1b6">partial</a> =  0, 
<br>
&nbsp;&nbsp;<a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce39c80ee2ecd82d3db6b70162fd87c8f08">inside</a> =  1
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates the type of intersection.  <a href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#0de8b236c5f64ad03a41f454b6bf353e">~bounding_volume</a> ()=0  throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy.  <a href="#0de8b236c5f64ad03a41f454b6bf353e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#1fcd621daea648ad054437d2369662c1">maximize</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Maximize the bounding volume.  <a href="#1fcd621daea648ad054437d2369662c1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#7200a128c843940c3b6029a535cce4b5">maximized</a> () const   throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates whether the bounding volume is maximized.  <a href="#7200a128c843940c3b6029a535cce4b5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">intersection</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#a9dfc3198c3a27a6eb401e2332b7d81c">intersect_frustum</a> (const <a class="el" href="classopenvrml_1_1frustum.html">openvrml::frustum</a> &amp;<a class="el" href="classopenvrml_1_1frustum.html">frustum</a>) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Intersect this <code><a class="el" href="classopenvrml_1_1bounding__volume.html" title="A bounding volume.">bounding_volume</a></code> with a <code><a class="el" href="classopenvrml_1_1frustum.html" title="A view frustum.">frustum</a></code>.  <a href="#a9dfc3198c3a27a6eb401e2332b7d81c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#dd7a4c81d8186273bf5fd093a5137d6e">extend</a> (const <a class="el" href="structopenvrml_1_1vec3f.html">vec3f</a> &amp;p)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Extend the bounding volume to enclose <code>p</code>.  <a href="#dd7a4c81d8186273bf5fd093a5137d6e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#887a5d23e49101b8708c0bcc41e1ffb5">extend</a> (const <a class="el" href="classopenvrml_1_1bounding__volume.html">bounding_volume</a> &amp;bv)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Extend the <a class="el" href="classopenvrml_1_1bounding__volume.html" title="A bounding volume.">bounding_volume</a> to enclose <code>bv</code>.  <a href="#887a5d23e49101b8708c0bcc41e1ffb5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#b8201eddedc17a5e5ced61ded00c33a1">enclose</a> (const std::vector&lt; <a class="el" href="structopenvrml_1_1vec3f.html">vec3f</a> &gt; &amp;points)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enclose the given set of points.  <a href="#b8201eddedc17a5e5ced61ded00c33a1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#75a351cfa987ac01b1477963f3edc338">ortho_transform</a> (const <a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;M)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform this bounding volume using an orthogonal transfom.  <a href="#75a351cfa987ac01b1477963f3edc338"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#893677371635792ce7f3e7474651b008">transform</a> (const <a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;M)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transform this bounding volume using an affine transfom.  <a href="#893677371635792ce7f3e7474651b008"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#0914efacadd74cce65d9bd3477161974">do_maximize</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#1fcd621daea648ad054437d2369662c1" title="Maximize the bounding volume.">bounding_volume::maximize</a></code>.  <a href="#0914efacadd74cce65d9bd3477161974"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#778eec24aab898559bc069999b417cf1">do_maximized</a> () const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#7200a128c843940c3b6029a535cce4b5" title="Indicates whether the bounding volume is maximized.">bounding_volume::maximized</a></code>.  <a href="#778eec24aab898559bc069999b417cf1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">intersection</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#afaaa2f60e3ac1bb5400d2dde465924a">do_intersect_frustum</a> (const <a class="el" href="classopenvrml_1_1frustum.html">openvrml::frustum</a> &amp;<a class="el" href="classopenvrml_1_1frustum.html">frustum</a>) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#a9dfc3198c3a27a6eb401e2332b7d81c" title="Intersect this bounding_volume with a frustum.">bounding_volume::intersect_frustum</a></code>.  <a href="#afaaa2f60e3ac1bb5400d2dde465924a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#8b54cdd699ce9d069c03aecc192e162b">do_extend</a> (const <a class="el" href="structopenvrml_1_1vec3f.html">vec3f</a> &amp;p)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Extend the bounding volume to enclose <code>p</code>.  <a href="#8b54cdd699ce9d069c03aecc192e162b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#97d18f864190828330058f11a792a602">do_extend</a> (const <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html">axis_aligned_bounding_box</a> &amp;bbox)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#887a5d23e49101b8708c0bcc41e1ffb5" title="Extend the bounding_volume to enclose bv.">bounding_volume::extend(const bounding_volume &amp;)</a></code>.  <a href="#97d18f864190828330058f11a792a602"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#dcba066f474dbc66b8589d0d437d3ad6">do_extend</a> (const <a class="el" href="classopenvrml_1_1bounding__sphere.html">bounding_sphere</a> &amp;bs)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#887a5d23e49101b8708c0bcc41e1ffb5" title="Extend the bounding_volume to enclose bv.">bounding_volume::extend(const bounding_volume &amp;)</a></code>.  <a href="#dcba066f474dbc66b8589d0d437d3ad6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#f6e43898853a61cf2c91bfced9bba508">do_enclose</a> (const std::vector&lt; <a class="el" href="structopenvrml_1_1vec3f.html">vec3f</a> &gt; &amp;points)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#b8201eddedc17a5e5ced61ded00c33a1" title="Enclose the given set of points.">bounding_volume::enclose</a></code>.  <a href="#f6e43898853a61cf2c91bfced9bba508"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#613f4c55082058c84c078b011f2f374a">do_ortho_transform</a> (const <a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;M)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#75a351cfa987ac01b1477963f3edc338" title="Transform this bounding volume using an orthogonal transfom.">bounding_volume::ortho_transform</a></code>.  <a href="#613f4c55082058c84c078b011f2f374a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1bounding__volume.html#64fb78652463191bd475e3599f43b0ea">do_transform</a> (const <a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;M)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#893677371635792ce7f3e7474651b008" title="Transform this bounding volume using an affine transfom.">bounding_volume::transform</a></code>.  <a href="#64fb78652463191bd475e3599f43b0ea"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A bounding volume. 
<p>
All the geometry in a <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a> maintains a bounding volume to help speed up rendering and picking. Although currently we're just using spheres, the plan is to eventually use tighter bounds like axis aligned boxes around nodes that are expected to be static. That probably means boxes for geometry and spheres for grouping nodes.<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1bounding__sphere.html" title="A bounding sphere.">openvrml::bounding_sphere</a> <p>
<a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html" title="An axis-aligned bounding box.">openvrml::axis_aligned_bounding_box</a> </dd></dl>
<hr><h2>Member Enumeration Documentation</h2>
<a class="anchor" name="a59201499b3aca0ef07b45b61252fce3"></a><!-- doxytag: member="openvrml::bounding_volume::intersection" ref="a59201499b3aca0ef07b45b61252fce3" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">openvrml::bounding_volume::intersection</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Indicates the type of intersection. 
<p>
<dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="a59201499b3aca0ef07b45b61252fce3b0e1c4e170a8bdffb64c186e47a0f934"></a><!-- doxytag: member="outside" ref="a59201499b3aca0ef07b45b61252fce3b0e1c4e170a8bdffb64c186e47a0f934" args="" -->outside</em>&nbsp;</td><td>
Indicates that the tested volume is entirely outside the target volume. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a59201499b3aca0ef07b45b61252fce3b5043a582b7b2c17c9689fe51f26e1b6"></a><!-- doxytag: member="partial" ref="a59201499b3aca0ef07b45b61252fce3b5043a582b7b2c17c9689fe51f26e1b6" args="" -->partial</em>&nbsp;</td><td>
Indicates that the tested volume intersects with the target volume. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a59201499b3aca0ef07b45b61252fce39c80ee2ecd82d3db6b70162fd87c8f08"></a><!-- doxytag: member="inside" ref="a59201499b3aca0ef07b45b61252fce39c80ee2ecd82d3db6b70162fd87c8f08" args="" -->inside</em>&nbsp;</td><td>
Indicates that the tested volume is entirely inside the target volume. </td></tr>
</table>
</dl>

</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="0de8b236c5f64ad03a41f454b6bf353e"></a><!-- doxytag: member="openvrml::bounding_volume::~bounding_volume" ref="0de8b236c5f64ad03a41f454b6bf353e" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">openvrml::bounding_volume::~bounding_volume           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>  throw ()<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destroy. 
<p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="1fcd621daea648ad054437d2369662c1"></a><!-- doxytag: member="openvrml::bounding_volume::maximize" ref="1fcd621daea648ad054437d2369662c1" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::maximize           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Maximize the bounding volume. 
<p>
Delegates to <code><a class="el" href="classopenvrml_1_1bounding__volume.html#0914efacadd74cce65d9bd3477161974" title="Called by bounding_volume::maximize.">bounding_volume::do_maximize</a></code>.<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1bounding__volume.html#7200a128c843940c3b6029a535cce4b5" title="Indicates whether the bounding volume is maximized.">maximized</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="7200a128c843940c3b6029a535cce4b5"></a><!-- doxytag: member="openvrml::bounding_volume::maximized" ref="7200a128c843940c3b6029a535cce4b5" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool openvrml::bounding_volume::maximized           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Indicates whether the bounding volume is maximized. 
<p>
The convention is that nodes that should be rendered unconditionally set a maximum bounding volume, ensuring that the branch they are on does not get pruned during culling. Stuff like the picking code needs a way to differentiate this from just a really big bounding volume, or an unset bounding volume.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>true</code> if the bounding voume is maximized; <code>false</code> otherwise.</dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1bounding__volume.html#1fcd621daea648ad054437d2369662c1" title="Maximize the bounding volume.">openvrml::bounding_volume::maximize</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="a9dfc3198c3a27a6eb401e2332b7d81c"></a><!-- doxytag: member="openvrml::bounding_volume::intersect_frustum" ref="a9dfc3198c3a27a6eb401e2332b7d81c" args="(const openvrml::frustum &amp;frustum) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">openvrml::bounding_volume::intersection</a> openvrml::bounding_volume::intersect_frustum           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classopenvrml_1_1frustum.html">openvrml::frustum</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>frustum</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Intersect this <code><a class="el" href="classopenvrml_1_1bounding__volume.html" title="A bounding volume.">bounding_volume</a></code> with a <code><a class="el" href="classopenvrml_1_1frustum.html" title="A view frustum.">frustum</a></code>. 
<p>
The test assumes that the <a class="el" href="classopenvrml_1_1frustum.html" title="A view frustum.">frustum</a> is in the canonical looking-down-negative-z orientation, so the bounding volume is going to have to be transformed into the frustum's space. (Alternatives include transforming the <a class="el" href="classopenvrml_1_1frustum.html" title="A view frustum.">frustum</a> into the bvolume's space, or transforming both of them into the projection space. Lots of tradeoffs involved, but transforming the bvolume is probably the simplest approach overall.)<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em><a class="el" href="classopenvrml_1_1frustum.html" title="A view frustum.">frustum</a></em>&nbsp;</td><td>the <a class="el" href="classopenvrml_1_1frustum.html" title="A view frustum.">frustum</a>.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>inside, outside, or partial.</dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1bounding__volume.html#893677371635792ce7f3e7474651b008" title="Transform this bounding volume using an affine transfom.">openvrml::bounding_volume::transform</a> <p>
<a class="el" href="classopenvrml_1_1bounding__volume.html#75a351cfa987ac01b1477963f3edc338" title="Transform this bounding volume using an orthogonal transfom.">openvrml::bounding_volume::ortho_transform</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="dd7a4c81d8186273bf5fd093a5137d6e"></a><!-- doxytag: member="openvrml::bounding_volume::extend" ref="dd7a4c81d8186273bf5fd093a5137d6e" args="(const vec3f &amp;p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::extend           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structopenvrml_1_1vec3f.html">vec3f</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Extend the bounding volume to enclose <code>p</code>. 
<p>
Delegates to <code><a class="el" href="classopenvrml_1_1bounding__volume.html#8b54cdd699ce9d069c03aecc192e162b" title="Extend the bounding volume to enclose p.">bounding_volume::do_extend</a></code>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>p</em>&nbsp;</td><td>a point </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="887a5d23e49101b8708c0bcc41e1ffb5"></a><!-- doxytag: member="openvrml::bounding_volume::extend" ref="887a5d23e49101b8708c0bcc41e1ffb5" args="(const bounding_volume &amp;bv)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::extend           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classopenvrml_1_1bounding__volume.html">bounding_volume</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bv</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Extend the <a class="el" href="classopenvrml_1_1bounding__volume.html" title="A bounding volume.">bounding_volume</a> to enclose <code>bv</code>. 
<p>
Delegates to <code><a class="el" href="classopenvrml_1_1bounding__volume.html#dcba066f474dbc66b8589d0d437d3ad6" title="Called by bounding_volume::extend(const bounding_volume &amp;).">bounding_volume::do_extend(const bounding_sphere &amp;)</a></code> and <code>bounding_volume::do_extend(const axis_alligned_bounding_box &amp;)</code>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bv</em>&nbsp;</td><td>a bounding volume. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="b8201eddedc17a5e5ced61ded00c33a1"></a><!-- doxytag: member="openvrml::bounding_volume::enclose" ref="b8201eddedc17a5e5ced61ded00c33a1" args="(const std::vector&lt; vec3f &gt; &amp;points)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::enclose           </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="structopenvrml_1_1vec3f.html">vec3f</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>points</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Enclose the given set of points. 
<p>
This resets the volume from any previous values.<p>
Delegates to <code><a class="el" href="classopenvrml_1_1bounding__volume.html#f6e43898853a61cf2c91bfced9bba508" title="Called by bounding_volume::enclose.">bounding_volume::do_enclose</a></code>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>points</em>&nbsp;</td><td>points. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="75a351cfa987ac01b1477963f3edc338"></a><!-- doxytag: member="openvrml::bounding_volume::ortho_transform" ref="75a351cfa987ac01b1477963f3edc338" args="(const mat4f &amp;M)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::ortho_transform           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>M</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Transform this bounding volume using an orthogonal transfom. 
<p>
Orthogonal transformations preserve angles. They include translation, <a class="el" href="structopenvrml_1_1rotation.html" title="A POD-struct comprising a rotation.">rotation</a>, and uniform scaling. It turns out to be so easy to transform bounding spheres by orthogonal transformations that it's worth special casing. The caller is responsible for assuring that the transformation is in fact orthogonal, otherwise the results are undefined. If in doubt, call transform instead and take the speed hit.<p>
Delegates to <code><a class="el" href="classopenvrml_1_1bounding__volume.html#613f4c55082058c84c078b011f2f374a" title="Called by bounding_volume::ortho_transform.">bounding_volume::do_ortho_transform</a></code>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>M</em>&nbsp;</td><td>orthonormal transformation matrix. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="893677371635792ce7f3e7474651b008"></a><!-- doxytag: member="openvrml::bounding_volume::transform" ref="893677371635792ce7f3e7474651b008" args="(const mat4f &amp;M)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::transform           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>M</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Transform this bounding volume using an affine transfom. 
<p>
Affine transformations can include nonuniform scaling. It is much messier to deal with them, but VRML allows nonuniform scaling, so we have to handle it. Note that since all orthogonal transforms are affine, it's safe to always call this routine instead of <code>ortho_transform</code>, but it's likely to be slower. The results are undefined if this routine is called with a non-affine argument. Note that VRML Transform nodes only allow affine transformations, so unless you're doing something tricky this routine should always be safe.<p>
Delegates to <code><a class="el" href="classopenvrml_1_1bounding__volume.html#64fb78652463191bd475e3599f43b0ea" title="Called by bounding_volume::transform.">bounding_volume::do_transform</a></code>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>M</em>&nbsp;</td><td>affine transformation matrix. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="0914efacadd74cce65d9bd3477161974"></a><!-- doxytag: member="openvrml::bounding_volume::do_maximize" ref="0914efacadd74cce65d9bd3477161974" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::do_maximize           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#1fcd621daea648ad054437d2369662c1" title="Maximize the bounding volume.">bounding_volume::maximize</a></code>. 
<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1bounding__volume.html#1fcd621daea648ad054437d2369662c1" title="Maximize the bounding volume.">maximize</a> </dd></dl>

<p>Implemented in <a class="el" href="classopenvrml_1_1bounding__sphere.html#595d6cd5c404da441673a2c60448fbe3">openvrml::bounding_sphere</a>, and <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html#1200276e1fe2cc72e4672cb44dca5f50">openvrml::axis_aligned_bounding_box</a>.</p>

</div>
</div><p>
<a class="anchor" name="778eec24aab898559bc069999b417cf1"></a><!-- doxytag: member="openvrml::bounding_volume::do_maximized" ref="778eec24aab898559bc069999b417cf1" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool openvrml::bounding_volume::do_maximized           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#7200a128c843940c3b6029a535cce4b5" title="Indicates whether the bounding volume is maximized.">bounding_volume::maximized</a></code>. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>true</code> if the bounding voume is maximized; <code>false</code> otherwise.</dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1bounding__volume.html#7200a128c843940c3b6029a535cce4b5" title="Indicates whether the bounding volume is maximized.">openvrml::bounding_volume::maximized</a> </dd></dl>

<p>Implemented in <a class="el" href="classopenvrml_1_1bounding__sphere.html#cd8d25b95f1d7f41211ae5799413a518">openvrml::bounding_sphere</a>, and <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html#f2ef0b7d26127700700c0cb53a658fb0">openvrml::axis_aligned_bounding_box</a>.</p>

</div>
</div><p>
<a class="anchor" name="afaaa2f60e3ac1bb5400d2dde465924a"></a><!-- doxytag: member="openvrml::bounding_volume::do_intersect_frustum" ref="afaaa2f60e3ac1bb5400d2dde465924a" args="(const openvrml::frustum &amp;frustum) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classopenvrml_1_1bounding__volume.html#a59201499b3aca0ef07b45b61252fce3">openvrml::bounding_volume::intersection</a> openvrml::bounding_volume::do_intersect_frustum           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classopenvrml_1_1frustum.html">openvrml::frustum</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>frustum</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#a9dfc3198c3a27a6eb401e2332b7d81c" title="Intersect this bounding_volume with a frustum.">bounding_volume::intersect_frustum</a></code>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em><a class="el" href="classopenvrml_1_1frustum.html" title="A view frustum.">frustum</a></em>&nbsp;</td><td>the <a class="el" href="classopenvrml_1_1frustum.html" title="A view frustum.">frustum</a>.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>inside, outside, or partial.</dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1bounding__volume.html#893677371635792ce7f3e7474651b008" title="Transform this bounding volume using an affine transfom.">openvrml::bounding_volume::transform</a> <p>
<a class="el" href="classopenvrml_1_1bounding__volume.html#75a351cfa987ac01b1477963f3edc338" title="Transform this bounding volume using an orthogonal transfom.">openvrml::bounding_volume::ortho_transform</a> </dd></dl>

<p>Implemented in <a class="el" href="classopenvrml_1_1bounding__sphere.html#24fb02d3efb27dc6fcbbd7b09eae7ba2">openvrml::bounding_sphere</a>, and <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html#079ee69ee918ffad481f2c180ae377a3">openvrml::axis_aligned_bounding_box</a>.</p>

</div>
</div><p>
<a class="anchor" name="8b54cdd699ce9d069c03aecc192e162b"></a><!-- doxytag: member="openvrml::bounding_volume::do_extend" ref="8b54cdd699ce9d069c03aecc192e162b" args="(const vec3f &amp;p)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::do_extend           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structopenvrml_1_1vec3f.html">vec3f</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Extend the bounding volume to enclose <code>p</code>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>p</em>&nbsp;</td><td>a point </td></tr>
  </table>
</dl>

<p>Implemented in <a class="el" href="classopenvrml_1_1bounding__sphere.html#ce7c53d96fe1ef155d532fa3a1cb9fde">openvrml::bounding_sphere</a>, and <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html#cdd123a663a863274708343353941f9c">openvrml::axis_aligned_bounding_box</a>.</p>

</div>
</div><p>
<a class="anchor" name="97d18f864190828330058f11a792a602"></a><!-- doxytag: member="openvrml::bounding_volume::do_extend" ref="97d18f864190828330058f11a792a602" args="(const axis_aligned_bounding_box &amp;bbox)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::do_extend           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html">axis_aligned_bounding_box</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bbox</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#887a5d23e49101b8708c0bcc41e1ffb5" title="Extend the bounding_volume to enclose bv.">bounding_volume::extend(const bounding_volume &amp;)</a></code>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>bbox</em>&nbsp;</td><td>an axis-aligned bounding box. </td></tr>
  </table>
</dl>

<p>Implemented in <a class="el" href="classopenvrml_1_1bounding__sphere.html#12875475a7e852c7f270eed8089ae6b5">openvrml::bounding_sphere</a>, and <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html#c2469537e461c26eec089fa2c26fd829">openvrml::axis_aligned_bounding_box</a>.</p>

</div>
</div><p>
<a class="anchor" name="dcba066f474dbc66b8589d0d437d3ad6"></a><!-- doxytag: member="openvrml::bounding_volume::do_extend" ref="dcba066f474dbc66b8589d0d437d3ad6" args="(const bounding_sphere &amp;bs)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::do_extend           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classopenvrml_1_1bounding__sphere.html">bounding_sphere</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>b</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#887a5d23e49101b8708c0bcc41e1ffb5" title="Extend the bounding_volume to enclose bv.">bounding_volume::extend(const bounding_volume &amp;)</a></code>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>b</em>&nbsp;</td><td>a bounding sphere </td></tr>
  </table>
</dl>

<p>Implemented in <a class="el" href="classopenvrml_1_1bounding__sphere.html#57a316e45816d3b3828f87370e20ae04">openvrml::bounding_sphere</a>, and <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html#4986d08140b01f0e5c41a1ec2cf32ae5">openvrml::axis_aligned_bounding_box</a>.</p>

</div>
</div><p>
<a class="anchor" name="f6e43898853a61cf2c91bfced9bba508"></a><!-- doxytag: member="openvrml::bounding_volume::do_enclose" ref="f6e43898853a61cf2c91bfced9bba508" args="(const std::vector&lt; vec3f &gt; &amp;points)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::do_enclose           </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="structopenvrml_1_1vec3f.html">vec3f</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>points</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#b8201eddedc17a5e5ced61ded00c33a1" title="Enclose the given set of points.">bounding_volume::enclose</a></code>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>points</em>&nbsp;</td><td>points. </td></tr>
  </table>
</dl>

<p>Implemented in <a class="el" href="classopenvrml_1_1bounding__sphere.html#1e79b022e07a6015e6dd4356fdd80fbf">openvrml::bounding_sphere</a>, and <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html#2c9d84588f7b961f3f7e26bc08a4866c">openvrml::axis_aligned_bounding_box</a>.</p>

</div>
</div><p>
<a class="anchor" name="613f4c55082058c84c078b011f2f374a"></a><!-- doxytag: member="openvrml::bounding_volume::do_ortho_transform" ref="613f4c55082058c84c078b011f2f374a" args="(const mat4f &amp;M)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::do_ortho_transform           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>M</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#75a351cfa987ac01b1477963f3edc338" title="Transform this bounding volume using an orthogonal transfom.">bounding_volume::ortho_transform</a></code>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>M</em>&nbsp;</td><td>orthonormal transformation matrix in <a class="el" href="structopenvrml_1_1mat4f.html" title="A POD-struct comprising a 4x4 matrix.">mat4f</a> format </td></tr>
  </table>
</dl>

<p>Implemented in <a class="el" href="classopenvrml_1_1bounding__sphere.html#268579e995b341e0ea3eaef8d368faf0">openvrml::bounding_sphere</a>, and <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html#2726f67564500e78d3c0c93e06d4c89b">openvrml::axis_aligned_bounding_box</a>.</p>

</div>
</div><p>
<a class="anchor" name="64fb78652463191bd475e3599f43b0ea"></a><!-- doxytag: member="openvrml::bounding_volume::do_transform" ref="64fb78652463191bd475e3599f43b0ea" args="(const mat4f &amp;M)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::bounding_volume::do_transform           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structopenvrml_1_1mat4f.html">mat4f</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>M</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by <code><a class="el" href="classopenvrml_1_1bounding__volume.html#893677371635792ce7f3e7474651b008" title="Transform this bounding volume using an affine transfom.">bounding_volume::transform</a></code>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>M</em>&nbsp;</td><td>affine transformation matrix. </td></tr>
  </table>
</dl>

<p>Implemented in <a class="el" href="classopenvrml_1_1bounding__sphere.html#4663243ae21516edcd1cecb396e9e498">openvrml::bounding_sphere</a>, and <a class="el" href="classopenvrml_1_1axis__aligned__bounding__box.html#310a995b0d1ab59e19ec64e4cea5a657">openvrml::axis_aligned_bounding_box</a>.</p>

</div>
</div><p>
</div>
</div>
<address class="footer"><span class="images"><a href="http://web3d.org/x3d/"><img src="x3d-white-on-black.png" width="43" height="32" border="0" alt="X3D"></a><a href="http://opengl.org"><img src="OGL_sm_wht.png" width="68" height="32" border="0" alt="OpenGL"></a><a href="http://sourceforge.net/projects/openvrml"><img src="http://sourceforge.net/sflogo.php?group_id=7151&amp;type=11" width="120" height="30" border="0" alt="SourceForge.net"></a></span><a href="https://sourceforge.net/apps/trac/openvrml/newticket">Report error</a><br>Generated Thu Aug 13 02:49:16 2009 by Doxygen 1.5.8</address>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">_uacct = "UA-446379-2"; urchinTracker();</script>
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://sourceforge.net/apps/piwik/openvrml/" : "http://sourceforge.net/apps/piwik/openvrml/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
piwik_action_name = '';
piwik_idsite = 1;
piwik_url = pkBaseURL + "piwik.php";
piwik_log(piwik_action_name, piwik_idsite, piwik_url);
</script>
<object><noscript><p><img src="http://sourceforge.net/apps/piwik/openvrml/piwik.php?idsite=1" alt="piwik"/></p></noscript></object>
<!-- End Piwik Tag -->
</body>
</html>