You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
4.1 KiB
133 lines
4.1 KiB
#ifndef qwt3d_SurfacePlot_h__2004_03_05_11_36_begin_guarded_code
|
|
#define qwt3d_SurfacePlot_h__2004_03_05_11_36_begin_guarded_code
|
|
|
|
#include "qwt3d_plot.h"
|
|
|
|
namespace Qwt3D
|
|
{
|
|
//! A class representing Surfaces
|
|
/**
|
|
A SurfacePlot ...
|
|
|
|
*/
|
|
class QWT3D_EXPORT SurfacePlot : public Plot3D
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
#if QT_VERSION < 0x040000
|
|
SurfacePlot( QWidget* parent = 0, const char* name = 0 );
|
|
#else
|
|
SurfacePlot( QWidget * parent = 0, const QGLWidget * shareWidget = 0 );
|
|
#endif
|
|
~SurfacePlot();
|
|
void updateNormals(); //!< Recalculates surface normals;
|
|
int resolution() const {return resolution_p;} //!< Returns data resolution (1 means all data)
|
|
std::pair<int,int> facets() const; //!< Returns the number of mesh cells for the ORIGINAL data
|
|
bool loadFromData(Qwt3D::Triple** data, unsigned int columns, unsigned int rows
|
|
, bool uperiodic = false, bool vperiodic = false);
|
|
bool loadFromData(double** data, unsigned int columns, unsigned int rows
|
|
,double minx, double maxx, double miny, double maxy);
|
|
bool loadFromData(Qwt3D::TripleField const& data, Qwt3D::CellField const& poly);
|
|
|
|
|
|
//! Equivalent to loadFromData();
|
|
/**
|
|
\deprecated Use loadFromData instead
|
|
*/
|
|
bool createDataRepresentation(Qwt3D::Triple** data, unsigned int columns, unsigned int rows
|
|
, bool uperiodic = false, bool vperiodic = false)
|
|
{
|
|
return loadFromData(data, columns, rows, uperiodic, vperiodic);
|
|
}
|
|
//! Equivalent to loadFromData();
|
|
/**
|
|
\deprecated Use loadFromData instead
|
|
*/
|
|
bool createDataRepresentation(double** data, unsigned int columns, unsigned int rows
|
|
,double minx, double maxx, double miny, double maxy)
|
|
{
|
|
return loadFromData(data, columns, rows, minx, maxx, miny, maxy);
|
|
}
|
|
//! Equivalent to loadFromData();
|
|
/**
|
|
\deprecated Use loadFromData instead
|
|
*/
|
|
bool createDataRepresentation(Qwt3D::TripleField const& data, Qwt3D::CellField const& poly)
|
|
{
|
|
return loadFromData(data, poly);
|
|
}
|
|
|
|
|
|
Qwt3D::FLOORSTYLE floorStyle() const { return floorstyle_;} //!< Return floor style
|
|
void setFloorStyle( Qwt3D::FLOORSTYLE val ) {floorstyle_ = val;} //!< Sets floor style
|
|
void showNormals(bool); //!< Draw normals to every vertex
|
|
bool normals() const { return datanormals_p;} //!< Returns \c true, if normal drawing is on
|
|
|
|
void setNormalLength(double val); //!< Sets length of normals in percent per hull diagonale
|
|
double normalLength() const { return normalLength_p; }//!< Returns relative length of normals
|
|
void setNormalQuality(int val); //!< Increases plotting quality of normal arrows
|
|
int normalQuality() const { return normalQuality_p; }//!< Returns plotting quality of normal arrows
|
|
|
|
|
|
signals:
|
|
void resolutionChanged(int);
|
|
|
|
public slots:
|
|
void setResolution( int );
|
|
|
|
protected:
|
|
bool datanormals_p;
|
|
double normalLength_p;
|
|
int normalQuality_p;
|
|
|
|
virtual void calculateHull();
|
|
virtual void createData();
|
|
virtual void createEnrichment(Qwt3D::Enrichment& p);
|
|
virtual void createFloorData();
|
|
void createNormals();
|
|
void createPoints();
|
|
|
|
int resolution_p;
|
|
|
|
void readIn(Qwt3D::GridData& gdata, Triple** data, unsigned int columns, unsigned int rows);
|
|
void readIn(Qwt3D::GridData& gdata, double** data, unsigned int columns, unsigned int rows,
|
|
double minx, double maxx, double miny, double maxy);
|
|
void calcNormals(GridData& gdata);
|
|
void sewPeriodic(GridData& gdata);
|
|
|
|
//void calcLowResolution();
|
|
private:
|
|
|
|
void Data2Floor();
|
|
void Isolines2Floor();
|
|
|
|
Qwt3D::FLOORSTYLE floorstyle_;
|
|
|
|
// grid plot
|
|
|
|
Qwt3D::GridData* actualDataG_;
|
|
virtual void createDataG();
|
|
virtual void createFloorDataG();
|
|
void createNormalsG();
|
|
void Data2FloorG();
|
|
void Isolines2FloorG();
|
|
void setColorFromVertexG(int ix, int iy, bool skip = false);
|
|
|
|
|
|
// mesh plot
|
|
|
|
Qwt3D::CellData* actualDataC_;
|
|
virtual void createDataC();
|
|
virtual void createFloorDataC();
|
|
void createNormalsC();
|
|
void Data2FloorC();
|
|
void Isolines2FloorC();
|
|
void setColorFromVertexC(int node, bool skip = false);
|
|
};
|
|
|
|
} // ns
|
|
|
|
|
|
#endif
|