云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

负载均衡_外国服务器网站_测评

小七 141 0

云存储公司_便宜的_云计算基础与实用技术

与流行的观点相反,B样条曲线并没有什么巫术-它们只是一种以更方便的形式表达样条线的工具。其基本思想是,我们可以将一个样条函数分为一组控制点c(它定义了样条曲线的近似路径)和一组函数b(t),这些控制点在曲线上的参数值t处赋予每个控制点的权重。样条曲线可能不会通过所有甚至任何控制点c,但移动控制点可以控制曲线的路径。在下面的示例中,我们为示例1中的样条曲线生成了点:除了控制点,我们还需要一组函数b(t),它提供每个参数值t的控制点的权重。例如,在t=0.5时,样条曲线的五个控制点根据向量b(0.5)=[0.00000,0.16667,0.444444,0.35185,0.03704]加权。通过选择b(t)的平滑函数,我们可以创建一条平滑曲线,在控制点之间过渡。创建B样条曲线时,我们实际上不需要显式地指定B(t)-这是自动构造的,以具有所需的平滑度属性-相反,我们只需要指定多项式片段之间的结应该在哪里。对于上面的曲线,我们需要两个部分,一个在t=0和t=0.25之间,服务器云平台,一个在t=0.25和t=1之间。要创建这个B样条曲线,我们需要指定节点向量[0,0,0,0.25,1,1,1,1]。请注意,在两个固定端点之间绘制样条线时,第一个和最后一个结始终重复四次,以便将样条线"夹紧"到起点和终点。下面是如何在Onshape中直接定义此B样条曲线:请注意,控制点与指定给skFitSpline()的点不同。在本例中,skFitSpline()的指定点为(0,0),(10,10),(100100),startDerivative为(150,0),EndDivisive为(0150),而相应的样条曲线控制点为(0,0),(12.5,0),(-8.75,16.25),(100,62.5),(100100)。使用skFitSpline()时,Onshape会将参数转换为B样条曲线控制点,这很容易通过一些数学运算来完成。第一个和最后一个拟合点将成为第一个和最后一个控制点。第二个和倒数第二个控制点可以从startDerivative和endDerivative计算,方法与我们之前对Bézier曲线所做的相同。其他控制点可由剩余的线性代数拟合点导出(其中s(t)=b(t).c)。相反,如果要使用B样条曲线控制点定义样条曲线,则可以通过在其所有结处对其求值,并使用上面用于Bézier曲线的相同方程计算startDerivative和End导数,从而轻松地将其转换为skFitSpline()形式。为什么是B样条函数?可以看出,样条的B样条形式比为每个多项式段指定多项式系数有许多优点。首先,控制点比多项式系数有更直观的几何解释。其次,如果选择b(t)具有二阶导数连续性,则s(t)自动具有二阶导数连续性,而不需要拟合一组满足该准则的系数。然而,B样条曲线并没有什么神奇之处:可以从B样条曲线控制点计算多项式系数,反之亦然,因此它们只是同一曲线的不同表示。另请注意,对于具有简单节点向量(如[0,0,0,0,1,1,1,1])的单件样条曲线,b(t)完全等同于定义bézier曲线的权重,并且生成的样条曲线与具有相同控制点的bézier曲线相同。更复杂的样条曲线可以分解成多个这样的Bézier片段。同样的,这些样条曲线和一组连接在一起的Bézier曲线相比,没有什么比这更强大的了。然而,对于期望二阶导数连续性的默认情况,B样条曲线表示需要较少的控制点。在Onshape中直接创建三维样条曲线有两个FeatureScript函数可用于直接在3D中创建样条线:opFitSpline()和OpCreateBsLineCurve()。opFitSpline()与前面描述的skFitSpline()函数完全等效,只是它不在二维草图(具有隐式草图平面)的上下文中工作,而是直接在三维中绘制曲线。这比通过草图更方便,而且曲线不必约束到单个平面。参数与skFitSpline()完全相同,只是所有点都指定为三维而不是二维矢量。opCreateBsLineCurve()是样条函数中最强大的,也是最令人望而生畏的。它直接取一组B样条节点和控制点。与其他函数不同,此函数允许您创建任意次数的样条线,而不仅仅是三次样条线。它还允许您创建闭合样条线(稍后将详细介绍),并允许您创建有理样条线(也称为NURBS)。在本文中,我将不讨论有理样条曲线,但它们允许您绘制某些曲线,否则无法以B样条曲线的形式表示。为了演示这些函数的用法,这里有一个3D对象,我用opCreateBSplineCurve()绘制了一个闭合的横截面轮廓,用opFitSpline()绘制了一个引导路径。然后我用opSweep()沿着引导路径扫描轮廓,并用opThicken()加厚生成的曲面,以创建一个三维对象。(为了便于说明,我在图片中留下了引导路径。)我不知道这个物体到底是什么。也许这是什么东西的把手,或者是我未来形状博物馆的一件艺术品。但是你可以看到,淘客商城,如果我们需要在实际工程问题中创建一个计算曲面,那么这个方法是多么有用。以下是完整代码:值得解释的一件事是,我如何选择B样条参数来创建一个闭合的("周期性")样条曲线。对于第1部分中讨论的所有B样条曲线,我重复了第一个和最后一个结四次,以确保样条曲线通过起点和终点(例如,结序列看起来像[0,0,0,0.25,1,1,1,1])。在这种情况下,我们不需要也不想将曲线钳制到固定的端点。相反,我在t=0和t=1([0,0.1,0.2,…,0.8,0.9,1])之间选择了一组统一的结。生成的曲线不通过第一个或最后一个控制点,但仍由控制多边形引导。然后,我重复控制点列表末尾的前三个控制点-第二次将控制多边形的一部分环绕曲线-这将导致闭合样条曲线。下面是一个样条线和控制多边形的图,可能有助于说明这一点。控制多边形从原点(0,0)开始,顺时针经过(-10,30),(30,10),(10,0),回到(0,0),然后返回(-10,30),(30,10),(10,0)。生成的样条线遵循从原点到鸡蛋顶部的左虚线(从t=0到t=0.3),跟踪一次鸡蛋(从t=0.3到t=0.7),然后通过右虚线(从t=0.7到t=1)返回原点。Onshape绘制曲线时,它只从t=0.3到t=0.7绘制中间部分,淘客吧,因此结果是闭合的卵形。(对于阶数为3的样条曲线,绘制时始终忽略外部三个结跨。)偏移曲线有时有必要生成一条与另一条曲线"平行"的曲线,并保持与该曲线的恒定距离。在CAD中,这称为偏移曲线。这里有一个例子,我画了一条曲线和一条在给定距离的偏移曲线。然后,我使用这两条曲线来创建具有恒定厚度的曲线对象:请注意,绘制偏移曲线并不像平移曲线(沿(x,y)移动)那么简单。如果我要通过复制底部曲线、将副本拖向左上角并填充两者之间的区域来创建此对象,则最终得到的结果远远不是恒定厚度:相反,要创建偏移曲线,曲线上的每个点都需要以稍微不同的方向移动:该点处曲线的法线方向。Onshape sketch GUI有一个"偏移"工具,可以轻松地偏移曲线。不过,我需要在FeatureScript中以编程方式完成此操作,并且没有针对偏移曲线的文档化FeatureScript函数。这也证明了在数学上不可能用一个新的B样条函数来表示偏移曲线。怎么会这样?Onshape有一个方便的特性,可以查看GUI生成的代码(右键单击partstudio→viewcode)。通过仔细阅读offset工具生成的代码,免费自助建站软件,我最终找到了如何从FeatureScript创建偏移曲线。偏移曲线,返利购物,使用Onshape约束关键是使用skSplineSegment()创建一个新样条线,然后添加一个距离约束,将其约束为距第一条样条线一定距离:偏移约束似乎不是求解器在这里做正确事情所必需的,它可能只是为了GUI显示的目的,但是我在代码示例中保留了它以防万一。有一个很奇怪。我们没有在端点上指定任何约束,有时解算器对第二个端点的处理比您可能想要的要多。例如,根据样条线参数,可以得到如下结果:我还不能弄清楚解算器如何选择第二个端点的逻辑,然而这纯粹是学术上的兴趣。在实践中,CAD问题的需求通常会规定端点上的物理约束。如果要强制第二条曲线在与第一条曲线相同的点处结束,可以在端点之间添加额外的约束。例如:在前面的图片中,我使用偏移样条线创建了一个三维对象,我需要用两条线段连接样条线的端点来形成一个面。与在草图GUI中一样,这可以通过使用重合约束来完成。(代码很简单,但相当冗长。如果你在你的FeatureScript中需要很多这样的约束,它可以