vtkPoints

  vtkPoints表示三维点的集合。
  vtkPoints的数据模型是根据(点或单元)id访问的vx-vy-vz三元组数组。
  默认数据类型为VTK_FLOAT类型;

Set接口

  设置点个数

   void SetNumberOfPoints(vtkIdType numPoints);  vtkTypeBool Resize(vtkIdType numPoints);

  设置点数据

   void SetPoint(vtkIdType id, const float x[3]) VTK_EXPECTS(0 <= id && id < GetNumberOfPoints()){this->Data->SetTuple(id, x);}void SetPoint(vtkIdType id, const double x[3]) VTK_EXPECTS(0 <= id && id < GetNumberOfPoints()){this->Data->SetTuple(id, x);}void SetPoint(vtkIdType id, double x, double y, double z) VTK_EXPECTS(0 <= id && id < GetNumberOfPoints());  void InsertPoint(vtkIdType id, const float x[3]) VTK_EXPECTS(0 <= id){this->Data->InsertTuple(id, x);}void InsertPoint(vtkIdType id, const double x[3]) VTK_EXPECTS(0 <= id){this->Data->InsertTuple(id, x);}void InsertPoint(vtkIdType id, double x, double y, double z) VTK_EXPECTS(0 <= id);  void InsertPoints(vtkIdList* dstIds, vtkIdList* srcIds, vtkPoints* source){this->Data->InsertTuples(dstIds, srcIds, source->Data);}  void InsertPoints(vtkIdType dstStart, vtkIdType n, vtkIdType srcStart, vtkPoints* source){this->Data->InsertTuples(dstStart, n, srcStart, source->Data);}  vtkIdType InsertNextPoint(const float x[3]) { return this->Data->InsertNextTuple(x); }vtkIdType InsertNextPoint(const double x[3]) { return this->Data->InsertNextTuple(x); }vtkIdType InsertNextPoint(double x, double y, double z);

vtkPoints内部数据类型

   virtual int GetDataType() const;  virtual void SetDataType(int dataType);void SetDataTypeToBit() { this->SetDataType(VTK_BIT); }void SetDataTypeToChar() { this->SetDataType(VTK_CHAR); }void SetDataTypeToUnsignedChar() { this->SetDataType(VTK_UNSIGNED_CHAR); }void SetDataTypeToShort() { this->SetDataType(VTK_SHORT); }void SetDataTypeToUnsignedShort() { this->SetDataType(VTK_UNSIGNED_SHORT); }void SetDataTypeToInt() { this->SetDataType(VTK_INT); }void SetDataTypeToUnsignedInt() { this->SetDataType(VTK_UNSIGNED_INT); }void SetDataTypeToLong() { this->SetDataType(VTK_LONG); }void SetDataTypeToUnsignedLong() { this->SetDataType(VTK_UNSIGNED_LONG); }void SetDataTypeToFloat() { this->SetDataType(VTK_FLOAT); }void SetDataTypeToDouble() { this->SetDataType(VTK_DOUBLE); }

Get接口

  获取点集占用内存空间大小,获取指定ID的点坐标数据;

   unsigned long GetActualMemorySize();  vtkIdType GetNumberOfPoints() const { return this->Data->GetNumberOfTuples(); }  double* GetPoint(vtkIdType id) VTK_EXPECTS(0 <= id && id < GetNumberOfPoints()) VTK_SIZEHINT(3){return this->Data->GetTuple(id);}  void GetPoint(vtkIdType id, double x[3]) VTK_EXPECTS(0 <= id && id < GetNumberOfPoints())VTK_SIZEHINT(3){this->Data->GetTuple(id, x);}void GetPoints(vtkIdList* ptId, vtkPoints* outPoints);

  计算点集边界,xmin,xmax,ymin,ymax,zmin,zmax这6个数值。

   virtual void ComputeBounds();  double* GetBounds() VTK_SIZEHINT(6);  void GetBounds(double bounds[6]);

示例

读取一个点坐标文件,绘制线段

  1.points.txt文本中每一行记录了XYZ坐标,浮点型,每个数值之间使用空格分割;
  2.读取points.txt文件,拆分每行字符串,得到一个点的XYZ坐标值;
  3.生成vtkPolyData的几何数据vtkPoints(离散点集合);
  4.生成vtkPolyData的拓扑数据vtkCellArray(一组线段信息);
  5.进入渲染管线;

