Class TTriangleOctree

DescriptionHierarchyFieldsMethodsProperties

Unit

Declaration

type TTriangleOctree = class(TBaseTrianglesOctree)

Description

Octree based on triangles. Allows for fast collision-detection with a set of triangles. Each triangle is a TTriangle structure, that keeps triangle geometry in 3D space, and links to parent VRML Shapes and such.

Hierarchy

Overview

Fields

Public Triangles: TTriangleList;

Methods

Protected function StatisticsBonus( const LeavesCount, ItemsCount, NonLeafNodesCount: Int64): string; override;
Public constructor Create(const ARootBox: TBox3D); overload;
Public constructor Create(const ALimits: TOctreeLimits; const ARootBox: TBox3D); overload;
Public destructor Destroy; override;
Public function TreeRoot: TTriangleOctreeNode;
Public procedure AddItemTriangle(Shape: TObject; const Position: TTriangle3Single; const Normal: TTriangle3Single; const TexCoord: TTriangle4Single; const Face: TFaceIndex);
Public procedure EnumerateTriangles(EnumerateTriangleFunc: TEnumerateTriangleFunc); override;
Public function TrianglesCount: Cardinal; override;

Description

Fields

Public Triangles: TTriangleList;

All our triangles.

By keeping a list of triangles here, and only keeping indexes to this table in leafs (in ItemsIndices) we conserve a lot of memory. This also allows to use mailboxes and fast TriangleToIgnore (because every triangle has a unique index, and a pointer too, shared even if this triangle is placed in multiple leaves).

Methods

Protected function StatisticsBonus( const LeavesCount, ItemsCount, NonLeafNodesCount: Int64): string; override;
 
Public constructor Create(const ARootBox: TBox3D); overload;
 
Public constructor Create(const ALimits: TOctreeLimits; const ARootBox: TBox3D); overload;
 
Public destructor Destroy; override;
 
Public function TreeRoot: TTriangleOctreeNode;
 
Public procedure AddItemTriangle(Shape: TObject; const Position: TTriangle3Single; const Normal: TTriangle3Single; const TexCoord: TTriangle4Single; const Face: TFaceIndex);

Add a single triangle. Automatically checks whether IsValidTriangle. Before adding a lot of triangles, it's suggested to increase Triangles.AllowedCapacityCount.

Public procedure EnumerateTriangles(EnumerateTriangleFunc: TEnumerateTriangleFunc); override;
 
Public function TrianglesCount: Cardinal; override;
 

Generated by PasDoc 0.13.0 on 2014-08-30 12:10:41