Weighted Triangulations
Here we give a brief overview of the details behind weighted Delaunay triangulations. For a more detailed description, see Chapters 2 and 3 of the book Delaunay Mesh Generation by Cheng, Dey, and Shewchuk (2013).
Parabolic Lifting Map
The definition of a weighted triangulation is derived from the idea of a parabolic lifting map. The parabolic lifting map takes a triangulation

Let
Weighted Delaunay Triangulations
Weighted Delaunay triangulations allow the lifted points
Given this definition, it is possible that not all points will appear in the weighted triangulation, since not all faces will be projected in this case. Such points are said to be submerged or redundant.
Constructing Weighted Triangulations
The algorithm for constructing weighted triangulations is a simple modification of the standard Bowyer-Watson algorithm. The only difference is the test of whether a point is inside a triangle's circumcircle. Instead of circumcircles, we use witness planes.
From the definition of the weighted triangulation, a point will only be included in the triangulation if it is part of a downward-facing face of the convex hull of
Thus, the Bowyer-Watson algorithm can be extended to weighted triangulations by simply replacing calls to point_position_relative_to_circumcircle
with calls to a predicate that checks if a point is below a witness plane. This has been implemented in the point_position_relative_to_witness_plane
predicate. Care is needed for ghost triangles - if a point is being inserted onto the solid edge of a ghost triangle, we say it is below the ghost triangle's witness plane if it is not submerged relative to the solid triangle opposite the ghost triangle. The only other modification to the algorithm needed is to be careful that it is not guaranteed that there exists any triangle whose witness plane is above a new point, in which case that point's insertion should be completely rejected.