PySide2 Qt表面检查

2024-09-28 22:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想重新实现PySID2中的Qt+C++“Surface”示例(q3dFurm),但{{CD1>}和^ {< CD2>}不可用。你知道吗

void SurfaceGraph::fillSqrtSinProxy()
{
    float stepX = (sampleMax - sampleMin) / float(sampleCountX - 1);
    float stepZ = (sampleMax - sampleMin) / float(sampleCountZ - 1);

    QSurfaceDataArray *dataArray = new QSurfaceDataArray;
    dataArray->reserve(sampleCountZ);
    for (int i = 0 ; i < sampleCountZ ; i++) {
        QSurfaceDataRow *newRow = new QSurfaceDataRow(sampleCountX);
        // Keep values within range bounds, since just adding step can cause minor drift due
        // to the rounding errors.
        float z = qMin(sampleMax, (i * stepZ + sampleMin));
        int index = 0;
        for (int j = 0; j < sampleCountX; j++) {
            float x = qMin(sampleMax, (j * stepX + sampleMin));
            float R = qSqrt(z * z + x * x) + 0.01f;
            float y = (qSin(R) / R + 0.24f) * 1.61f;
            (*newRow)[index++].setPosition(QVector3D(x, y, z));
        }
        *dataArray << newRow;
    }

    m_sqrtSinProxy->resetArray(dataArray);
}

有没有办法在PySide2中使用QVector<QSurfaceDataItem>?你知道吗

from PySide2.QtDataVisualization import QtDataVisualization as QDV

data_item = QDV.QSurfaceDataItem()
data_item.setPosition(QVector3D(x, y, z))

QSurfaceDataItem可用,但如果没有QVector,我无法将对象传递给QSurfaceDataProxy。你知道吗


Tags: newforfloatintnewrowdataarraystepxsamplemin