C plus plus

【VTK】关于非均匀样条插值

我们创建三个点: double p[3][3] = { {0.0, 0.0, 0.0}, {2.0, 4.0, 0.0}, {20.0, 0.0, 0.0} }; 在平面上,他们大致的分布是这样的: 很多情况下,我们希望利用spline得到picture2的插值结果。 但是,如果使用vtkParametricSpline搭配vtkParametricFunctionSource产生3个点,画出来的场景是这样的: 这对应着picture 1。 但,如果想要得到picture 2的插值呢? vtkParametricFunctionSource是支持非均匀样条插值的,只要我们设置足够的点数即可。 比如设置10个点 #include <vtkSmartPointer.h> #include <vtkParametricFunctionSource.h> #include <vtkParametricSpline.h> #include <vtkCellArray.h> #include <vtkCellData.h> #include Read more…

By theArcticOcean, ago
C plus plus

【VTK】vtkTextureMapToSphere

vtkTextureMapToSphere可以用于将纹理贴在球体上的场景。 vtkTextureMapToSphere作为filter在mapper之前进行数据处理,将二维纹理数据映射到球体上。 #include <iostream> #include <vtkSmartPointer.h> #include <vtkSphereSource.h> #include <vtkActor.h> #include <vtkConeSource.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkPolyDataMapper.h> #include <vtkProperty.h> #include <vtkRenderWindowInteractor.h> #include <vtkLight.h> #include <vtkCamera.h> #include <vtkActor2D.h> #include <vtkTextureMapToSphere.h> #include <vtkStripper.h> #include <vtkTexture.h> #include Read more…

By theArcticOcean, ago
C plus plus

【VTK】VTK教程中的三元二次方程

在VTK TCL脚本教程中,经常看到这样的系数设置: quadric->SetCoefficients( .5, 1, .2, 0, .1, 0, 0, .2, 0, 0 ); 我们需要知道,三元二次方程代表了空间中的曲面: 可以看出,这里有10个系数,他们对应着Coefficients。 #include <vtkActor.h> #include <vtkCamera.h> #include <vtkContourFilter.h> #include <vtkNamedColors.h> #include <vtkOutlineFilter.h> #include <vtkPolyDataMapper.h> #include <vtkProperty.h> #include <vtkQuadric.h> #include <vtkRenderWindow.h> #include Read more…

By theArcticOcean, ago
C plus plus

【QT】自定义数据类型在connect中的应用与QDialogButtonBox

UI布局 本例子展示自定义数据类型的注册与QDialogButtonBox的应用。 textdialog.h #ifndef TEXTDIALOG_H #define TEXTDIALOG_H #include <QDialog> #include <qabstractbutton.h> #include "textandnumber.h" namespace Ui { class TextDialog; } class TextDialog : public QDialog { Q_OBJECT public: explicit TextDialog(QWidget *parent = 0); ~TextDialog(); public slots: Read more…

By theArcticOcean, ago
C plus plus

【VTK】绘制点集

#include <vtkVersion.h> #include <vtkSmartPointer.h> #include <vtkSurfaceReconstructionFilter.h> #include <vtkProgrammableSource.h> #include <vtkContourFilter.h> #include <vtkReverseSense.h> #include <vtkPolyDataMapper.h> #include <vtkProperty.h> #include <vtkPolyData.h> #include <vtkCamera.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkSphereSource.h> #include <vtkXMLPolyDataReader.h> #include <vtkVertexGlyphFilter.h> int main(int argc, Read more…

By theArcticOcean, ago
C plus plus

【QT】与QLayout::removeWidget相关的 EXC_CRASH (SIGABRT)

在使用Layout进行widget移除的过程中,我发现这样的现象: 我将widget用QLayout::removeWidget移除后,栈内存回收,在析构函数中检测widget是否为null,然后释放内存。 gLayout->removeWidget( m_photoFrames[i]->Getm_frame() ); //... PhotoFrame::~PhotoFrame() { if( nullptr != m_frame ) { delete m_frame; m_frame = nullptr; } } 结果程序报错: Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Application Specific Read more…

By theArcticOcean, ago
C plus plus

【VTK】关于transform前乘或后乘的问题

对于vtkTransform,前乘设置,或后乘设置对点的映射计算的结果没有影响。 因为对于4*4的矩阵乘法,结果是一样的. 看下面的代码,如果将参数a和参数b换个位置,数组c存储的结果是不会变化的。 //---------------------------------------------------------------------------- // Multiplies matrices a and b and stores the result in c. inline void vtkMatrix4x4::Multiply4x4(const double a[16], const double b[16], double c[16]) { double tmp[16]; for (int i = 0; i Read more…

By theArcticOcean, ago
C plus plus

【QT】QWidget: Must construct a QApplication before a QWidget

有时候,你可能会遇到这样的问题: Must construct a QApplication before a QWidget 但是代码是正确的: int main(int argc, char *argv[]) { QApplication a(argc, argv); setbuf( stdout, NULL ); Widget w; w.show(); return a.exec(); } 可以检查一下库和build type是否匹配。比如自己使用IDE 去build debug exe,但是自己的库却是release版本的。

By theArcticOcean, ago
C plus plus

【VTK】获取vtkTextActor的长和宽

vtkTextActor具有这样的方法: /** * Syntactic sugar to get the size of text instead of the entire bounding box. */ virtual void GetSize(vtkViewport* vport, double size[2]); 所以通常的用法是,我们使用vtkTextActor对象,调用GetSize函数,给它传入一个renderer (vtkRenderer继承了vtkViewport),和一个数组或指针,最后得到的第二个参数就有width和height的信息。 width: size[0] height: size[1] 例子: QRect rect = MainWindow::g_Instance->Getui().qvtkWidget->geometry(); Read more…

By theArcticOcean, ago