#mermaid-svg-jBNGDqN69eEAvI4i .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-jBNGDqN69eEAvI4i .label text{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i .node rect,#mermaid-svg-jBNGDqN69eEAvI4i .node circle,#mermaid-svg-jBNGDqN69eEAvI4i .node ellipse,#mermaid-svg-jBNGDqN69eEAvI4i .node polygon,#mermaid-svg-jBNGDqN69eEAvI4i .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-jBNGDqN69eEAvI4i .node .label{text-align:center;fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i .node.clickable{cursor:pointer}#mermaid-svg-jBNGDqN69eEAvI4i .arrowheadPath{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-jBNGDqN69eEAvI4i .flowchart-link{stroke:#333;fill:none}#mermaid-svg-jBNGDqN69eEAvI4i .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-jBNGDqN69eEAvI4i .edgeLabel rect{opacity:0.9}#mermaid-svg-jBNGDqN69eEAvI4i .edgeLabel span{color:#333}#mermaid-svg-jBNGDqN69eEAvI4i .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-jBNGDqN69eEAvI4i .cluster text{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-jBNGDqN69eEAvI4i .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-jBNGDqN69eEAvI4i text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-jBNGDqN69eEAvI4i .actor-line{stroke:grey}#mermaid-svg-jBNGDqN69eEAvI4i .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-jBNGDqN69eEAvI4i .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-jBNGDqN69eEAvI4i #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-jBNGDqN69eEAvI4i .sequenceNumber{fill:#fff}#mermaid-svg-jBNGDqN69eEAvI4i #sequencenumber{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i #crosshead path{fill:#333;stroke:#333}#mermaid-svg-jBNGDqN69eEAvI4i .messageText{fill:#333;stroke:#333}#mermaid-svg-jBNGDqN69eEAvI4i .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-jBNGDqN69eEAvI4i .labelText,#mermaid-svg-jBNGDqN69eEAvI4i .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-jBNGDqN69eEAvI4i .loopText,#mermaid-svg-jBNGDqN69eEAvI4i .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-jBNGDqN69eEAvI4i .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-jBNGDqN69eEAvI4i .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-jBNGDqN69eEAvI4i .noteText,#mermaid-svg-jBNGDqN69eEAvI4i .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-jBNGDqN69eEAvI4i .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-jBNGDqN69eEAvI4i .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-jBNGDqN69eEAvI4i .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-jBNGDqN69eEAvI4i .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i .section{stroke:none;opacity:0.2}#mermaid-svg-jBNGDqN69eEAvI4i .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-jBNGDqN69eEAvI4i .section2{fill:#fff400}#mermaid-svg-jBNGDqN69eEAvI4i .section1,#mermaid-svg-jBNGDqN69eEAvI4i .section3{fill:#fff;opacity:0.2}#mermaid-svg-jBNGDqN69eEAvI4i .sectionTitle0{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i .sectionTitle1{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i .sectionTitle2{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i .sectionTitle3{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-jBNGDqN69eEAvI4i .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i .grid path{stroke-width:0}#mermaid-svg-jBNGDqN69eEAvI4i .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-jBNGDqN69eEAvI4i .task{stroke-width:2}#mermaid-svg-jBNGDqN69eEAvI4i .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i .taskText:not([font-size]){font-size:11px}#mermaid-svg-jBNGDqN69eEAvI4i .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-jBNGDqN69eEAvI4i .task.clickable{cursor:pointer}#mermaid-svg-jBNGDqN69eEAvI4i .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-jBNGDqN69eEAvI4i .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-jBNGDqN69eEAvI4i .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-jBNGDqN69eEAvI4i .taskText0,#mermaid-svg-jBNGDqN69eEAvI4i .taskText1,#mermaid-svg-jBNGDqN69eEAvI4i .taskText2,#mermaid-svg-jBNGDqN69eEAvI4i .taskText3{fill:#fff}#mermaid-svg-jBNGDqN69eEAvI4i .task0,#mermaid-svg-jBNGDqN69eEAvI4i .task1,#mermaid-svg-jBNGDqN69eEAvI4i .task2,#mermaid-svg-jBNGDqN69eEAvI4i .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-jBNGDqN69eEAvI4i .taskTextOutside0,#mermaid-svg-jBNGDqN69eEAvI4i .taskTextOutside2{fill:#000}#mermaid-svg-jBNGDqN69eEAvI4i .taskTextOutside1,#mermaid-svg-jBNGDqN69eEAvI4i .taskTextOutside3{fill:#000}#mermaid-svg-jBNGDqN69eEAvI4i .active0,#mermaid-svg-jBNGDqN69eEAvI4i .active1,#mermaid-svg-jBNGDqN69eEAvI4i .active2,#mermaid-svg-jBNGDqN69eEAvI4i .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-jBNGDqN69eEAvI4i .activeText0,#mermaid-svg-jBNGDqN69eEAvI4i .activeText1,#mermaid-svg-jBNGDqN69eEAvI4i .activeText2,#mermaid-svg-jBNGDqN69eEAvI4i .activeText3{fill:#000 !important}#mermaid-svg-jBNGDqN69eEAvI4i .done0,#mermaid-svg-jBNGDqN69eEAvI4i .done1,#mermaid-svg-jBNGDqN69eEAvI4i .done2,#mermaid-svg-jBNGDqN69eEAvI4i .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-jBNGDqN69eEAvI4i .doneText0,#mermaid-svg-jBNGDqN69eEAvI4i .doneText1,#mermaid-svg-jBNGDqN69eEAvI4i .doneText2,#mermaid-svg-jBNGDqN69eEAvI4i .doneText3{fill:#000 !important}#mermaid-svg-jBNGDqN69eEAvI4i .crit0,#mermaid-svg-jBNGDqN69eEAvI4i .crit1,#mermaid-svg-jBNGDqN69eEAvI4i .crit2,#mermaid-svg-jBNGDqN69eEAvI4i .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-jBNGDqN69eEAvI4i .activeCrit0,#mermaid-svg-jBNGDqN69eEAvI4i .activeCrit1,#mermaid-svg-jBNGDqN69eEAvI4i .activeCrit2,#mermaid-svg-jBNGDqN69eEAvI4i .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-jBNGDqN69eEAvI4i .doneCrit0,#mermaid-svg-jBNGDqN69eEAvI4i .doneCrit1,#mermaid-svg-jBNGDqN69eEAvI4i .doneCrit2,#mermaid-svg-jBNGDqN69eEAvI4i .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-jBNGDqN69eEAvI4i .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-jBNGDqN69eEAvI4i .milestoneText{font-style:italic}#mermaid-svg-jBNGDqN69eEAvI4i .doneCritText0,#mermaid-svg-jBNGDqN69eEAvI4i .doneCritText1,#mermaid-svg-jBNGDqN69eEAvI4i .doneCritText2,#mermaid-svg-jBNGDqN69eEAvI4i .doneCritText3{fill:#000 !important}#mermaid-svg-jBNGDqN69eEAvI4i .activeCritText0,#mermaid-svg-jBNGDqN69eEAvI4i .activeCritText1,#mermaid-svg-jBNGDqN69eEAvI4i .activeCritText2,#mermaid-svg-jBNGDqN69eEAvI4i .activeCritText3{fill:#000 !important}#mermaid-svg-jBNGDqN69eEAvI4i .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-jBNGDqN69eEAvI4i g.classGroup text .title{font-weight:bolder}#mermaid-svg-jBNGDqN69eEAvI4i g.clickable{cursor:pointer}#mermaid-svg-jBNGDqN69eEAvI4i g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-jBNGDqN69eEAvI4i g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-jBNGDqN69eEAvI4i .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-jBNGDqN69eEAvI4i .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-jBNGDqN69eEAvI4i .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-jBNGDqN69eEAvI4i .dashed-line{stroke-dasharray:3}#mermaid-svg-jBNGDqN69eEAvI4i #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-jBNGDqN69eEAvI4i #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-jBNGDqN69eEAvI4i #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-jBNGDqN69eEAvI4i #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-jBNGDqN69eEAvI4i #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-jBNGDqN69eEAvI4i #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-jBNGDqN69eEAvI4i #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-jBNGDqN69eEAvI4i #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-jBNGDqN69eEAvI4i .commit-id,#mermaid-svg-jBNGDqN69eEAvI4i .commit-msg,#mermaid-svg-jBNGDqN69eEAvI4i .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-jBNGDqN69eEAvI4i g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-jBNGDqN69eEAvI4i g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-jBNGDqN69eEAvI4i g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-jBNGDqN69eEAvI4i .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-jBNGDqN69eEAvI4i .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-jBNGDqN69eEAvI4i .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-jBNGDqN69eEAvI4i .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-jBNGDqN69eEAvI4i .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-jBNGDqN69eEAvI4i .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-jBNGDqN69eEAvI4i .edgeLabel text{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-jBNGDqN69eEAvI4i .node circle.state-start{fill:black;stroke:black}#mermaid-svg-jBNGDqN69eEAvI4i .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-jBNGDqN69eEAvI4i #statediagram-barbEnd{fill:#9370db}#mermaid-svg-jBNGDqN69eEAvI4i .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-jBNGDqN69eEAvI4i .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-jBNGDqN69eEAvI4i .statediagram-state .divider{stroke:#9370db}#mermaid-svg-jBNGDqN69eEAvI4i .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-jBNGDqN69eEAvI4i .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-jBNGDqN69eEAvI4i .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-jBNGDqN69eEAvI4i .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-jBNGDqN69eEAvI4i .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-jBNGDqN69eEAvI4i .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-jBNGDqN69eEAvI4i .note-edge{stroke-dasharray:5}#mermaid-svg-jBNGDqN69eEAvI4i .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-jBNGDqN69eEAvI4i .error-icon{fill:#522}#mermaid-svg-jBNGDqN69eEAvI4i .error-text{fill:#522;stroke:#522}#mermaid-svg-jBNGDqN69eEAvI4i .edge-thickness-normal{stroke-width:2px}#mermaid-svg-jBNGDqN69eEAvI4i .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-jBNGDqN69eEAvI4i .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-jBNGDqN69eEAvI4i .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-jBNGDqN69eEAvI4i .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-jBNGDqN69eEAvI4i .marker{fill:#333}#mermaid-svg-jBNGDqN69eEAvI4i .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-jBNGDqN69eEAvI4i {color: rgba(0, 0, 0, 0.75);font: ;}

