Qt Data Visualization построение фигуры
Хочу построить c помощью QtDataVisualization куб в пространстве. Строю из отдельных плоскостей Q3DSurface (квадратов из 4 точек)
Код для двух плоскостей:
{
////First side////
side_1.setX( -100 );
side_1.setY( 0 );
side_1.setZ( 100 );
side_2.setX( 100 );
side_2.setY( 0 );
side_2.setZ( 100 );
side_3.setX( -100 );
side_3.setY( 100 );
side_3.setZ( 100 );
side_4.setX( 100 );
side_4.setY( 100 );
side_4.setZ( 100 );
createSurface( graph, side_1, side_2, side_3, side_4, Qt::blue );
/////Second side////
side_5.setX( -100 );
side_5.setY( 0 );
side_5.setZ( 100 );
side_6.setX( -100 );
side_6.setY( 0 );
side_6.setZ( 200 );
side_7.setX( -100 );
side_7.setY( 100 );
side_7.setZ( 100 );
side_8.setX( -100 );
side_8.setY( 100 );
side_8.setZ( 200 );
createSurface( graph, side_5, side_6, side_7, side_8, Qt::blue );
};
void createSurface( Q3DSurface *graph, QVector3D point_1, QVector3D point_2, QVector3D point_3, QVector3D point_4, QColor color )
{
QLinearGradient data_gradient( 0, 0, 1, 100 );
data_gradient.setColorAt( 1.0, color );
QSurface3DSeries *series = setSeries( data_gradient );
series->dataProxy()->resetArray( createSurfaceSide( point_1, point_2, point_3, point_4 ) );
graph->addSeries( series );
}
QSurface3DSeries *setSeries( QLinearGradient data_gradient )
{
QSurface3DSeries *series = new QSurface3DSeries;
series->setBaseGradient( data_gradient );
series->setColorStyle( Q3DTheme::ColorStyleObjectGradient );
series->setMesh( QAbstract3DSeries::MeshCylinder );
return series;
}
QSurfaceDataArray *createSurfaceSide( QVector3D point_1, QVector3D point_2,
QVector3D point_3, QVector3D point_4 )
{
QSurfaceDataArray *side = new QSurfaceDataArray;
QSurfaceDataRow *dataRow1 = new QSurfaceDataRow;
QSurfaceDataRow *dataRow2 = new QSurfaceDataRow;
*dataRow1 << point_2 << point_1;
*dataRow2 << point_3 << point_4;
*side << dataRow1 << dataRow2;
return side;
}
При добавлении нового квадрата, если он не лежит на одной прямой по оси Z софт крашится.
То есть, если две плоскости __ __ , то все ок.
Если две плоскости |_ , то софт крашится.
Что делаю не так? И может есть другой более простой способ построения, чем строить из квадратов?