1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
/*
* plot3D.h - definitions for 3D plots
*
* This requires the inclusion of "CNdata.h"
*/
#ifndef CNplot3D_defined
#define CNplot3D_defined
#define CN_NDIM 4 /* The Matrix size */
typedef double CNmatrix[CN_NDIM][CN_NDIM];/* The matrix data struct */
/* projection style */
#define CN_PARALLEL 0
#define CN_PERSPECTIVE 1
/* Window size */
#define CN_WINDOWSCALE 0.7
/*
* xmin xmax etc are plot-boundaries. These are in fact copied from
* the dataset's plot-boundaries (pxmin etc)
* Note that the plot-boundaries are always recalculated everytime
* a 3D plot is made.
*/
/* Flags argument for changing view_structure */
#define CNeyepos (1L << 0) /* User-specified eye-position */
#define CNviewctr (1L << 1) /* User-specified view-center */
#define CNviewup (1L << 2) /* User-specified viewup vector */
#define CNrealbnd (1L << 3) /* User-specified real-world boundary*/
#define CNviewport (1L << 4) /* User-specified viewport */
#define CNwindow (1L << 5) /* User-specified window */
#define CNleft_hw (1L << 6) /* User-specified left-hand world */
#define CNaxisscl (1L << 7) /* User-specified axis-scale */
#define CNaxislbl (1L << 8) /* User-specified axis-label */
#define CNaxismvt (1L << 9) /* User-specified axis-movement */
#define CNaxisguides (1L << 10) /* User-specified 3D Guides */
#define CNhiddenln (1L << 11) /* User-specified hiddenline */
#define CNpaintcb (1L << 12) /* User-specified paintcube */
#define CNproject (1L << 13) /* User-specified projection style */
#define CNxaxisscl (1L << 14) /* User-specified x-axis-scale */
#define CNyaxisscl (1L << 15) /* User-specified y-axis-scale */
#define CNzaxisscl (1L << 16) /* User-specified z-axis-scale */
typedef struct CNview_strct { /* View parameters */
long flag;
CNcoord eyepos;
CNcoord viewcenter;
CNcoord viewup;
double xmin, xmax;
double ymin, ymax;
double zmin, zmax;
double windscl_xl, windscl_xr;
double windscl_yb, windscl_yt;
double prev_windscl_xl, prev_windscl_xr;
double prev_windscl_yb, prev_windscl_yt;
double window_xl, window_xr;
double window_yb, window_yt;
double viewport_xl, viewport_xr;
double viewport_yb, viewport_yt;
double xaxis_scale;
double yaxis_scale;
double zaxis_scale;
short left_handed_world;
short axis_scale;
short axis_label;
short axis_movement;
short axis_guides;
short hiddenline;
short paint_cube;
short projection;
CNmatrix view_transfo;
} CNview;
typedef struct CNview_strct *CNviewptr;
/* External declarations */
extern CNviewptr CNcreate_view();
extern void CNdelete_view();
extern void CNinitialize_view();
extern void CNreinitialize_view();
extern void CNcalculate_view_transfo();
extern void CNcalculate_inv_view_transfo();
extern void CNscale_window_to_viewport();
extern void CNscale_viewport_to_window();
extern void CNcalculate_eyepos();
extern void CNrotate_view();
extern void CNget_view_angles();
extern void CNcopy_matrix();
extern CNcoord CNtransform_point();
#endif /* CNplot3D_defined */
|