相信大家对曲线并不陌生,在生活学习中都会接触到。同样,在3D方面,曲线大有用处。

什么是样条曲线

引用百度词条:

所谓样条曲线(Spline Curves)是指给定一组控制点而得到一条曲线,曲线的大致形状由这些点予以控制,一般可分为插值样条和逼近样条两种,插值样条通常用于数字化绘图或动画的设计,逼近样条一般用来构造物体的表面。

因此,要拟合一条曲线,控制点是必不可少的,通常点越多越好,但至少需要3个点,曲线的形状则是由曲线方程控制。

如何拟合插值样条曲线

其实思路比较简单,首先要将控制点插到vtkPoints,然后通过vtkParametricSpline来完成拟合。

下面就是由4个控制点拟合的样条曲线效果:

示例代码

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main(int, char *[])

{

double p0[3] = { 1.0, 0.0, 0.0 };

double p1[3] = { 0.0, 1.0, 0.0 };

double p2[3] = { 0.0, 0.0, 1.0 };

double p3[3] = { 1.0, 2.0, 3.0 };

vtkSmartPointer points =

vtkSmartPointer::New();

points->InsertNextPoint(p0);

points->InsertNextPoint(p1);

points->InsertNextPoint(p2);

points->InsertNextPoint(p3);

vtkSmartPointer spline =

vtkSmartPointer::New();

spline->SetPoints(points);

vtkSmartPointer functionSource =

vtkSmartPointer::New();

functionSource->SetParametricFunction(spline);

functionSource->Update();

vtkSmartPointer splineMapper =

vtkSmartPointer::New();

splineMapper->SetInputConnection(functionSource->GetOutputPort());

vtkSmartPointer splineActor =

vtkSmartPointer::New();

splineActor->SetMapper(splineMapper);

vtkSmartPointer sphereSource =

vtkSmartPointer::New();

sphereSource->SetPhiResolution(21);

sphereSource->SetThetaResolution(21);

sphereSource->SetRadius(.1);

vtkSmartPointer splinePointsData =

vtkSmartPointer::New();

splinePointsData->SetPoints(points);

vtkSmartPointer splinePointsMapper =

vtkSmartPointer::New();

splinePointsMapper->SetInputData(splinePointsData);

splinePointsMapper->SetSourceConnection(sphereSource->GetOutputPort());

vtkSmartPointer pointsActor =

vtkSmartPointer::New();

pointsActor->SetMapper(splinePointsMapper);

pointsActor->GetProperty()->SetColor(1, 0, 0);

vtkSmartPointer renderer =

vtkSmartPointer::New();

vtkSmartPointer renderWindow =

vtkSmartPointer::New();

renderWindow->SetSize(600, 600);

renderWindow->AddRenderer(renderer);

vtkSmartPointer renderWindowInteractor =

vtkSmartPointer::New();

renderWindowInteractor->SetRenderWindow(renderWindow);

renderer->AddActor(splineActor);

renderer->AddActor(pointsActor);

renderWindow->Render();

renderWindowInteractor->Start();

return EXIT_SUCCESS;

}

