51 void pf_draw_statistics(
pf_t *pf, rtk_fig_t *fig);
63 max_samples = MIN(max_samples,
set->sample_count);
65 for (i = 0; i < max_samples; i++)
67 sample =
set->samples + i;
69 px = sample->
pose.
v[0];
70 py = sample->
pose.
v[1];
71 pa = sample->
pose.
v[2];
75 rtk_fig_point(fig, px, py);
76 rtk_fig_arrow(fig, px, py, pa, 0.1, 0.02);
91 rtk_fig_color(fig, 0.0, 0.0, 1.0);
92 pf_kdtree_draw(
set->kdtree, fig);
107 rtk_fig_color(fig, 0, 0, 1);
108 rtk_fig_ellipse(fig, mean.
v[0], mean.
v[1], mean.
v[2], 3 * var, 3 * var, 0);
123 double weight, o, d1, d2;
127 for (i = 0; i <
set->cluster_count; i++)
129 cluster =
set->clusters + i;
132 mean = cluster->
mean;
150 o = atan2(r.
m[1][0], r.
m[0][0]);
151 d1 = 6 * sqrt(
d.m[0][0]);
152 d2 = 6 * sqrt(
d.m[1][1]);
154 if (d1 > 1e-3 && d2 > 1e-3)
157 rtk_fig_ellipse(fig, mean.
v[0], mean.
v[1], o, d1, d2, 0);
158 rtk_fig_line_ex(fig, mean.
v[0], mean.
v[1], o, d1);
159 rtk_fig_line_ex(fig, mean.
v[0], mean.
v[1], o + M_PI / 2, d2);
163 rtk_fig_arrow(fig, mean.
v[0], mean.
v[1], mean.
v[2], 0.50, 0.10);
164 rtk_fig_arrow(fig, mean.
v[0], mean.
v[1], mean.
v[2] + 3 * sqrt(cov.
m[2][2]), 0.50, 0.10);
165 rtk_fig_arrow(fig, mean.
v[0], mean.
v[1], mean.
v[2] - 3 * sqrt(cov.
m[2][2]), 0.50, 0.10);