/************************************************************************* Draw our module. This should draw line in the main window *************************************************************************/ void SimpleDrawLine::draw(StelCore* core, StelRenderer* renderer) { const StelProjectorP prj = core->getProjection(StelCore::FrameAltAz); Vec3d startPoint, endPoint; double lon1, lat1, lon2, lat2; lon1 = StelUtils::getDecAngle("10d"); lat1 = StelUtils::getDecAngle("-5d"); lon2 = StelUtils::getDecAngle("73d"); lat2 = StelUtils::getDecAngle("80d"); StelUtils::spheToRect(lon1,lat1,startPoint); StelUtils::spheToRect(lon2,lat2,endPoint); renderer->setGlobalColor(1.f, 0.5f, 0.5f, 1.f); StelCircleArcRenderer circleArcRenderer = StelCircleArcRenderer(renderer, prj); circleArcRenderer.drawGreatCircleArc(startPoint, endPoint); }
void Constellation::drawOptim(StelRenderer* renderer, StelProjectorP projector, const StelCore* core, const SphericalCap& viewportHalfspace) const { // Avoid drawing when not visible if (lineFader.getInterstate() <= 0.001f) { return; } renderer->setGlobalColor(lineColor[0], lineColor[1], lineColor[2], lineFader.getInterstate()); Vec3d star1; Vec3d star2; for (unsigned int i = 0; i < numberOfSegments; ++i) { star1 = asterism[2 * i]->getJ2000EquatorialPos(core); star2 = asterism[2 * i + 1]->getJ2000EquatorialPos(core); star1.normalize(); star2.normalize(); StelCircleArcRenderer(renderer, projector) .drawGreatCircleArc(star1, star2, &viewportHalfspace); } }
void Constellation::drawBoundaryOptim(StelRenderer* renderer, StelProjectorP projector) const { if (boundaryFader.getInterstate() < 0.001) { return; } renderer->setBlendMode(BlendMode_Alpha); renderer->setGlobalColor(boundaryColor[0], boundaryColor[1], boundaryColor[2], boundaryFader.getInterstate()); int size = singleSelected ? isolatedBoundarySegments.size() : sharedBoundarySegments.size(); const SphericalCap& viewportHalfspace = projector->getBoundingCap(); for (int i = 0; i < size; i++) { std::vector<Vec3f>* points = singleSelected ? isolatedBoundarySegments[i] : sharedBoundarySegments[i]; for (int j = 0; j < static_cast<int>(points->size()) - 1; j++) { const Vec3f pt1 = points->at(j) ; const Vec3f pt2 = points->at(j +1); if (pt1 * pt2 > 0.9999999f) { continue; } const Vec3d ptd1(pt1[0], pt1[1], pt1[2]); const Vec3d ptd2(pt2[0], pt2[1], pt2[2]); StelCircleArcRenderer(renderer, projector) .drawGreatCircleArc(ptd1, ptd2, &viewportHalfspace); } } }