libcruft-util/tools/poisson.cpp

31 lines
1.0 KiB
C++

#include "cmdopt.hpp"
#include "geom/sample.hpp"
#include <cstdlib>
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
int
main (int argc, char **argv)
{
util::extent2i area {256, 256};
float distance = 5.f;
int samples = 15;
util::cmdopt::parser opts;
opts.add<util::cmdopt::option::value<int>> ('w', "width", "width of the space to fill", area.w);
opts.add<util::cmdopt::option::value<int>> ('h', "height", "height of the space to fill", area.h);
opts.add<util::cmdopt::option::value<float>> ('d', "distance", "minimum distance between samples", distance);
opts.add<util::cmdopt::option::value<int>> ('s', "samples", "number of samples per iteration", samples);
opts.scan (argc, argv);
std::cout << "<svg height='" << area.h << "' width='" << area.h << "'>";
for (auto p: util::geom::poisson_sample (area, distance, samples))
std::cout << "<circle cx='" << p.x << "' cy='" << p.y << "' r='1' />";
std::cout << "</svg>";
return EXIT_SUCCESS;
}