This set of C++ classes provides you with an implementation of a convex combination of Wachspress and any other 2D closed-form barycentric coordinates as discussed in Chapter 4 of the dissertation: D. Anisimov. Analysis and new constructions of generalized barycentric coordinates in 2D. To appear, 2017. The implementation is based on the corresponding pseudocode from Appendix A of this dissertation.
In order to run the code, do the following:
- Install macports
- Open terminal and type the following:
sudo port install cmake
cd path_to_the_folder/blwp/2d/
mkdir bin
cd bin
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
./blwp
For the release version use instead:
cmake -DCMAKE_BUILD_TYPE=Release ..
// Polygon.
std::vector<VertexR2> poly(8);
poly[0] = VertexR2(0.0 , 0.0 );
poly[1] = VertexR2(0.34, 0.32);
poly[2] = VertexR2(0.68, 0.08);
poly[3] = VertexR2(1.12, 0.31);
poly[4] = VertexR2(1.12, 1.11);
poly[5] = VertexR2(0.49, 1.07);
poly[6] = VertexR2(0.72, 0.49);
poly[7] = VertexR2(0.14, 0.58);
// Evaluation point.
VertexR2 query(0.56, 0.555);
// Storage for the computed coordinates.
std::vector<double> b;
// Compute coordinates.
BlendedWachspressR2<MeanValueR2> wmc(poly);
wmc.compute(query, b);
// Output the resulting coordinates.
std::cout << "\nResult: ";
for (size_t i = 0; i < b.size(); ++i) std::cout << b[i] << " ";
std::cout << "\n\n";
If you find any bugs, please report them to me, and I will try to fix them as soon as possible!