]> git.sesse.net Git - nageru/blob - vis.cpp
Add some utility functions for working with .flo files.
[nageru] / vis.cpp
1 // Visualize a .flo file.
2
3 #include <assert.h>
4 #include <stdio.h>
5
6 #include <memory>
7
8 #include "util.h"
9
10 using namespace std;
11
12 int main(int argc, char **argv)
13 {
14         if (argc != 3) {
15                 fprintf(stderr, "Usage: ./vis input.flo out.ppm\n");
16                 exit(1);
17         }
18
19         Flow flow = read_flow(argv[1]);
20
21         FILE *fp = fopen(argv[2], "wb");
22         fprintf(fp, "P6\n%d %d\n255\n", flow.width, flow.height);
23         for (unsigned y = 0; y < unsigned(flow.height); ++y) {
24                 for (unsigned x = 0; x < unsigned(flow.width); ++x) {
25                         float du = flow.flow[y * flow.width + x].du;
26                         float dv = flow.flow[y * flow.width + x].dv;
27
28                         uint8_t r, g, b;
29                         flow2rgb(du, dv, &r, &g, &b);
30                         putc(r, fp);
31                         putc(g, fp);
32                         putc(b, fp);
33                 }
34         }
35         fclose(fp);
36 }