#include <pDomain.h>
List of all members.
Public Member Functions |
|
PDUnion () | |
Use this one to create an empty PDUnion then call .insert() to add each item to it. |
|
PDUnion (const pDomain &A, const pDomain &B) | |
PDUnion (const pDomain &A, const pDomain &B, const pDomain &C) | |
PDUnion (const std::vector< pDomain * > &DomList) | |
Makes a copy of all the subdomains and point to the copies. |
|
PDUnion (const PDUnion &P) | |
void | insert (const pDomain &A) |
Insert another domain into this PDUnion. |
|
bool | Within (const pVec &pos) const |
Returns true if pos is within any of the domains. |
|
pVec | Generate () const |
Generate a point in any subdomain, chosen by the ratio of their sizes. |
|
float | Size () const |
Returns the size of the domain (length, area, or volume). |
|
pDomain * | copy () const |
Public Attributes |
|
std::vector< pDomain * > | Doms |
float | TotalSize |
A point is within this domain if it is within domain A OR B. Generate returns a point from either domain. Within returns true if pos is within A or within B.
All domains have a Size() that is used to apportion probability between the domains in the union. Sizes of domains of the same dimensionality are commensurate but sizes of differing dimensionality are not. Thus, to properly distribute probability of Generate() choosing each domain, it is wise to only combine domains that have the same dimensionality. Note that thin shelled cylinders, cones, and spheres, where InnerRadius==OuterRadius, are considered 2D, not 3D. Thin shelled discs (circles) are considered 1D.
Makes a copy of all the subdomains and point to the copies.
Note that the Generate() function gets a performance boost if you supply DomList with the largest domains first.