diff options
Diffstat (limited to 'src/chilbert_svg.cpp')
-rw-r--r-- | src/chilbert_svg.cpp | 68 |
1 files changed, 34 insertions, 34 deletions
diff --git a/src/chilbert_svg.cpp b/src/chilbert_svg.cpp index dd4a3d4..7033bec 100644 --- a/src/chilbert_svg.cpp +++ b/src/chilbert_svg.cpp @@ -26,38 +26,38 @@ int main(int argc, char** argv) { - if (argc != 2) { - fprintf(stderr, "Usage: %s NUM_POINTS\n", argv[0]); - return 1; - } - - const unsigned long num_points = std::strtoul(argv[1], nullptr, 10); - if (num_points == 0 || num_points == ULONG_MAX) { - fprintf(stderr, "Usage: %s NUM_POINTS\n", argv[0]); - return 1; - } - - const uint32_t w = - uint32_t(sqrt(1 << uint32_t(ceil(log2(double(num_points)))))) - 1; - - // Header - printf("<svg xmlns='http://www.w3.org/2000/svg'" - " version='1.2' baseProfile='tiny' viewBox='0 0 %u %u'>\n", - w, - w); - printf("<desc>Hilbert Curve</desc>\n"); - printf("<polyline vector-effect='non-scaling-stroke' fill='none' " - "stroke='black' stroke-width='1' points='"); - - // One polyline through all vertices - for (uint64_t i = 0; i <= num_points; ++i) { - std::array<uint32_t, 2> point; - chilbert::index_to_coords(point, 32, 2, i); - printf("%u,%u ", point[0], point[1]); - } - - // Close off document - printf("' />\n</svg>\n"); - - return 0; + if (argc != 2) { + fprintf(stderr, "Usage: %s NUM_POINTS\n", argv[0]); + return 1; + } + + const unsigned long num_points = std::strtoul(argv[1], nullptr, 10); + if (num_points == 0 || num_points == ULONG_MAX) { + fprintf(stderr, "Usage: %s NUM_POINTS\n", argv[0]); + return 1; + } + + const uint32_t w = + uint32_t(sqrt(1 << uint32_t(ceil(log2(double(num_points)))))) - 1; + + // Header + printf("<svg xmlns='http://www.w3.org/2000/svg'" + " version='1.2' baseProfile='tiny' viewBox='0 0 %u %u'>\n", + w, + w); + printf("<desc>Hilbert Curve</desc>\n"); + printf("<polyline vector-effect='non-scaling-stroke' fill='none' " + "stroke='black' stroke-width='1' points='"); + + // One polyline through all vertices + for (uint64_t i = 0; i <= num_points; ++i) { + std::array<uint32_t, 2> point; + chilbert::index_to_coords(point, 32, 2, i); + printf("%u,%u ", point[0], point[1]); + } + + // Close off document + printf("' />\n</svg>\n"); + + return 0; } |