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

Revision 10884, 1.7 KB checked in by gmaps, 18 months ago (diff)

add render_quads (not finished)

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
29        fns = sl_new(256);
30        get_string_args_of_type(args, "skdt ", fns);
31
32    logmsg("got %i skdt files.\n", sl_size(fns));
33
34        radecdeg2xyzarr(args->ramin, args->decmin, p1);
35        radecdeg2xyzarr(args->ramax, args->decmax, p2);
36        star_midpoint(center, p1, p2);
37        r2 = distsq(p1, center, 3);
38
39        cairo_set_source_rgba(cairo, 0,1,0,1);
40
41        for (i=0; i<sl_size(fns); i++) {
42                char* fn;
43                startree_t* skdt;
44                double* radec;
45                int j, nstars;
46                double crad = 3.0;
47
48                fn = sl_get(fns, i);
49                skdt = startree_open(fn);
50                if (!skdt) {
51                        logmsg("failed to open star kdtree from file \"%s\"\n", fn);
52                        continue;
53                }
54                logmsg("reading star kdtree \"%s\"\n", fn);
55
56                startree_search(skdt, center, r2, NULL, &radec, &nstars);
57
58                for (j=0; j<nstars; j++) {
59                        double px, py;
60                        px =  ra2pixelf(radec[2*j+0], args);
61                        py = dec2pixelf(radec[2*j+1], args);
62            // cairo coords.
63            px += 0.5;
64            py += 0.5;
65                        if (!in_image_margin(px, py, crad, args))
66                                continue;
67            cairo_move_to(cairo, px+crad, py);
68                        cairo_arc(cairo, px, py, crad, 0.0, 2.0*M_PI);
69                }
70        cairo_stroke(cairo);
71
72                free(radec);
73                startree_close(skdt);
74        }
75
76        sl_free2(fns);
77        return 0;
78}
79
Note: See TracBrowser for help on using the repository browser.