Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何连接两条拟合的B样条曲线?

如何连接两条拟合的B样条曲线?
EN

Stack Overflow用户
提问于 2014-10-26 18:56:13
回答 1查看 1.1K关注 0票数 0

用B样条曲线拟合得到一条光滑曲线.如果我得到两个光滑的B样条,我怎样才能顺利地连接.例如,我有59个点((x0,y0,z0),.,(x58,y58,z58))和两个拟合的B样条。一个B样条为前30个点,另一个为后30个点,两点集共享一个公共点((x29,y29,z29))。由于曲线拟合,点(x29,y29,z29)将被修改两次,并将有两个新的位置。如果我只是连接这两个新的位置,最后的曲线将不会光滑的点(x29,y29,z29)。目前,我执行曲线拟合所有的数据在一起,但这将修改前30个点的平滑曲线。我只希望修改第一条平滑曲线的连接部分。我知道我需要强制要求衍生品在联合市场上是平等的。我不知道该怎么做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-27 15:43:33

看起来你是在用B样条曲线或类似的东西进行LS拟合,通常,这样得到的B样条将不会通过任何数据点。这就是为什么两个B样条不相交的原因.

要解决这个问题,您可以增强您的LS拟合功能,将约束作为输入的一部分。在您的情况下,这些约束是线性的,因此您的问题仍然是线性的。一旦完成这一步,您可以预先计算在公共点的斜率,并约束B样条拟合到公共点和共同斜率。这样,得到的两个B样条至少在公共点上是G1连续的.

尽管如此,实现有限的LS拟合并不是一项琐碎的任务,在这里也不容易阐述。因此,你将不得不做一些“谷歌”自己。另一种解决方案是“调整”两个B样条,使它们以G1方式连接。但这样做肯定会增加拟合误差,因为最小二乘误差的意义被破坏。通过“调整”,我的意思是在本地改变B样条的控制点。在下面我将给出更多的细节。

假设有两个B样条,C1(t)和C2(t),C1(t)的后两个控制点是P(n-2)和P(n-1),C2(t)的前两个控制点是Q(0)和Q(1)。P(n-1)和Q(0)应接近两个数据集的公共点(x29,y29,z29)。调整B样条曲线只需改变P(n-2)、P(n-1)、Q(0)和Q(1)的位置,使这两条B样条曲线以G1方式相交。为了做到这一点,

( 1)我们首先将P(n-1)和Q(0)移动到相同的位置(x29,y29,z29),或者只是P(n-1)和Q(0)之间的中点。让我们把这个新的位置表示为R。

2)现在,检验P(n-2)、R和Q(1)是否是共线的。如果它们碰巧是共线的,那么两个B样条曲线也将是G1,你就完成了。如果它们不是共线,则从P(n-2)和Q(1)中求出通过R的最佳逼近线,然后投影P(n-2)和Q(1),并将投影点作为P(n-2)和Q(1)的新位置。

在这两个步骤之后,这两条B样条曲线应以G1方式连接.但对共同节点周围原始数据点的误差会变大。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26580543

复制
相关文章
Android开发(37) 使用DrawerLayout实现抽屉式导航菜单
最近流行 左侧抽屉式的导航条菜单,知乎,360,QQ都使用了这样的导航菜单,我们也了解下:
张云飞Vir
2020/03/16
3.7K0
[flutter专题]6详解AppBar小部件
应用栏是各种应用程序中最常用的组件之一。它可用于容纳搜索字段、以及在页面之间导航的按钮,或者只是页面标题。由于它是一个如此常用的组件,因此 Flutter 为该功能提供了一个名为AppBar的专用小部件。
徐建国
2021/11/30
16.8K0
[flutter专题]6详解AppBar小部件
Android入门教程 | DrawerLayout 侧滑栏
要使用 DrawerLayout,可以在 layout xml 文件中将 DrawerLayout 设置为根视图。
Android_anzi
2021/12/08
2.3K0
2、wxWidgets介绍–菜单栏、状态栏、图标简介
wxWidgets是一个用来编写C++程序的GUI(图形用户界面)工具包。它是一个开源的、成熟的、跨平台的工具包。wxWidgets应用程序能在所有主流的操作系统上运行,Windows,Unix,Mac。这个项目由Julian Smart在1992年启动。wxWidgets提供各种各样的C++类来处理数据流、数据库、多线程、在线帮助、应用程序设置。wxWidgets由大量的窗口小部件组成。
全栈程序员站长
2022/09/06
3.1K0
2、wxWidgets介绍–菜单栏、状态栏、图标简介
Windows 7 操作系统
Windows 7 的主要特性有:  更简单  更安全  更好的连接  更低的成本
青灯古酒
2023/10/16
6270
如何在Mac上轻松更改Finder的外观
macOS Finder是一个方便的实用程序,但是如果您自定义外观,它可能会为您提供更好的服务。这里有一些改变Finder外观的技巧!
office小助手
2020/12/24
6.3K0
如何在Mac上轻松更改Finder的外观
vs code 打开顶部菜单栏和左侧菜单栏的方法
按快捷键 F1 或者 shift+ctrl+p 切换出命令行,然后输入menu 有个view:toggle Menu bar 的功能,即可打开顶部菜单栏
朵朵花儿
2019/09/19
11.7K0
vs code 打开顶部菜单栏和左侧菜单栏的方法
『React Navigation 3x系列教程』createDrawerNavigator开发指南
这篇文章将向大家分享createDrawerNavigator的一些开发指南和实用技巧。
CrazyCodeBoy
2019/12/10
7.3K0
『React Navigation 3x系列教程』createDrawerNavigator开发指南
Parallels Toolbox for mac(pd工具箱)
专为富有创造力的个人、学生、小企业主、长期多任务处理者、IT 经理以及介于两者之间的任何人而设计。Parallels Toolbox 讓每個人都可以充分利用他們的 Mac,而不必學習複雜的系統設定。
Mac小小心
2023/04/10
5.9K0
Parallels Toolbox for mac(pd工具箱)
Android 侧滑抽屉菜单
  滑动菜单相信都不会陌生,你可能见过很多这样的文章,但我的文章会给你不一样的阅读和操作体验。
晨曦_LLW
2021/03/23
4K0
Android 侧滑抽屉菜单
pycharm如何调试代码_pycharm怎么分段运行代码
  (2)已经创建了一个python工程并且添加了内容,具体参考: Getting Started tutorial
全栈程序员站长
2022/09/27
2.3K0
pycharm如何调试代码_pycharm怎么分段运行代码
VsCode中使用Jupyter
(以前称为IPython Notebook)是一个开源项目,可让您轻松地在一个名为Notebook的画布上组合Markdown文本和可执行的Python源代码。
云深无际
2020/11/03
6.2K0
VsCode中使用Jupyter
Windows中的键盘快捷方式大全
Windows有很多键盘快捷方式,使用键盘快捷方式能够大大提高使用windows的效率,同时还能提升自己的逼格,背熟几个快捷方式,操作起来行云流水犹如大神一般!
用户7657330
2020/08/14
5.9K0
点击加载更多

相似问题

在TypeScript中使用ENUM有什么意义?

20

在代码(不是URL)中"javascript:“有什么意义?

43

C++ --使用< T>而不是<typename T>有什么意义吗?

11

使用ostringstream而不是只使用常规字符串有什么意义?

12

使用SubSink而不是订阅数组有什么意义

239
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档