样条曲线

article/2025/9/29 5:56:27

基本概念

        在计算机图形中,样条曲线(spline curve)指由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续性条件。样条曲面(spline surface)可以使用两组样条曲线进行描述。
        给定一组称为控制点的坐标点,可以得到一条样条曲线,这些点给出了曲线的大致形状。根据这些坐标位置,可以使用以下两种方法之一选取分段连续参数多项式函数。当选取的多项式使得曲线通过每个控制点,则所得曲线称为这组控制点的插值(interpolate)样条曲线。另一情况,当选取的多项式使部分或全部控制点都不在生成的曲线上,所得曲线称为这组控制点的逼近(approximate)样条曲线。
在这里插入图片描述

贝塞样条曲线

        这个样条逼近方法是法国工程师皮埃尔·贝济埃(Pierre Bézier)为雷诺公司设计汽车车身而开发的。这里给出它的公式,并用VTK实现。下面是公式介绍。
在这里插入图片描述
在这里插入图片描述
        下面是代码,vtkBezierSplineSource类是根据上面公式写的。完整工程。

/**********************************************************************Copyright (c) Mr.Bin. All rights reserved.
For more information visit: http://blog.csdn.net/webzhuce**********************************************************************/
#include <vtkPolyDataMapper.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkActor.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkProperty.h>
#include <vtkPoints.h>
#include <vtkSphereSource.h>
#include <vtkGlyph3DMapper.h>
#include "vtkBezierSplineSource.h"int main()
{double p0[3] = { -40.0, -40.0, 0.0 };double p1[3] = { -10.0, 200.0, 0.0 };double p2[3] = { -40.0, -200.0, 0.0 };double p3[3] = { 40.0, 40.0, 0.0 };vtkNew<vtkPoints> points;points->InsertNextPoint(p0);points->InsertNextPoint(p1);points->InsertNextPoint(p2);points->InsertNextPoint(p3);// spline pointsvtkNew<vtkSphereSource> spheresource;spheresource->SetPhiResolution(20);spheresource->SetThetaResolution(20);spheresource->SetRadius(10);spheresource->Update();vtkNew<vtkPolyData> ctrlpointsdata;ctrlpointsdata->SetPoints(points);vtkNew<vtkGlyph3DMapper> ctrlpointsmapper;ctrlpointsmapper->SetInputData(ctrlpointsdata);ctrlpointsmapper->SetSourceConnection(spheresource->GetOutputPort());ctrlpointsmapper->Update();vtkNew<vtkActor> ctrlpointsactor;ctrlpointsactor->SetMapper(ctrlpointsmapper);ctrlpointsactor->GetProperty()->SetColor(1.0, 0.0, 0.0);//splinevtkNew<vtkBezierSplineSource> spline;spline->SetControlPoints(points);vtkNew<vtkPolyDataMapper> splinemapper;splinemapper->SetInputConnection(spline->GetOutputPort());vtkNew<vtkActor> splineactor;splineactor->SetMapper(splinemapper);splineactor->GetProperty()->SetColor(1.0, 0.0, 0.0);//rendervtkNew<vtkRenderer> renderer;renderer->AddActor(ctrlpointsactor);renderer->AddActor(splineactor);renderer->SetBackground(1.0, 1.0, 1.0);vtkNew<vtkRenderWindow> renderwindow;renderwindow->SetSize(400, 200);renderwindow->AddRenderer(renderer);vtkNew<vtkRenderWindowInteractor> interactor;interactor->SetRenderWindow(renderwindow);vtkNew<vtkInteractorStyleTrackballCamera> style;interactor->SetInteractorStyle(style);interactor->Initialize();interactor->Start();return EXIT_SUCCESS;}

运行结果

在这里插入图片描述

参考资料

  • 《计算机图形学(第四版)》[M]

http://chatgpt.dhexx.cn/article/RPQlINLD.shtml

相关文章

布丁压缩注册表删除路径

被布丁压缩的弹窗广告烦了好几天&#xff0c;卸载了好几次又自动安装了&#xff0c;今天终于忍无可忍&#xff0c;所以今天必须得跟它say Byebye&#xff01; winR快捷键&#xff0c;输入regedit&#xff0c;打开注册表 路径在这里 找注册表里的文件删除就ok 保险起见 在C:\Pr…

用注册表修改右键菜单

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01; 一&#xff1a; 开始&#xff0c;运行里面…

VMware卸载重装产生的注册表问题

http://www.xitongcheng.com/jiaocheng/dnrj_article_58655.htmlTOC 欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 …

关于电脑注册表regedit自定义管理右键菜单选项实例(删除增加)

前言&#xff1a;删除电脑多余右键菜单的具体操作 所有关于电脑的操作都可以通过修改注册表来实现。而随着电脑软件的安装&#xff0c;本就为方便人们操作的右键菜单变的愈来愈臃肿。但我们可以自定义管理大多数右键菜单&#xff0c;这篇帖子就是为了解决这些问题 右键菜单管…

XP注册表文件存放位置

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! XP注册表文件存放位置%system%/system32/config目录下有这样一些文件sam.* Securi…

QTP操作注册表

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01; 在QTP中没有提供用于直接操作注册表的测试…

组策略对应注册表位置部分解读

一、概要 在域环境中&#xff0c;管理员经常要执行的操作就是编辑应用域策略&#xff0c;对域环境中成员主机进行集中管理&#xff0c;但是有时候会存在这样的问题&#xff0c;某项策略配置应用生效后&#xff0c;导致了域成员主机部分功能异常&#xff0c;但是直接撤销域策略…

“office安装过程错误,显示注册表某路径没有权限”解决办法

文章转自https://blog.csdn.net/super_star666/article/details/79962129 博主在安装office过程&#xff0c;因为重复卸载后&#xff0c;再安装就出现了问题。从网上搜了很多解决办法都无法实现。只有这种办法解决了问题。首先在这里感谢一下原作者&#xff0c;让我不至于再浪费…

梳理注册表的一些危险操作,注册表的安全配置,以及对于注册表的总结

本次文章为大家梳理一些注册表常见的危险操作&#xff0c;希望可以帮大家规避一些在日常使用中可能会遇到的问题。 映象劫持IFEO&#xff08;Image File Execution Options&#xff09; 在低版本的windows中&#xff0c;我们可以简单地替换程序&#xff0c;但是在高版本的win…

「事件驱动架构」Kafka中的模式注册表和模式演化

在这篇文章中&#xff0c;我们将通过Kafka模式注册表来研究Kafka中的模式演化和兼容性类型。通过对兼容性类型的良好理解&#xff0c;我们可以安全地随着时间的推移对模式进行更改&#xff0c;而不会无意中破坏生产者或消费者的利益。 数据集 在我们的“真实世界中的Hadoop开发…

IObit Uninstaller(电脑软件彻底卸载, 包含注册表) 彻底解决软件卸载不干净的问题

本文是众多使用技巧中其中的一篇, 全部使用技巧点击链接查看, 或直接查看本专栏其他文章, 保证你收获满满 我主页中的思维导图中内容大多从我的笔记中整理而来,相应技巧可在笔记中查找原题, 有兴趣的可以去 我的主页 了解更多计算机学科的精品思维导图整理 本文可以转载&…

Windows注册表及常见子项

Windows注册表五大根键以及常用注册表项 注册表概述&#xff1a;注册表是Windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”&#xff0c;也可以说是一个非常巨大的树状分层结构的数据库系统。注册表记录了用户安装在计算机上的软件和每个程序…

注册表权限修改

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

webx框架解析

2019独角兽企业重金招聘Python工程师标准>>> WebX框架是阿里巴巴集团开发的&#xff0c;它建立在SpringEx的基础上&#xff0c;具有超强的扩展能力。 一、Webx的层次结构&#xff08;从里到外&#xff09; &#xff08;1&#xff09;SpringExt&#xff1a;基于Sprin…

Webx mvc 源码

Webx命名规范 Web请求响应 当Webx Framework接收到一个来自WEB的请求以后,实际上它主要做了两件事: 首先,它会增强request、response、session的功能,并把它们打包成更易使用的RequestContext对象。 其次,它会调用相应子应用的pipeline,用它来做进一步的处理。 假如在…

WebX源码研读

WebX是公司应用最为广泛的web框架&#xff0c;目前已经开源。一直以为webX是基于spring MVC的&#xff0c;但其实并不是&#xff0c;那么不同之处到底在何处&#xff0c;又是为什么这样实现&#xff1f;看过了源码&#xff0c;在这里梳理下思路 我以为&#xff0c;在业务层面上…

WebX框架使用说明

前言 标准MVC开源框架有很多&#xff08;Struts、SpringMVC、Webx&#xff09;&#xff0c;对于生活在开源世界里面的码农来说SpringMVC、Struts是接触比较多&#xff0c;也是最熟悉的框架。 知己知彼 以配置SpringMVC为例&#xff0c;我们常常关注的点主要有以下几个方面&a…

webx学习总结

webx学习总结 一 Webx的概括 WEBX是阿里巴巴的部框架&#xff0c;“就是把页面与Service之间的一些Servlet等公共的东西抽象出&#xff0c;提供相的服务以提高发效率&#xff08;《接口之Webx介》—何晓峰 &#xff09;”&#xff0c;可以看出&#xff0c;webx和统的servlet-ac…

Webx MVC分析

Webx框架&#xff1a;http://openwebx.org/ petstore:webx3/webx-sample/petstore/tags/3.0/petstore 编译之后&#xff1a;mvn jetty:run即可, 访问&#xff1a; http://localhost:8081/ Webx MVC(以webx3为基础) 1、webx3的入口点 <filter> <filter-name>…

Webx MVC

首先在Webx中&#xff0c;使用WebxContextLoaderListener替代Spring的ContextLoaderListener&#xff1a; <listener><listener-class>com.alibaba.citrus.webx.context.WebxContextLoaderListener</listener-class></listener><filter><filt…