void SlewDialog::getCenterInfo() { StelCore *core = StelApp::getInstance().getCore(); const StelProjectorP projector = core->getProjection(StelCore::FrameEquinoxEqu); Vec3d centerPosition; Vec2f center = projector->getViewportCenter(); projector->unProject(center[0], center[1], centerPosition); double dec_j2000 = 0; double ra_j2000 = 0; StelUtils::rectToSphe(&ra_j2000,&dec_j2000,core->equinoxEquToJ2000(centerPosition)); ui->spinBoxRA->setRadians(ra_j2000); ui->spinBoxDec->setRadians(dec_j2000); }
StelViewportDistorterFisheyeToSphericMirror::StelViewportDistorterFisheyeToSphericMirror (int screenWidth,int screenHeight, StelRenderer* renderer) : screenWidth(screenWidth) , screenHeight(screenHeight) , originalProjectorParams(StelApp::getInstance().getCore()-> getCurrentStelProjectorParams()) , maxTexCoords(1.0f, 1.0f) , texCoordGrid(NULL) , vertexGrid(renderer->createVertexBuffer<Vertex>(PrimitiveType_TriangleStrip)) { QSettings& conf = *StelApp::getInstance().getSettings(); StelCore* core = StelApp::getInstance().getCore(); // initialize viewport parameters and texture size: // maximum FOV value of the not yet distorted image double distorterMaxFOV = conf.value("spheric_mirror/distorter_max_fov",175.f).toFloat(); if (distorterMaxFOV > 240.f) { qDebug() << "spheric_mirror/distorter_max_fov too high : setting to 240.0"; distorterMaxFOV = 240.f; } else if (distorterMaxFOV < 120.f) { qDebug() << "spheric_mirror/distorter_max_fov too low : setting to 120.0"; distorterMaxFOV = 120.f; } if (distorterMaxFOV > core->getMovementMgr()->getMaxFov()) distorterMaxFOV = core->getMovementMgr()->getMaxFov(); StelProjectorP proj = core->getProjection(StelCore::FrameJ2000); core->getMovementMgr()->setMaxFov(distorterMaxFOV); // width of the not yet distorted image newProjectorParams.viewportXywh[2] = conf.value("spheric_mirror/newProjectorParams.viewportXywh[2]idth", originalProjectorParams.viewportXywh[2]).toInt(); if (newProjectorParams.viewportXywh[2] <= 0) { newProjectorParams.viewportXywh[2] = originalProjectorParams.viewportXywh[2]; } else if (newProjectorParams.viewportXywh[2] > screenWidth) { newProjectorParams.viewportXywh[2] = screenWidth; } // height of the not yet distorted image newProjectorParams.viewportXywh[3] = conf.value("spheric_mirror/newProjectorParams.viewportXywh[3]eight", originalProjectorParams.viewportXywh[3]).toInt(); if (newProjectorParams.viewportXywh[3] <= 0) { newProjectorParams.viewportXywh[3] = originalProjectorParams.viewportXywh[3]; } else if (newProjectorParams.viewportXywh[3] > screenHeight) { newProjectorParams.viewportXywh[3] = screenHeight; } // center of the FOV-disk in the not yet distorted image newProjectorParams.viewportCenter[0] = conf.value("spheric_mirror/viewportCenterX", 0.5*newProjectorParams.viewportXywh[2]).toFloat(); newProjectorParams.viewportCenter[1] = conf.value("spheric_mirror/viewportCenterY", 0.5*newProjectorParams.viewportXywh[3]).toFloat(); // diameter of the FOV-disk in pixels newProjectorParams.viewportFovDiameter = conf.value("spheric_mirror/viewport_fov_diameter", qMin(newProjectorParams.viewportXywh[2], newProjectorParams.viewportXywh[3])).toFloat(); // Vestigial mirror texture dimensions: used to be a single value, // the closest power of 2 higher or equal to the larger screen dimension. texture_w = newProjectorParams.viewportXywh[2]; texture_h = newProjectorParams.viewportXywh[3]; // while (texture_wh < newProjectorParams.viewportXywh[2] || // texture_wh < newProjectorParams.viewportXywh[3]) // { // texture_wh <<= 1; // } // TODO: Given the above, is there any point in this? --BM newProjectorParams.viewportXywh[0] = (screenWidth-newProjectorParams.viewportXywh[2]) >> 1; newProjectorParams.viewportXywh[1] = (screenHeight-newProjectorParams.viewportXywh[3]) >> 1; StelApp::getInstance().getCore()->setCurrentStelProjectorParams(newProjectorParams); const QString customDistortionFileName = QDir::fromNativeSeparators(conf.value("spheric_mirror/custom_distortion_file","").toString()); if (customDistortionFileName.isEmpty()) { generateDistortion(conf, proj, distorterMaxFOV, renderer); } else if (!loadDistortionFromFile(customDistortionFileName, renderer)) { qDebug() << "Falling back to generated distortion"; generateDistortion(conf, proj, distorterMaxFOV, renderer); } vertexGrid->lock(); }