示例#1
0
    void StateVisualiser::operator()() {

        inputGeneralisedCoordinatesQueue_.subscribe();

        model_.setUseVisualizer(true);
        SimTK::State s(model_.initSystem());
        SimTK::Visualizer &viz = model_.updVisualizer().updSimbodyVisualizer();
        viz.setShowFrameRate(false);
        viz.setShutdownWhenDestructed(true);
        viz.setMode(SimTK::Visualizer::Mode::Sampling);
        viz.setShutdownWhenDestructed(true);
        viz.setDesiredBufferLengthInSec(5);
        viz.setDesiredFrameRate(60);
        ShowInfo* info = new ShowInfo();
        viz.addDecorationGenerator(info);
        auto start = std::chrono::system_clock::now();
        int frameCounter = 0;
        bool localRunCondition(true);
        while (localRunCondition) {

            rtosim::GeneralisedCoordinatesFrame currentCoordinatesFrame(inputGeneralisedCoordinatesQueue_.pop());
            if (rtosim::EndOfData::isEod(currentCoordinatesFrame))
                localRunCondition = false;
            else {
                rtosim::GeneralisedCoordinatesData currentCoordinates(currentCoordinatesFrame.data);
                auto q(currentCoordinates.getQ());
                for (unsigned i(0); i < currentCoordinates.getNCoordinates(); ++i)
                    s.updQ()[i] = q[i];
            }

            viz.report(s);
            frameCounter++;

            if ((std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - start)) > std::chrono::milliseconds(1000)) {
                info->setText("IK FPS: " + std::to_string(frameCounter));
                start = std::chrono::system_clock::now();
                frameCounter = 0;
            }
        }
    }
示例#2
0
TabDrawMap TabSwitcherObject::tabDrawMap() const
{
    TabDrawMap result;
    NumberMap coordinates = currentCoordinates();
    double buttonSize = Design::instance()->size(Design::GraphicButtonDefaultIconSize);
    double elementSpacing = Design::instance()->size(Design::TabElementSpacing);
    for (int i = 0; i < m_data.items.count(); i++)
    {
        TabDrawInfo item;
        QUuid uid = m_data.items[i].uid;
        item.index = i;
        item.uid = uid;
        double left = coordinates[uid];
        item.tabRect = QRectF(left, rect().top(), currentTabWidth(), rect().height());
        item.textRect = QRectF(item.tabRect.left() + elementSpacing, rect().top(), currentTabWidth() - buttonSize - elementSpacing*3.0, rect().height());
        item.closeButtonRect = QRectF(item.tabRect.right() - buttonSize - elementSpacing, item.tabRect.center().y() - buttonSize/2.0, buttonSize, buttonSize);
        item.text = m_data.items[i].label;
        item.isActive = (i == m_data.currentIndex);
        item.isMoving = item.isActive && m_isMovingCurrentTab;
        result[uid] = item;
    }
    return result;
}
void PlotWidgetLevelDrawingState::treatPaintEvent(QPaintEvent */*event*/)
{

    if (mPlotWidget->axisRectCount() != 0) {
        int &xCurrent = mXCurrentPosition;
        int &yCurrent = mYCurrentPosition;

        for (int axisRectIndex = 0; axisRectIndex < mPlotWidget->axisRectCount(); ++axisRectIndex) {
            QRect axisRec = mPlotWidget->axisRect(axisRectIndex)->rect();
            if (((xCurrent >= axisRec.x()) && (xCurrent <= axisRec.x()+ axisRec.width()))
                && ((yCurrent >= axisRec.y()) && (yCurrent <= axisRec.y()+ axisRec.height()))) {
                    QPainter painter(mPlotWidget);
                    painter.setPen(QPen(mPlotWidget->mPlotStyle.mColorPref.mGraficalPrimitivesColor));
                    painter.drawLine(xCurrent, 0, xCurrent, mPlotWidget->height());
                    painter.drawLine(0, yCurrent, mPlotWidget->width(), yCurrent);
                    double xOut = mPlotWidget->axisRect(axisRectIndex)->axis(QCPAxis::atBottom)->pixelToCoord(xCurrent);
                    double yOut = mPlotWidget->axisRect(axisRectIndex)->axis(QCPAxis::atLeft)->pixelToCoord(yCurrent);
                    emit currentCoordinates(xOut, yOut);
                    drawTracers(painter);
                    break;
            }
        }
    }
}