vtk 曲线 样式_VTK笔记——拟合样条曲线(Parametric Spline)-Go语言中文社区相关推荐

  1. java以太坊源码分析_以太坊区块链Java(EthereumJ)学习笔记:区块链结构-Go语言中文社区...

    本文对EthereumJ的区块链相关的代码做一个简单的介绍. 以太坊区块链 以太坊区块链是在Bitcoin区块链的基础上发展起来的.区块链的数据结构既保留了Bitcoin区块链验证数据的真实性和完整性 ...

  2. 六行python代码的爱心曲线公式_六行python代码的爱心曲线-Go语言中文社区

    前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题 ...

  3. pro android学习笔记,Pro Android学习笔记(六八):HTTP服务(2):HTTP POST-Go语言中文社区...

    BufferedReader in = null; try{ //[Step 1]创建一个HttpClient的对象(或使用已有的) HttpClient client = new DefaultHt ...

  4. motan yar php,motan学习笔记 六 opentracing Brave+zipkin实现-Go语言中文社区

    前面我们学习了,opentracing的接口定义 本文来学习motan用filter 来拦截请求,并用brace来实现,上报数据到zipkin zipkin是什么 本文主要讲brace 如何实现ope ...

  5. linux内核字符驱动设备,Linux学习笔记——linux内核字符设备驱动-Go语言中文社区...

    尝试在树莓派安装的raspbian系统上进行linux字符设备驱动 1.更新安装kernel header源码 sudo apt-get update sudo apt-get install ras ...

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

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

  7. access制作卡片_Access 制作曲线图表的笔记

    时 间:2016-07-31 00:49:51 作 者:摘 要:Access 制作曲线图表的笔记 2016-07-30 在网上搜了很多Access制图帖子和案例, 但都感觉不符合自己意愿. 下面, 按 ...

  8. origin如何绘制双y轴曲线_Origin对曲线进行多峰拟合

    点击上方关注点击下方点赞 ORIGIN教程 Origin对任意曲线进行多峰拟合 01 数据表 我们以11B NMR 核磁共振谱数据为例. 02 多峰拟合 为了增加教程的可参考性,本文以目前常用的最低版 ...

  9. 三次bezier曲线 MATLAB,Matlab-画二次及三次Bezier曲线-8控制点的B样条曲线

    <Matlab-画二次及三次Bezier曲线-8控制点的B样条曲线>由会员分享,可在线阅读,更多相关<Matlab-画二次及三次Bezier曲线-8控制点的B样条曲线(3页珍藏版)& ...

最新文章

  1. c/s开发基础自学纪录为主
  2. bash 脚本的自解压流程
  3. 用BFS(广度优先搜索queuelist)算法解决农夫过河问题
  4. 博途v15安装过程中提示出错_博途V15.1对应的V90 HSP和GSD文件安装
  5. 为什么mysql与eclipse_为什么这个SQL在MySQL中而不是通过Eclipse执行?
  6. ASP.NET Core 消息传递:MediatR
  7. 10099 The Tourist Guide
  8. [导入]ExtJs 2.0 公司工程化应用的最佳实践(二)
  9. VC++常用数据类型
  10. 报名 | 上道沙龙:科技如何赋能传统金融?
  11. 机器学习中强化学习的一些知识
  12. ppt文件怎么压缩,ppt压缩的办法步骤
  13. 男人最碰不得的十大危险女人
  14. Matlab/Simulink仿真问题及技巧汇总【持续更新】
  15. 【R语言】典型相关分析,自写函数计算相关系数
  16. 跟我学RocketMQ之批量消息发送源码解析
  17. 【笔记】ssd mobilenet 网络
  18. 排序算法——十大排序算法总结与对比
  19. 人工智能技术在教育领域中的应用
  20. CSS(七) css列表样式(ul)

热门文章

  1. 安卓逆向—霸哥磁力搜索apk过签名校验
  2. 记swagger离线文档乱码解决
  3. 西安财经大学计算机考研科目,西安财经大学2020年硕士研究生考试复试科目与参考书目...
  4. 南京大学计算机考研考试大纲,南京大学计算机技术(专业学位)研究生考试科目和考研参考书目...
  5. python自动生成word报表之使用win32com插入自带可编辑的图表
  6. 【Kubernetes 企业项目实战】03、基于 Alertmanager 发送报警到多个接收方(下)
  7. 揭开AI产品PRD的面纱 | 浅谈其和互联网产品PRD的异同
  8. 上海在职研究生计算机专业考什么,中国人民大学计算机专业在职研究生考试考什么?...
  9. 在阿里云从0开始部署vue+springboot项目
  10. Centos Linux 单机安装 HBase 、使用 HBase