本文是用vtk来实现的,首先通过公式计算出二维爱心的点,然后利用vtkParametricSpline类来将点连接起来,最后通过建立二维三角剖分然后再加了一些约束就完成啦,效果如下:
实现代码如下
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
#include <vtkParametricSpline.h>
#include <vtkParametricFunctionSource.h>
#include <vtkSphereSource.h>
#include <vtkPlaneSource.h>
#include <vtkGlyph3DMapper.h>
#include <vtkFillHolesFilter.h>
#include <vtkFeatureEdges.h>
#include <vtkPolyDataNormals.h>
#include <vtkDelaunay2D.h>
#include <vtkVertexGlyphFilter.h>
#include <vtkPolygon.h>
#define PI 3.14159265358979323846
int main(int, char *[])
{
//存用公式计算出来的点
vtkSmartPointer<vtkPoints> points =
vtkSmartPointer<vtkPoints>::New();
// 新建一个平面来将爱心里面填冲颜色
vtkSmartPointer<vtkPlaneSource> planeSource =
vtkSmartPointer<vtkPlaneSource>::New();
//限制突变性的形状
vtkSmartPointer<vtkPol