本文整理汇总了C++中StelPainter::getProjector方法的典型用法代码示例。如果您正苦于以下问题:C++ StelPainter::getProjector方法的具体用法?C++ StelPainter::getProjector怎么用?C++ StelPainter::getProjector使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StelPainter
的用法示例。
在下文中一共展示了StelPainter::getProjector方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: draw
void Quasar::draw(StelCore* core, StelPainter& painter)
{
StelSkyDrawer* sd = core->getSkyDrawer();
Vec3f color = sd->indexToColor(BvToColorIndex(bV))*0.75f;
Vec3f dcolor = Vec3f(1.2f,0.5f,0.4f);
if (StelApp::getInstance().getVisionModeNight())
dcolor = StelUtils::getNightColor(dcolor);
float rcMag[2], size, shift;
double mag;
StelUtils::spheToRect(qRA, qDE, XYZ);
mag = getVMagnitude(core, true);
if (GETSTELMODULE(Quasars)->getDisplayMode())
{
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE);
painter.setColor(dcolor[0], dcolor[1], dcolor[2], 1);
Quasar::markerTexture->bind();
size = getAngularSize(NULL)*M_PI/180.*painter.getProjector()->getPixelPerRadAtCenter();
shift = 5.f + size/1.6f;
if (labelsFader.getInterstate()<=0.f)
{
painter.drawSprite2dMode(XYZ, 4);
painter.drawText(XYZ, " ", 0, shift, shift, false);
}
}
else
{
sd->preDrawPointSource(&painter);
if (mag <= sd->getLimitMagnitude())
{
sd->computeRCMag(mag, rcMag);
//sd->drawPointSource(&painter, Vec3f(XYZ[0], XYZ[1], XYZ[2]), rcMag, sd->indexToColor(BvToColorIndex(bV)), false);
sd->drawPointSource(&painter, XYZ, rcMag, sd->indexToColor(BvToColorIndex(bV)), false);
painter.setColor(color[0], color[1], color[2], 1);
size = getAngularSize(NULL)*M_PI/180.*painter.getProjector()->getPixelPerRadAtCenter();
shift = 6.f + size/1.8f;
if (labelsFader.getInterstate()<=0.f)
{
painter.drawText(XYZ, designation, 0, shift, shift, false);
}
}
sd->postDrawPointSource(&painter);
}
}
示例2: drawLines
// Draw constellations lines
void ConstellationMgr::drawLines(StelPainter& sPainter, const StelCore* core) const
{
sPainter.enableTexture2d(false);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
if (constellationLineThickness>1.f)
glLineWidth(constellationLineThickness); // set line thickness
// OpenGL ES 2.0 doesn't have GL_LINE_SMOOTH. But it looks much better.
#ifdef GL_LINE_SMOOTH
if (QOpenGLContext::currentContext()->format().renderableType()==QSurfaceFormat::OpenGL)
glEnable(GL_LINE_SMOOTH);
#endif
const SphericalCap& viewportHalfspace = sPainter.getProjector()->getBoundingCap();
vector < Constellation * >::const_iterator iter;
for (iter = asterisms.begin(); iter != asterisms.end(); ++iter)
{
(*iter)->drawOptim(sPainter, core, viewportHalfspace);
}
if (constellationLineThickness>1.f)
glLineWidth(1.f); // restore line thickness
// OpenGL ES 2.0 doesn't have GL_LINE_SMOOTH. But it looks much better.
#ifdef GL_LINE_SMOOTH
if (QOpenGLContext::currentContext()->format().renderableType()==QSurfaceFormat::OpenGL)
glDisable(GL_LINE_SMOOTH);
#endif
}
示例3: drawLabel
void Nebula::drawLabel(StelPainter& sPainter, float maxMagLabel)
{
float lim = mag;
if (lim > 50) lim = 15.f;
// temporary workaround of this bug: https://bugs.launchpad.net/stellarium/+bug/1115035 --AW
if (getEnglishName().contains("Pleiades"))
lim = 5.f;
if (lim>maxMagLabel)
return;
Vec3f col(labelColor[0], labelColor[1], labelColor[2]);
sPainter.setColor(col[0], col[1], col[2], hintsBrightness);
float size = getAngularSize(NULL)*M_PI/180.*sPainter.getProjector()->getPixelPerRadAtCenter();
float shift = 4.f + size/1.8f;
QString str;
if (!nameI18.isEmpty())
str = getNameI18n();
else
{
if (M_nb > 0)
str = QString("M %1").arg(M_nb);
else if (C_nb > 0)
str = QString("C %1").arg(C_nb);
else if (NGC_nb > 0)
str = QString("NGC %1").arg(NGC_nb);
else if (IC_nb > 0)
str = QString("IC %1").arg(IC_nb);
}
sPainter.drawText(XY[0]+shift, XY[1]+shift, str, 0, 0, 0, false);
}
示例4: draw
void Galaxy::draw(StelCore* core, StelPainter& painter, float)
{
StelSkyDrawer* sd = core->getSkyDrawer();
Vec3f color = Vec3f(0.4f,0.5f,1.2f);
if (StelApp::getInstance().getVisionModeNight())
color = StelUtils::getNightColor(color);
double mag = getVMagnitude(core, true);
StelUtils::spheToRect(RA, DE, XYZ);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
painter.setColor(color[0], color[1], color[2], Galaxy::galaxyBrightness);
glColor4f(color[0],color[1],color[2], Galaxy::galaxyBrightness);
if (mag <= sd->getLimitMagnitude())
{
Galaxy::markerTexture->bind();
float size = getAngularSize(NULL)*M_PI/180.*painter.getProjector()->getPixelPerRadAtCenter();
float shift = 5.f + size/1.6f;
if (GETSTELMODULE(POGS)->getDisplayMode())
{
painter.drawSprite2dMode(XYZ, 6);
painter.drawText(XYZ, " ", 0, shift, shift, false);
}
else
{
painter.drawSprite2dMode(XYZ, 6);
painter.drawText(XYZ, designation, 0, shift, shift, false);
}
}
}
示例5: draw
void Supernova::draw(StelCore* core, StelPainter& painter)
{
StelSkyDrawer* sd = core->getSkyDrawer();
Vec3f color = Vec3f(1.f,1.f,1.f);
if (StelApp::getInstance().getVisionModeNight())
color = StelUtils::getNightColor(color);
float rcMag[2], size, shift;
double mag;
StelUtils::spheToRect(snra, snde, XYZ);
mag = getVMagnitude(core, true);
sd->preDrawPointSource(&painter);
if (mag <= sd->getLimitMagnitude())
{
sd->computeRCMag(mag, rcMag);
// sd->drawPointSource(&painter, Vec3f(XYZ[0], XYZ[1], XYZ[2]), rcMag, color, false);
sd->drawPointSource(&painter, XYZ, rcMag, color, false);
painter.setColor(color[0], color[1], color[2], 1);
size = getAngularSize(NULL)*M_PI/180.*painter.getProjector()->getPixelPerRadAtCenter();
shift = 6.f + size/1.8f;
if (labelsFader.getInterstate()<=0.f)
{
painter.drawText(XYZ, designation, 0, shift, shift, false);
}
}
sd->postDrawPointSource(&painter);
}
示例6: drawPointer
void StarMgr::drawPointer(StelPainter& sPainter, const StelCore* core)
{
const QList<StelObjectP> newSelected = objectMgr->getSelectedObject("Star");
if (!newSelected.empty())
{
const StelObjectP obj = newSelected[0];
Vec3d pos=obj->getJ2000EquatorialPos(core);
Vec3d screenpos;
// Compute 2D pos and return if outside screen
if (!sPainter.getProjector()->project(pos, screenpos))
return;
Vec3f c(obj->getInfoColor());
if (StelApp::getInstance().getVisionModeNight())
c = StelUtils::getNightColor(c);
sPainter.setColor(c[0], c[1], c[2]);
texPointer->bind();
sPainter.enableTexture2d(true);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Normal transparency mode
sPainter.drawSprite2dMode(screenpos[0], screenpos[1], 13.f, StelApp::getInstance().getTotalRunTime()*40.);
}
}
示例7: drawArt
// Draw the art texture
void Constellation::drawArt(StelPainter& sPainter) const
{
glBlendFunc(GL_ONE, GL_ONE);
sPainter.enableTexture2d(true);
glEnable(GL_BLEND);
glEnable(GL_CULL_FACE);
SphericalRegionP region = sPainter.getProjector()->getViewportConvexPolygon();
drawArtOptim(sPainter, *region);
glDisable(GL_CULL_FACE);
}
示例8: drawLines
// Draw constellations lines
void ConstellationMgr::drawLines(StelPainter& sPainter, const StelCore* core) const
{
sPainter.enableTexture2d(false);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
const SphericalCap& viewportHalfspace = sPainter.getProjector()->getBoundingCap();
vector < Constellation * >::const_iterator iter;
for (iter = asterisms.begin(); iter != asterisms.end(); ++iter)
{
(*iter)->drawOptim(sPainter, core, viewportHalfspace);
}
}
示例9: drawNames
// Draw the names of all the constellations
void ConstellationMgr::drawNames(StelPainter& sPainter) const
{
glEnable(GL_BLEND);
sPainter.enableTexture2d(true);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
vector < Constellation * >::const_iterator iter;
for (iter = asterisms.begin(); iter != asterisms.end(); iter++)
{
// Check if in the field of view
if (sPainter.getProjector()->projectCheck((*iter)->XYZname, (*iter)->XYname))
(*iter)->drawName(sPainter);
}
}
示例10: draw
void TleTraj::draw(const StelCore *core, StelPainter& painter)
{
Vec3d pos;
satd2StelCoord(curData, pos);
XYZ = core->altAzToJ2000(pos);
Vec3d xy;
if (painter.getProjector()->project(pos, xy))
{
glEnable(GL_TEXTURE_2D);
glColor3f(orbitColor->redF(), orbitColor->greenF(), orbitColor->blueF());
hintTexture->bind();
painter.drawSprite2dMode(xy[0], xy[1], 16);
glDisable(GL_TEXTURE_2D);
drawOrbit(painter);
}
}
示例11: drawArt
// Draw constellations art textures
void ConstellationMgr::drawArt(StelPainter& sPainter) const
{
glBlendFunc(GL_ONE, GL_ONE);
sPainter.enableTexture2d(true);
glEnable(GL_BLEND);
glEnable(GL_CULL_FACE);
vector < Constellation * >::const_iterator iter;
SphericalRegionP region = sPainter.getProjector()->getViewportConvexPolygon();
for (iter = asterisms.begin(); iter != asterisms.end(); ++iter)
{
(*iter)->drawArtOptim(sPainter, *region);
}
glDisable(GL_CULL_FACE);
}
示例12: drawPointer
void Novae::drawPointer(StelCore* core, StelPainter &painter)
{
const QList<StelObjectP> newSelected = GETSTELMODULE(StelObjectMgr)->getSelectedObject("Nova");
if (!newSelected.empty())
{
const StelObjectP obj = newSelected[0];
Vec3d pos=obj->getJ2000EquatorialPos(core);
Vec3d screenpos;
// Compute 2D pos and return if outside screen
if (!painter.getProjector()->project(pos, screenpos))
return;
const Vec3f& c(obj->getInfoColor());
painter.setColor(c[0],c[1],c[2]);
texPointer->bind();
painter.enableTexture2d(true);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Normal transparency mode
painter.drawSprite2dMode(screenpos[0], screenpos[1], 13.f, StelApp::getInstance().getTotalRunTime()*40.);
}
}
示例13: drawPointer
void Pulsars::drawPointer(StelCore* core, StelPainter& painter)
{
const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000);
const QList<StelObjectP> newSelected = GETSTELMODULE(StelObjectMgr)->getSelectedObject("Pulsar");
if (!newSelected.empty())
{
const StelObjectP obj = newSelected[0];
Vec3d pos=obj->getJ2000EquatorialPos(core);
Vec3d screenpos;
// Compute 2D pos and return if outside screen
if (!painter.getProjector()->project(pos, screenpos))
return;
const Vec3f& c(obj->getInfoColor());
painter.setColor(c[0],c[1],c[2]);
texPointer->bind();
painter.setBlending(true);
painter.drawSprite2dMode(screenpos[0], screenpos[1], 13.f, StelApp::getInstance().getTotalRunTime()*40.);
}
}
示例14: drawBoundaryOptim
void Constellation::drawBoundaryOptim(StelPainter& sPainter) const
{
if (!boundaryFader.getInterstate())
return;
sPainter.enableTexture2d(false);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Normal transparency mode
sPainter.setColor(boundaryColor[0], boundaryColor[1], boundaryColor[2], boundaryFader.getInterstate());
unsigned int i, j;
size_t size;
Vec3f pt1, pt2;
Vec3d ptd1, ptd2;
std::vector<Vec3f> *points;
if (singleSelected) size = isolatedBoundarySegments.size();
else size = sharedBoundarySegments.size();
const SphericalCap& viewportHalfspace = sPainter.getProjector()->getBoundingCap();
for (i=0;i<size;i++)
{
if (singleSelected) points = isolatedBoundarySegments[i];
else points = sharedBoundarySegments[i];
for (j=0;j<points->size()-1;j++)
{
pt1 = points->at(j);
pt2 = points->at(j+1);
if (pt1*pt2>0.9999999f)
continue;
ptd1.set(pt1[0], pt1[1], pt1[2]);
ptd2.set(pt2[0], pt2[1], pt2[2]);
sPainter.drawGreatCircleArc(ptd1, ptd2, &viewportHalfspace);
}
}
}
示例15: draw
bool SkyLabel::draw(StelCore* core, StelPainter& sPainter)
{
if(labelFader.getInterstate() <= 0.0)
return false;
Vec3d objectPos = labelObject->getJ2000EquatorialPos(core);
Vec3d labelXY;
sPainter.getProjector()->project(objectPos,labelXY);
sPainter.setFont(labelFont);
double xOffset(0.);
double yOffset(0.);
char hJustify = 'c';
char vJustify = 'c';
if (labelSide.toUpper().contains("N"))
{
yOffset = 1.0;
vJustify = 'b'; // bottom justify text
}
else if (labelSide.toUpper().contains("S"))
{
yOffset = -1.0;
vJustify = 't'; // top justufy text
}
if (labelSide.toUpper().contains("E"))
{
xOffset = 1.0;
hJustify = 'l'; // right justify text
}
else if (labelSide.toUpper().contains("W"))
{
xOffset = -1.0;
hJustify = 'r'; // left justify text
}
if (labelDistance >= 0.0)
{
xOffset *= labelDistance;
yOffset *= labelDistance;
}
else
{
float shift = 4.f + labelObject->getAngularSize(core)*M_PI/180.*sPainter.getProjector()->getPixelPerRadAtCenter()/1.8f;
// use the object size
xOffset *= shift;
yOffset *= shift;
}
double jxOffset(0.);
double jyOffset(0.);
if (hJustify == 'r')
jxOffset = sPainter.getFontMetrics().width(labelText);
else if (hJustify == 'c')
jxOffset = sPainter.getFontMetrics().width(labelText) / 2.;
if (vJustify == 't')
jyOffset = sPainter.getFontMetrics().height();
else if (vJustify == 'c')
jyOffset = sPainter.getFontMetrics().height() / 2.;
sPainter.setColor(labelColor[0], labelColor[1], labelColor[2], labelFader.getInterstate());
sPainter.drawText(labelXY[0]+xOffset-jxOffset, labelXY[1]+yOffset-jyOffset, labelText, 0, 0, 0, false);
if (labelStyle == SkyLabel::Line)
{
sPainter.enableTexture2d(false);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// screen coordinates of object
Vec3d objXY;
sPainter.getProjector()->project(objectPos,objXY);
double lineEndX = labelXY[0]+xOffset;
double lineEndY = labelXY[1]+yOffset;
if (vJustify == 'b')
lineEndY -= 5;
else if (vJustify == 't')
lineEndY += 5;
if (hJustify == 'l')
lineEndX -= 5;
else if (hJustify == 'r')
lineEndX += 5;
sPainter.setColor(labelColor[0], labelColor[1], labelColor[2], labelFader.getInterstate());
sPainter.drawLine2d(lineEndX,lineEndY,objXY[0], objXY[1]);
}
return true;
}