Changes

/* An Overview of the SBR Method and k-d Tree Formalism */
The [[SBR Method|SBR method]] assumes that electric fields propagate as spherical waves with the general form:
<math> A(\mathbf{A(r}) } \frac{e^{-jkR}}{R} </math>
where R = |<strong>r-r'</strong>| is the distance between the source and observation points, <strong>r</strong> and <strong>r'</strong> are the position vectors of the observation and source points, respectively, k = √ε<sub>r</sub>k<sub>0</sub>, ε<sub>r</sub> is the relative permittivity of the propagation medium, k<sub>0</sub> = 2πf/c is the free-space propagation constant, f is the operational frequency and c is the speed of light in the free space. <strong>A</strong>(<strong>r</strong>) is complex vector function that defines the polarization and strength of the field at the observation point. Propagating spherical waves are modeled as ray tubes or beams that emanate from a field source point (or a transmitter), travel in the free space, bounce from obstacles and scatterers and are collected at a field observation point (or a receiver). As a ray tube travels in space, its footprint expands due to the beam's spatial divergence. Every scatterer in the scene is discretized into a group of conjoined triangular facets, which are created by a triangular surface mesh generator. When a propagating ray is intercepted by a facet, one of the following events takes place:
* The incident ray is reflected back into the free space.
The solution to the geometric problem of ray-facet intersections can be significantly accelerated by using a k-dimensional (k-d) tree to subdivide the computational domain. A k-d tree, a special case of a binary tree, is a spatial partitioning data structure that is used for organizing points in a k-dimensional space. Using a k-d tree reduces the number of ray-triangle intersection calculations that is required for each ray. In other words, the algorithm used to navigate or traverse a k-d tree is computationally less expensive than a brute-force ray-triangle intersection calculation. The k-d tree is constructed by dividing the computational domain into two partitions and then sorting all the triangles into the two partitions. This process is repeated for the two newly generated partitions until a termination criterion is met. The key to constructing a useful and computationally efficient k-d tree is intelligently deciding on when and where to split each space. A well constructed k-d tree can be many times faster than a poorly constructed one.
After constructing a k-d tree for a given propagation scene, all the triangular facets of the simulation domain are organized spatially. Each k-d tree leaf is loaded with a list of all the facets that are contained in that leaf. Each shooting ray will traverse through the k-d tree and will perform ray-triangle intersection calculations only on triangles that are contained in the traversed leaves. Many different k-d tree traversing algorithms have been developed in recent years. [[EM.CubeTerrano]]'s SBR simulation engine uses an improved version of an efficient algorithm called the Recursive Ray Traversal Algorithm [3].
==Setting Up the Manhattan Propagation Scene==
28,333
edits