26 #define dtr 0.01745329252
38 PLFLT xvpwxmin, xvpwxmax, xvpwymin, xvpwymax;
41 if ( plsc->level < 2 )
43 plabort(
"plwind: Please set up viewport first" );
51 plwarn(
"plwind: Invalid window limits in x." );
56 plwarn(
"plwind: Invalid window limits in y." );
68 plP_xgvpw( &xvpwxmin, &xvpwxmax, &xvpwymin, &xvpwymax );
72 dx = xvpwxmax - xvpwxmin;
73 dy = xvpwymax - xvpwymin;
75 plsc->wpxscl = ( plsc->vppxma - plsc->vppxmi ) / dx;
76 plsc->wpxoff = ( xmax * plsc->vppxmi - xmin * plsc->vppxma ) / dx;
77 plsc->wpyscl = ( plsc->vppyma - plsc->vppymi ) / dy;
78 plsc->wpyoff = ( ymax * plsc->vppymi - ymin * plsc->vppyma ) / dy;
87 plsc->wmxscl = ( mmxma - mmxmi ) / dx;
88 plsc->wmxoff = ( xmax * mmxmi - xmin * mmxma ) / dx;
89 plsc->wmyscl = ( mmyma - mmymi ) / dy;
90 plsc->wmyoff = ( ymax * mmymi - ymin * mmyma ) / dy;
94 plsc->wdxscl = plsc->wmxscl * plsc->xpmm / ( plsc->phyxma - plsc->phyxmi );
95 plsc->wdxoff = plsc->wmxoff * plsc->xpmm / ( plsc->phyxma - plsc->phyxmi );
96 plsc->wdyscl = plsc->wmyscl * plsc->ypmm / ( plsc->phyyma - plsc->phyymi );
97 plsc->wdyoff = plsc->wmyoff * plsc->ypmm / ( plsc->phyyma - plsc->phyymi );
101 w.
dxmi = plsc->vpdxmi;
102 w.
dxma = plsc->vpdxma;
103 w.
dymi = plsc->vpdymi;
104 w.
dyma = plsc->vpdyma;
143 PLFLT xmin_adjusted, xmax_adjusted, ymin_adjusted, ymax_adjusted, zmin_adjusted, zmax_adjusted, d;
144 PLFLT cx, cy, saz, caz, salt, calt, zscale;
146 if ( plsc->level < 3 )
148 plabort(
"plw3d: Please set up 2-d window first" );
151 if ( basex <= 0.0 || basey <= 0.0 || height <= 0.0 )
153 plabort(
"plw3d: Invalid world coordinate boxsize" );
156 if ( xmin == xmax || ymin == ymax || zmin == zmax )
158 plabort(
"plw3d: Invalid axis range" );
161 if ( alt < 0.0 || alt > 90.0 )
163 plabort(
"plw3d: Altitude must be between 0 and 90 degrees" );
167 d = 1.0e-5 * ( xmax -
xmin );
168 xmax_adjusted = xmax + d;
169 xmin_adjusted = xmin - d;
170 d = 1.0e-5 * ( ymax -
ymin );
171 ymax_adjusted = ymax + d;
172 ymin_adjusted = ymin - d;
173 d = 1.0e-5 * ( zmax - zmin );
174 zmax_adjusted = zmax + d;
175 zmin_adjusted = zmin - d;
176 cx = basex / ( xmax_adjusted - xmin_adjusted );
177 cy = basey / ( ymax_adjusted - ymin_adjusted );
178 zscale = height / ( zmax_adjusted - zmin_adjusted );
179 saz = sin(
dtr * az );
180 caz = cos(
dtr * az );
181 salt = sin(
dtr * alt );
182 calt = cos(
dtr * alt );
184 plsc->domxmi = xmin_adjusted;
185 plsc->domxma = xmax_adjusted;
186 plsc->domymi = ymin_adjusted;
187 plsc->domyma = ymax_adjusted;
188 plsc->zzscl = zscale;
189 plsc->ranmi = zmin_adjusted;
190 plsc->ranma = zmax_adjusted;
192 plsc->base3x = basex;
193 plsc->base3y = basey;
194 plsc->basecx = 0.5 * ( xmin_adjusted + xmax_adjusted );
195 plsc->basecy = 0.5 * ( ymin_adjusted + ymax_adjusted );
234 plsc->cxx = cx * caz;
235 plsc->cxy = -cy * saz;
236 plsc->cyx = cx * saz * salt;
237 plsc->cyy = cy * caz * salt;
238 plsc->cyz = zscale * calt;
239 plsc->czx = -cx * calt * saz;
240 plsc->czy = -cy * calt * caz;
241 plsc->czz = zscale * salt;