Beispiel #1
0
void RayCloudPlot::updateData()
{
    bool notempty = m_raycloud->updateData(m_start, m_end);
//    entity()->setEnabled(notempty);

    if (!notempty) {
        entity()->removeComponent(m_raycloud);
        return;
    }

    qDebug() << "\tAdding raycloud object";
    entity()->addComponent(m_raycloud);

    // Update ranges
    // TODO: Consider making this lazy. I.e. whenever requested to scale the plot to datalimits...
    QList<RangeValues> startlim = ArrayUtil::limitsAxis(m_start, 0);
    QList<RangeValues> endlim = ArrayUtil::limitsAxis(m_end, 0);

    QList<qreal> lims;
    for (int i=0; i<3; ++i) {
        lims << qMin(startlim[i].min, endlim[i].min);
        lims << qMax(startlim[i].max, endlim[i].max);
    }
    setDataLimits(lims);

//    qDebug() << "Update data..";
    //    axis3d()->dumpTree(entity()->parentNode(), 0);
}
Beispiel #2
0
void LineSegmentPlot::updateDataLimits()
{
    qDebug() << Q_FUNC_INFO;
    int xLen = xSize(), yLen = ySize(), endXLen = m_endX.size(), endYLen = m_endY.size();
    int N = qMin( qMin(xLen, yLen), qMin(endXLen, endYLen) );
    m_dataSize = N;

    qreal minX = Inf, maxX = -Inf, minY = Inf, maxY = -Inf;
    // Calculate the y limits
    RangeValues yrng = ArrayUtil::limits(yData());
    minY = yrng.min;
    maxY = yrng.max;

    yrng = ArrayUtil::limits(m_endY);
    minY = qMin(minY, yrng.min);
    maxY = qMax(maxY, yrng.max);

    RangeValues xrng = ArrayUtil::limits(xData());
    minX = xrng.min;
    maxX = xrng.max;

    xrng = ArrayUtil::limits(m_endX);
    minX = qMin(minX, xrng.min);
    maxX = qMax(maxX, xrng.max);

    QRectF newLim;
    newLim.setLeft(minX);
    newLim.setTop(minY);
    newLim.setRight(maxX);
    newLim.setBottom(maxY);
    setDataLimits(newLim);
}
Beispiel #3
0
void XYPlot::updateDataLimits()
{
    qDebug() << "XYPlot Update DataLimits";
    int xLen = m_xData.length(), yLen = m_yData.length();
    if (xLen == 0 || (xLen > 0 && xLen != yLen) || m_settingData)
        return; // Don't update until the data is good

    qreal minX = Inf, maxX = -Inf, minY = Inf, maxY = -Inf;
    for (int i=0; i<yLen; ++i) {
        qreal px = m_xData[i];
        qreal py = m_yData[i];
        minX = qMin(minX, px);
        maxX = qMax(maxX, px);
        minY = qMin(minY, py);
        maxY = qMax(maxY, py);
    }

    QRectF newLim;
    newLim.setLeft(minX);
    newLim.setTop(minY);
    newLim.setRight(maxX);
    newLim.setBottom(maxY);
    setDataLimits(newLim);
}