vtkPoints
vtkPolyData
vtkCellArray
vtkPolyDataMapper
vtkActor
vtkRenderer
vtkRenderWindow
vtkRenderWindowInteractor

  其中点数据(Point Data:vtkPoints)定义数据集vtkPolyData的几何结构,单元数据(Cell Data:)定义数据集vtkPolyData的拓扑结构;这样在空间离散的坐标点结合坐标点之间的组合关系,就能描述出多个几何片元信息,用于渲染绘制使用;

#include <vtkLine.h>
#include <vtkPoints.h>
#include <vtkCellArray.h>
#include <iostream>
#include <string>
#include <vector>class Test_Point_Line {public:static void Test() {vtkNew<vtkPoints> points;std::vector<std::string> point_datas = ReadPointsFile("G:\\Data\\points.txt");for (auto it = point_datas.begin(); it != point_datas.end(); ++it) {std::vector<std::string> arr_data = Split(*it, " ");double x = std::atof(arr_data[0].c_str());double y = std::atof(arr_data[1].c_str());double z = std::atof(arr_data[2].c_str());points->InsertNextPoint(x, y, z);}vtkNew<vtkCellArray> lines;lines->InsertNextCell(point_datas.size());for (unsigned long i = 0; i < point_datas.size(); ++i) {lines->InsertCellPoint(i);}vtkNew<vtkPolyData> polyData;polyData->SetPoints(points);polyData->SetLines(lines);vtkNew<vtkPolyDataMapper> polyMapper;polyMapper->SetInputData(polyData);vtkNew<vtkActor> polyActor;polyActor->SetMapper(polyMapper);vtkNew<vtkRenderer> ren1;ren1->AddActor(polyActor);ren1->SetBackground(0.1, 0.2, 0.4);vtkNew<vtkRenderWindow> renWin;renWin->AddRenderer(ren1);renWin->SetSize(300, 300);vtkNew<vtkRenderWindowInteractor> iren;iren->SetRenderWindow(renWin);iren->Initialize();iren->Start();}static std::vector<std::string> ReadPointsFile(const char *path) {ifstream in(path);        std::string line;std::vector<std::string> result;if (in)  {while (getline(in, line)){result.push_back(line);}}else{cout << "no such file" << endl;}return result;}static std::vector<std::string> Split(const std::string &str, const std::string &pattern) {std::vector<std::string> resVec;if (str.empty()){return resVec;}std::string strs = str + pattern;size_t pos = strs.find(pattern);size_t size = strs.size();while (pos != std::string::npos){resVec.push_back(strs.substr(0, pos));strs = strs.substr(pos + 1, size);pos = strs.find(pattern);}return resVec;}
};


