15 #include <grass/nviz.h>
17 static void cp_draw(nv_data *,
int,
int,
int);
34 data->cp_rot[id][
X] = data->cp_rot[id][
Y] = data->cp_rot[id][Z] = 0.0;
35 data->cp_trans[id][
X] = data->cp_trans[id][
Y] = data->cp_trans[id][Z] =
50 data->cur_cplane = id;
80 cp_draw(data, data->cur_cplane, bound1, bound2);
93 void cp_draw(nv_data * data,
int current,
int surf1,
int surf2)
96 int surf_min = 0, surf_max = 0, temp;
105 if ((surf1 != -1) && (surf2 != -1)) {
106 for (i = 0; i < nsurfs; i++) {
107 if (surf_list[i] == surf1)
109 if (surf_list[i] == surf2)
113 if (surf_max < surf_min) {
127 for (i = 0; i < MAX_CPLANES; i++) {
133 for (i = surf_min; i < surf_max; i++) {
148 return data->num_cplanes;
158 return data->cur_cplane;
173 data->cp_rot[id][
X] = dx;
174 data->cp_rot[id][
Y] = dy;
175 data->cp_rot[id][Z] = dz;
177 data->cp_rot[
id][Z]);
179 cp_draw(data, data->cur_cplane, -1, -1);
195 *dx = data->cp_rot[id][
X];
196 *dy = data->cp_rot[id][
Y];
197 *dz = data->cp_rot[id][Z];
213 data->cp_trans[id][
X] = dx;
214 data->cp_trans[id][
Y] = dy;
215 data->cp_trans[id][Z] = dz;
217 data->cp_trans[
id][Z]);
219 cp_draw(data, data->cur_cplane, -1, -1);
232 *dx = data->cp_trans[id][
X];
233 *dy = data->cp_trans[id][
Y];
234 *dz = data->cp_trans[id][Z];
252 float x, y, z, len, los[2][3];
262 realto[
X] =
x - gs->ox + gs->x_trans;
263 realto[
Y] = y - gs->oy + gs->y_trans;
264 realto[Z] = z + gs->z_trans;
274 realto[
X] = Gv.from_to[FROM][
X] + dir[
X];
275 realto[
Y] = Gv.from_to[FROM][
Y] + dir[
Y];
276 realto[Z] = Gv.from_to[FROM][Z] + dir[Z];
284 dx = realto[
X] - (e - w) / 2.;
285 dy = realto[
Y] - (n - s) / 2.;
int Nviz_set_cplane_here(nv_data *data, int cplane, float sx, float sy)
int Nviz_get_current_cplane(nv_data *data)
Get the current active cutplane.
int Nviz_get_cplane_translation(nv_data *data, int id, float *dx, float *dy, float *dz)
Get the translation values for the current clip plane.
int Nviz_draw_cplane(nv_data *data, int bound1, int bound2)
Draw the clip plane.
int Nviz_set_cplane_rotation(nv_data *data, int id, float dx, float dy, float dz)
Set the rotation for the current clip plane.
int Nviz_off_cplane(nv_data *data, int id)
Turn off (make inactive) the given clip plane.
int Nviz_num_cplanes(nv_data *data)
Return the number of clip planes objects currently allocated.
int Nviz_set_fence_color(nv_data *data, int type)
Set appropriate fence color.
int Nviz_new_cplane(nv_data *data, int id)
Creates a clip plane object.
int Nviz_set_cplane_translation(nv_data *data, int id, float dx, float dy, float dz)
Set the translation for the current clip plane.
int Nviz_on_cplane(nv_data *data, int id)
Turn on (make current) the given clip plane.
int Nviz_get_cplane_rotation(nv_data *data, int id, float *dx, float *dy, float *dz)
Get the rotation values for the current clip plane.
void GS_unset_cplane(int num)
Unset clip place (turn off)
void GS_set_cplane_rot(int num, float dx, float dy, float dz)
Set cplace rotation.
void GS_set_cplane_trans(int num, float dx, float dy, float dz)
Set cplace trans.
int * GS_get_surf_list(int *numsurfs)
Get surface list.
void GS_clear(int col)
Clear view.
void GS_set_cplane(int num)
Set cplace.
int GS_get_selected_point_on_surface(int sx, int sy, int *id, float *x, float *y, float *z)
Get selected point of surface.
int GS_get_region(float *n, float *s, float *w, float *e)
Get 2D region extent.
void GS_set_fencecolor(int mode)
Set fence color.
int GS_draw_cplane_fence(int hs1, int hs2, int num)
Draw cplace fence ?
void GS_set_draw(int where)
Sets which buffer to draw to.
void GS_done_draw(void)
Draw done, swap buffers.
void GS_draw_wire(int id)
Draw surface wire.
geosurf * gs_get_surf(int id)
Get geosurf struct.
void GS_v3mult(float *v1, float k)
Multiple vectors.
float GS_distance(float *from, float *to)
Calculate distance.
int GS_v3dir(float *v1, float *v2, float *v3)
Get a normalized direction from v1 to v2, store in v3.
int gsd_get_los(float(*vect)[3], short sx, short sy)
ADD.