File: CastleTriangles.T3DTriangle.html

package info (click to toggle)
castle-game-engine 5.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 185,428 kB
  • sloc: pascal: 260,781; cpp: 1,363; objc: 713; makefile: 537; xml: 496; sh: 480; php: 4
file content (136 lines) | stat: -rw-r--r-- 9,357 bytes parent folder | download
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 &quot;object&quot; 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&amp;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>