当使用SetVerts函数指明输入拓扑结构为点集合时,将绘制出离散点在空间中的显示;

 vtkNew<vtkPolyData> polyData;polyData->SetPoints(points);polyData->SetVerts(lines);


  使用的points文件路径:https://download.csdn.net/download/liushao1031177/19134425

参考文献

1.vtkPoints Class Reference
2.vtkCellArray Class Reference

VTK笔记-几何图形-点vtkPoints构成的空间曲线相关推荐

  1. VTK笔记——插值样条曲线采样

    有时候我们想通过在样条曲线上得到更多的点,比如用这些点来与另一条曲线连通生成三角条,让曲线在可视化的时候分辨率更高,等等,就需要用到曲线插值采用.最常见的是样条曲线插值采样. 曲线已经有了情况下(关于 ...

  2. VTK 学习----VTK对象绘制-点(vtkPoints、vtkSphereSource)、线(vtkLine、vtkLineSource)

    VTK 学习----VTK对象绘制-点(vtkPoints.vtkSphereSource).线(vtkLine.vtkLineSource) VTK绘制线段用vtkLine.vtkLineSourc ...

  3. VTK笔记-相机vtkCamera-投影方式与裁剪范围

    投影方式中物体在View上的投影位置   在之前对多边形数据进行裁剪时<VTK笔记-裁剪分割-不规则闭合圈选裁剪-vtkImplicitSelectionLoop类>,显示的下图的效果:在 ...

  4. VTK笔记——点(point)和向量(vector)投影到平面(plane)

    有时候,三维空间的点需要投影到某一特定的平面.比如说,一个点集,连接成一个平面,如果不进行投影,直接连接,可能会出现怪异的现象. 为了简单,示例只用到了一个点的投影.多个点的投影,延伸一下就可以了. ...

  5. VTK笔记-裁剪分割-几何裁剪-vtkClipPolyData

    什么是裁剪分割   VTK加载二维数据和三维数据,我们通常观察到的是三视图图像,或者是vtkImageReslice获取到的转换矩阵对应的观察点三视图或者是斜平面图像,想要看到图像中间部分的渲染结果就 ...

  6. VTK笔记-图形相关-线段平滑-vtkSplineFilter类

      在实际的开发中,提供有限的连续线段组成一条曲线,需要将该条曲线进行插值处理,生成更高采样率的曲线:这种情况下就需要进行插值:VTK中的线段插值是通过B样条插值实现,使用vtkSplineFilte ...

  7. VTK笔记-使用vtkCutter类对多边形取切面轮廓

    vtkCutter类 vtkCutter可以使用使用用户指定的隐式函数切割vtkDataSet. vtkCutter是一个过滤器,可以使用vtkImplicitFunction 的任何子类来切割数据. ...

  8. VTK笔记-图形相关-圆锥体-vtkConeSoure类

    圆锥体 文章目录 圆锥体 前言 一.代码 1.1流程 二.遇到的问题 1.运行时异常 2.在ThinkPad E530C笔记本上出现的异常 3.运行结果 三.相机旋转 四.vtkConeSource ...

  9. VTK笔记-了解VTK

    最近,重新学习了VTK相关内容,网上资料质量参差不齐,自己从多处搜集资料,整理记录之: VTK简介 VTK,(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图 ...

最新文章

  1. vue移动端优秀框架收集
  2. Fiddler抓包使用教程-乱码处理 Decode
  3. linux cat 进程,Linux下CAT程序的C实现
  4. js里存储键值对以及注意事项
  5. [Android]在Dagger 2中使用RxJava来进行异步注入(翻译)
  6. POJ-2414 Phylogenetic Trees Inherited 状态压缩,位运算处理集合操作
  7. Java for selenium(webdriver) 环境搭建
  8. c++MFC 截取字符串
  9. cmd代码表白_520你还不敢表白吗?
  10. ArcGIS软件气象数据插值教程
  11. JS获取验证码页面显示处理
  12. CSS特效二:按钮动画效果
  13. AltiumDesigner PCB案牍(2)——自定义原理图模板
  14. C语言标准ANSI C、C语言的特点、C语言的关键字(32个)
  15. rate-limiting
  16. 重构是什么,为什么要重构,怎么重构
  17. 投影和环境相机模型(PBRT)
  18. 全国地区数据表(绝对全)
  19. webpack的css压缩不兼容IOS8问题探索
  20. vue3如何使用::v-deep样式穿透

热门文章

  1. LED显示屏共阴极和共阳极是什么意思,有什么区别?
  2. 关于用宏晶的数据手册而踩的坑
  3. Linux squid构建-传统模式和透明模式部署
  4. 计算机用户可分哪几类,通常将计算机分为哪几类,各自的特点和用途
  5. 再破AI领域融资纪录 这家公司拿下软银9.4亿美元投资
  6. matlab r2012a下载及更新摘要
  7. CVPR2015一些文章整理
  8. 半年抖音涨粉2000万,一禅小和尚到底凭什么?!
  9. AnyDesk 6.0.5 官方中文免费版 — 远程控制工具
  10. C++基础:命名空间