kopia lustrzana https://gitlab.com/Zwarf/picplanner
Adding plot library
rodzic
0d841056a3
commit
83940258ad
|
@ -1,4 +1,4 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtk.h> /* libgtk-3-dev */
|
||||
#define HANDY_USE_UNSTABLE_API
|
||||
#include <handy.h>
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ picplanner_sources = [
|
|||
'calculations.c',
|
||||
'webconnection.c',
|
||||
'handler.c',
|
||||
'plot.c',
|
||||
]
|
||||
|
||||
picplanner_deps = [
|
||||
|
|
|
@ -341,6 +341,20 @@
|
|||
<property name="icon_name">system-search-symbolic</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="label" translatable="yes">Overviwe</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="receives_default">False</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">overview</property>
|
||||
<property name="title" translatable="yes">Overview</property>
|
||||
<property name="icon_name">help-about-symbolic</property>
|
||||
<property name="position">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
|
@ -351,7 +365,7 @@
|
|||
<property name="name">sun</property>
|
||||
<property name="title" translatable="yes">Sun</property>
|
||||
<property name="icon_name">weather-clear-symbolic</property>
|
||||
<property name="position">1</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
|
@ -364,7 +378,7 @@
|
|||
<property name="name">moon</property>
|
||||
<property name="title" translatable="yes">Moon</property>
|
||||
<property name="icon_name">night-light-symbolic</property>
|
||||
<property name="position">2</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
|
@ -378,7 +392,7 @@
|
|||
<property name="name">milkyway</property>
|
||||
<property name="title" translatable="yes">Milky Way</property>
|
||||
<property name="icon_name">help-about-symbolic</property>
|
||||
<property name="position">3</property>
|
||||
<property name="position">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
#include <plot.h>
|
||||
|
||||
double plot_calc_coordinate_x (double a1, double a2, float alpha, float beta) {
|
||||
/* coordinate transformation to transform 3D coordinates into 2D coordinates */
|
||||
double x = (sin(beta)*a1-sin(alpha)*a2)/(cos(alpha)*sin(beta)-sin(alpha)*cos(beta));
|
||||
return x;
|
||||
}
|
||||
double plot_calc_coordinate_y (double a1, double a2, double a3, float alpha, float beta) {
|
||||
/* coordinate transformation to transform 3D coordinates into 2D coordinates */
|
||||
double y = (-cos(beta)*a1+cos(alpha)*a2)/(cos(alpha)*sin(beta)-sin(alpha)*cos(beta)) + a3;
|
||||
return y;
|
||||
}
|
||||
void plot_line_to (cairo_t *cr, double a1, double a2, double a3, float alpha, float beta){
|
||||
/* plot a line with automatic transformation from 3D coordinates into 2D */
|
||||
cairo_line_to (cr, plot_calc_coordinate_x (a1, a2, alpha, beta), plot_calc_coordinate_y (a1, a2, a3, alpha, beta));
|
||||
}
|
||||
void plot_move_to (cairo_t *cr, double a1, double a2, double a3, float alpha, float beta) {
|
||||
/* move cairo starting point with automatic transformation from 3D coordinates into 2D */
|
||||
cairo_move_to (cr, plot_calc_coordinate_x (a1, a2, alpha, beta), plot_calc_coordinate_y (a1, a2, a3, alpha, beta));
|
||||
}
|
||||
void plot_vector_to (cairo_t *cr, double a1, double a2, double a3, float alpha, float beta) {
|
||||
/* plot a vector with automatic transformation from 3D coordinates into 2D */
|
||||
double current_x = 0;
|
||||
double current_y = 0;
|
||||
double *x_1 = ¤t_x;
|
||||
double *y_1 = ¤t_y;
|
||||
double x_2 = plot_calc_coordinate_x (a1, a2, alpha, beta);
|
||||
double y_2 = plot_calc_coordinate_y (a1, a2, a3, alpha, beta);
|
||||
|
||||
cairo_get_current_point (cr, x_1, y_1);
|
||||
double direct_x = x_2-*x_1;
|
||||
double direct_y = y_2-*y_1;
|
||||
double norm = pow(pow(direct_x,2) + pow(direct_y,2), 0.5);
|
||||
direct_x /= norm;
|
||||
direct_y /= norm;
|
||||
g_print("direct_x: %f, direct_y: %f\n", direct_x, direct_y);
|
||||
|
||||
float gamma = 0.5326;
|
||||
cairo_line_to (cr, x_2, y_2);
|
||||
cairo_line_to (cr, x_2+(-direct_x*cos(gamma)+direct_y*sin(gamma))*0.2, y_2+(-direct_y*cos(gamma)-direct_x*sin(gamma))*0.2);
|
||||
cairo_move_to (cr, x_2, y_2);
|
||||
cairo_line_to (cr, x_2+(-direct_x*cos(gamma)-direct_y*sin(gamma))*0.2, y_2+(-direct_y*cos(gamma)+direct_x*sin(gamma))*0.2);
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <math.h>
|
||||
#include <cairo.h>
|
||||
|
||||
double plot_calc_coordinate_x (double a1, double a2, float alpha, float beta);
|
||||
|
||||
double plot_calc_coordinate_y (double a1, double a2, double a3, float alpha, float beta);
|
||||
|
||||
void plot_line_to (cairo_t *cr, double a1, double a2, double a3, float alpha, float beta);
|
||||
|
||||
void plot_move_to (cairo_t *cr, double a1, double a2, double a3, float alpha, float beta);
|
||||
|
||||
void plot_vector_to (cairo_t *cr, double a1, double a2, double a3, float alpha, float beta);
|
Ładowanie…
Reference in New Issue