+
+ z = sqrt(0.25f-(xf-0.5f)*(xf-0.5f)*4.0f*cyl_w_sq)-0.5f+monitor->cylinder_depth;
+ if(monitor->keystone_vertical>0)
+ {
+ rz = (1.0f-yf)/aspect*sin_ksv+z*cos_ksv;
+ yf = 1.0f-((1.0f-yf)*cos_ksv-z*aspect*sin_ksv);
+ z = rz;
+ }
+ else if(monitor->keystone_vertical<0)
+ {
+ rz = z*cos_ksv-yf/aspect*sin_ksv;
+ yf = yf*cos_ksv+z*aspect*sin_ksv;
+ z = rz;
+ }
+ scale = monitor->perspective/(monitor->perspective+z);
+ v[0] = 0.5f+(xf-0.5f)*scale;
+ v[1] = monitor->vertical_center+(yf-monitor->vertical_center)*scale;