1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Castle Game Engine: CastleTriangles: Object T3DTriangle</title>
<meta name="generator" content="PasDoc 0.13.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<table class="container"><tr><td class="navigation">
<h2>Castle Game Engine</h2><p><a href="introduction.html" class="navigation">Introduction</a></p><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
<a name="T3DTriangle"></a><h1 class="cio">Object T3DTriangle</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td><a class="section" href="#PasDoc-Fields">Fields</a></td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td>Properties</td></tr></table>
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
<p class="unitlink">
<a href="CastleTriangles.html">CastleTriangles</a></p>
<h2 class="declaration">Declaration</h2>
<p class="declaration">
<code>type T3DTriangle = object(TObject)</code></p>
<h2 class="description">Description</h2>
<p>
3D triangle.
<p>This object should always be initialized by <a class="normal" href="CastleTriangles.T3DTriangle.html#Init">Init</a>, and updated only by it's methods (never modify fields of this object directly).
<p>I use old-style Pascal "object" to define this, since this makes it a little more efficient. This doesn't need any virtual methods or such, so (at least for now) it's easier and more memory-efficient to keep this as an old-style object. And memory efficiency is somewhat important here, since large scenes may easily have milions of triangles, and each triangle results in one <a class="normal" href="X3DTriangles.TTriangle.html">TTriangle</a> (descendant of <code>T3DTriangle</code>) instance.</p>
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
<ul class="hierarchy"><li class="ancestor">TObject</li>
<li class="thisitem">T3DTriangle</li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-Fields"></a><h3 class="summary">Fields</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code><b><a href="CastleTriangles.T3DTriangle.html#Local">Local</a></b>: <a href="CastleTriangles.T3DTriangleGeometry.html">T3DTriangleGeometry</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code><b><a href="CastleTriangles.T3DTriangle.html#World">World</a></b>: <a href="CastleTriangles.T3DTriangleGeometry.html">T3DTriangleGeometry</a>;</code></td>
</tr>
</table>
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>constructor <b><a href="CastleTriangles.T3DTriangle.html#Init">Init</a></b>(const ATriangle: <a href="CastleTriangles.html#TTriangle3Single">TTriangle3Single</a>);</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Fields</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Local"></a><code><b>Local</b>: <a href="CastleTriangles.T3DTriangleGeometry.html">T3DTriangleGeometry</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Geometry of this item. We need two geometry descriptions:
<p></p>
<ul class="paragraph_spacing">
<li><p>Local is based on initial Triangle, given when constructing this <a class="normal" href="CastleTriangles.T3DTriangle.html">T3DTriangle</a>. It's constant for this <a class="normal" href="CastleTriangles.T3DTriangle.html">T3DTriangle</a>. It's used by octree collision routines, that is things like <a class="normal" href="X3DTriangles.TBaseTrianglesOctree.html#SphereCollision">TBaseTrianglesOctree.SphereCollision</a>, <a class="normal" href="X3DTriangles.TBaseTrianglesOctree.html#RayCollision">TBaseTrianglesOctree.RayCollision</a> and such expect parameters in the same coord space.
<p>This may be local coord space of this shape (this is used by <a class="normal" href="CastleShapes.TShape.html#OctreeTriangles">TShape.OctreeTriangles</a>) or world coord space (this is used by TCastleSceneCore.OctreeTriangles).</p></li>
<li><p>World is the geometry of Local transformed to be in world coordinates. Initially, World is just a copy of Local.
<p>If Local already contains world-space geometry, then World can just remain constant, and so is always Local copy.
<p>If Local contains local shape-space geometry, then World will have to be updated by <a class="normal" href="X3DTriangles.TTriangle.html#UpdateWorld">TTriangle.UpdateWorld</a> whenever some octree item's geometry will be needed in world coords. This will have to be done e.g. by TBaseTrianglesOctree.XxxCollision for each returned item.</p></li>
</ul>
<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="World"></a><code><b>World</b>: <a href="CastleTriangles.T3DTriangleGeometry.html">T3DTriangleGeometry</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Geometry of this item. We need two geometry descriptions:
<p></p>
<ul class="paragraph_spacing">
<li><p>Local is based on initial Triangle, given when constructing this <a class="normal" href="CastleTriangles.T3DTriangle.html">T3DTriangle</a>. It's constant for this <a class="normal" href="CastleTriangles.T3DTriangle.html">T3DTriangle</a>. It's used by octree collision routines, that is things like <a class="normal" href="X3DTriangles.TBaseTrianglesOctree.html#SphereCollision">TBaseTrianglesOctree.SphereCollision</a>, <a class="normal" href="X3DTriangles.TBaseTrianglesOctree.html#RayCollision">TBaseTrianglesOctree.RayCollision</a> and such expect parameters in the same coord space.
<p>This may be local coord space of this shape (this is used by <a class="normal" href="CastleShapes.TShape.html#OctreeTriangles">TShape.OctreeTriangles</a>) or world coord space (this is used by TCastleSceneCore.OctreeTriangles).</p></li>
<li><p>World is the geometry of Local transformed to be in world coordinates. Initially, World is just a copy of Local.
<p>If Local already contains world-space geometry, then World can just remain constant, and so is always Local copy.
<p>If Local contains local shape-space geometry, then World will have to be updated by <a class="normal" href="X3DTriangles.TTriangle.html#UpdateWorld">TTriangle.UpdateWorld</a> whenever some octree item's geometry will be needed in world coords. This will have to be done e.g. by TBaseTrianglesOctree.XxxCollision for each returned item.</p></li>
</ul>
<p></p>
</td></tr>
</table>
<h3 class="detail">Methods</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Init"></a><code>constructor <b>Init</b>(const ATriangle: <a href="CastleTriangles.html#TTriangle3Single">TTriangle3Single</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Initialize new triangle. Given ATriangle must satisfy <a class="normal" href="CastleTriangles.html#IsValidTriangle">IsValidTriangle</a>.</p>
</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var u=(("https:" == document.location.protocol) ? "https" : "http") + "://michalis.ii.uni.wroc.pl/piwik-castle-engine/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Piwik Code -->
<noscript>
<!-- Piwik Image Tracker -->
<img src="http://michalis.ii.uni.wroc.pl/piwik-castle-engine/piwik.php?idsite=1&rec=1" style="border:0" alt="" />
<!-- End Piwik -->
</noscript>
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.13.0</a> on 2015-06-15 04:43:12</em>
</span>
</td></tr></table></body></html>
|