... | ... | @@ -503,6 +503,35 @@ The gray code indicate the triangle quality. The result for h0 = 0.3, 0.1 and 0. |
|
|
|
|
|
![vimethod](uploads/c06634e022fe7b9dd2eeaf1936de87b6/vimethod.png)
|
|
|
|
|
|
## Ruppert's algorithm
|
|
|
|
|
|
Ruppert's algorithm [Ruppert, 1993](http://dl.acm.org/citation.cfm?id=313559.313615) for 2D quality mesh generation
|
|
|
is probably the first theoretically guaranteed meshing algorithm to be truly satisfactory in practice.
|
|
|
The algorithm allows the density of triangles to vary quickly over short distance.
|
|
|
It is quite similar to Rebay's Voronoi-Vertex point insertion method, but avoids Steiner vertices outside the domain D.
|
|
|
Furthermore, it is also a Delaunay-refinement method. The user can define a minimal allowed angle theta such that the final mesh will not contain any angle smaller than theta. For an excellent and extensive description we refer to
|
|
|
[shewchuk, 2002](https://doi.org/10.1016/S0925-7721(01)00047-5).
|
|
|
|
|
|
****Remark****: The termination of Ruppert's algorithm is only guaranteed for a minimal angle greater than theta = 20.7 degree and no angle smaller 60 degree in the given PSLG G. The extension in [shewchuk, 2002](https://doi.org/10.1016/S0925-7721(01)00047-5) resolves the issue of small input angles in G but at this moment EikMesh only supports the algorithm proposed by Ruppert. A C-implementation is accessible via [Triangle](https://people.sc.fsu.edu/~jburkardt/c_src/triangle/triangle.html).
|
|
|
|
|
|
The following code generates a mesh using h(x) = 0.05 and a minimal allowed theta angle of 20 degree:
|
|
|
|
|
|
```java
|
|
|
PSLG pslg = ...
|
|
|
double h0 = 0.02;
|
|
|
double theta = 20.0;
|
|
|
var ruppert = new PRuppertsTriangulator<VPoint, Double, Double>(
|
|
|
pslg,
|
|
|
p -> h0,
|
|
|
theta,
|
|
|
(x, y) -> new VPoint(x, y));
|
|
|
var triangulation = ruppert.generate();
|
|
|
```
|
|
|
|
|
|
### Result:
|
|
|
|
|
|
![ruppert_A](uploads/d34c633fd70a2336c409b4cb9c4cf16f/ruppert_A.png)
|
|
|
|
|
|
---
|
|
|
|
|
|
# EikMesh <a name="EikMEsh"></a>
|
... | ... | |