source: trunk/src/astrometry/render/render_skdt.c @ 12166

Revision 12166, 1.8 KB checked in by dstn, 15 months ago (diff)

tilerender: configurable bg color; match files

Line 
1#include <stdio.h>
2#include <math.h>
3#include <stdarg.h>
4#include <sys/param.h>
5
6#include "tilerender.h"
7#include "render_skdt.h"
8#include "starutil.h"
9#include "mathutil.h"
10#include "mercrender.h"
11#include "cairoutils.h"
12#include "starkd.h"
13
14static void logmsg(char* format, ...) {
15        va_list args;
16        va_start(args, format);
17        fprintf(stderr, "render_skdt: ");
18        vfprintf(stderr, format, args);
19        va_end(args);
20}
21
22int render_skdt(cairo_t* cairo, render_args_t* args) {
23        sl* fns;
24        int i;
25        double center[3];
26        double r2;
27        double p1[3], p2[3];
28        double rgba[4];
29
30        fns = sl_new(256);
31        get_string_args_of_type(args, "skdt ", fns);
32
33        if (!get_first_rgba_arg_of_type(args, "skdtrgba ", rgba)) {
34                cairo_set_source_rgba(cairo, rgba[0], rgba[1], rgba[2], rgba[3]);
35        } else {
36                cairo_set_source_rgba(cairo, 0,1,0,1);
37        }
38
39    logmsg("got %i skdt files.\n", sl_size(fns));
40
41        radecdeg2xyzarr(args->ramin, args->decmin, p1);
42        radecdeg2xyzarr(args->ramax, args->decmax, p2);
43        star_midpoint(center, p1, p2);
44        r2 = distsq(p1, center, 3);
45
46        for (i=0; i<sl_size(fns); i++) {
47                char* fn;
48                startree_t* skdt;
49                double* radec;
50                int j, nstars;
51                double crad = 3.0;
52
53                fn = sl_get(fns, i);
54                skdt = startree_open(fn);
55                if (!skdt) {
56                        logmsg("failed to open star kdtree from file \"%s\"\n", fn);
57                        continue;
58                }
59                logmsg("reading star kdtree \"%s\"\n", fn);
60
61                startree_search(skdt, center, r2, NULL, &radec, &nstars);
62
63                for (j=0; j<nstars; j++) {
64                        double px, py;
65                        px =  ra2pixelf(radec[2*j+0], args);
66                        py = dec2pixelf(radec[2*j+1], args);
67            // cairo coords.
68            px += 0.5;
69            py += 0.5;
70                        if (!in_image_margin(px, py, crad, args))
71                                continue;
72            cairo_move_to(cairo, px+crad, py);
73                        cairo_arc(cairo, px, py, crad, 0.0, 2.0*M_PI);
74                }
75        cairo_stroke(cairo);
76
77                free(radec);
78                startree_close(skdt);
79        }
80
81        sl_free2(fns);
82        return 0;
83}
84
Note: See TracBrowser for help on using the repository browser.