Directional库的学习记录

第一章:I/O 以及可视化

第二章:离散化&表达

  1. 主(曲率)匹配 principal matching
    方向场处理的基本操作之一是匹配。也就是说,定义切空间ti中哪些向量对应于相邻切空间tj中的向量。/所谓匹配,我理解为相邻的cross之间连接方式,因为一个cross有四个方向,一个切空间t其实就对应一个cross。/在Directional中,我们只处理保序匹配:如果切空间ti中的向量k匹配tj中的向量m,那么对于任意l∈Z,向量k+l匹配向量m+l(模N)。假设TB图边的方向是ti→tj。然后,匹配被编码为m−k。匹配有时是事先不知道的(例如,何时输入或计算笛卡尔场),需要从该场设计匹配。
    给定一个原始场(在每个切线空间中以假定的CCW顺序),可以通过主匹配的过程来设计旋转角度δij。主匹配被定义为最小effort的匹配,总是将其放在[−π,π)的范围内(因此记为“主principal”)。它对应于N-RoSy场匹配的“最小角度”。
    主匹配是通过函数完成的,该函数接受笛卡尔field作为参数,并计算以下内容principal_matching()
    1.在每个(有向)TB图边上的匹配。它存储在field类的成员中matching
    2.The indices of the cycles. The singular local cycles are stored in the corresponding and of the field classsingLocalCyclessingIndices
    奇点被计算为每个局部cycle的指数index,从它周围的effort。一个cycle的指数是一个定向物体绕一个cycle所经历的旋转量/这个就是《trivial connection》2010 里面的内容/。一个向量在一个cycle后必须回到它自己,因此当一个向量m在一个面中结束时,它的索引是一个整数m+I ,I代表顺(逆)时针转了I圈。注意,这也可以包括多次全旋转(即,这不是取模N),其中索引可以是无界的。索引的小数部分由匹配编码;然而,单独的匹配不能编码积分索引(例如,单个向量场在任何地方都有平凡的(零)匹配,但可以有奇点)。注意,对于基于Face的场,奇异cycle是顶点,而在基于顶点的field中,奇异循环是face。进一步注意,Directional只计算局部cycle周围的奇点。也就是说,不更新边界或generator cycle(也就是不能缩放成一个点的cycle)周围的奇点
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接在这里插入图片描述
    带有奇点的场,中间单个三角面(红色)与它的邻居的 principal matching (match的对象也是四个方向的向量,四种颜色)

  2. 采样 Sampling
    这是一个具有教育意义的示例,演示了从旋转角度生成笛卡尔场,然后试图通过主体匹配将其检索回来时信息的丢失。这会导致低价环(low valence cycles)和欠采样导致感知场的混叠。例子中有三种模式:
    在极坐标模式下,用户可以直接指定奇异点的索引,并使用index prescription 计算场(参见例401)。这样,相邻面之间的旋转角度可以任意大,并在低价环中表现为噪声。
    在主匹配模式中,旋转从场中重建,而不需要先前模式中Polar-prescribed 的旋转的先验知识。相邻面之间的大旋转丢失了,这导致了“奇点party”:许多可感知的奇点或较低的指数。
    在插值模式中,场从受约束的面(红色)插值到自由面(白色)上,保持红色带从极模式固定。我们看到的场在笛卡尔的意义上是光滑的,有更多均匀分布的奇点。在插值模式中,场从受约束的面(红色)插值到自由面(白色)上,保持红色带从极模式固定。我们看到的场在笛卡尔的意义上是光滑的,有更多均匀分布的奇点。 index prescription 应该就是 polar mode在这里插入图片描述

  3. 梳理combing
    给定一个匹配(在本例中是主体匹配),就可以对场进行“梳理”。也就是说,重新索引每个面(保持CCW顺序),以便向量索引与邻居的匹配完美地对齐-然后,对边上的新匹配变为零。这个操作很重要,例如,可以为集成integration准备一个方向场。在存在奇点的情况下,场只能被梳理成奇点之间连接的路径森林,也称为接缝。注意,这样的路径并不一定会将网格切割成一个简单连接的Patch,而可能只连接索引相加为整数的奇异subgroup;作为一个平凡的例子,一个1向量场总是被平凡地梳理,即使存在积分奇异点,并且接缝集为零。梳理是通过函数来完成的。输出中的匹配已经设置为经过梳理的区域中的普通匹配,以及跨接缝的正确匹配directional::combing()combedField
    方向的彩色索引,在精梳(有接缝)和未精梳)索引之间交替。在这里插入图片描述方向的彩色索引,在精梳(有接缝)和未精梳)索引之间交替。

第三章 笛卡尔方法 Cartesian Methods

  1. 笛卡尔场
    笛卡尔表示法是一种在显式坐标中表示向量的元范畴,可以在切平面上的局部2D基中表示(x,y),也可以在3D空间的环境坐标中表示(x,y,z)。原始的、代表性的(N-RoSy的)、幂场和多向量表示都是这样的例子。笛卡尔场通常不会自动包含关于一个面与下一个面之间的场的匹配或旋转的信息,它需要使用主体匹配来计算。本章主要介绍使用这种表示法的计算场。
    在[11]中给出了这种表示,但他们没有给出一个具体的名称(通常称为“全局最优”方法)。我们使用在[1]中创造的名称“power场”。power场表示使用离散切线束的每个切平面上的复基,并使用一个power向量-每个面一个复数y表示一个N-RoSy,因此它的根集y=uN包含N-RoSy的向量。通过在一组面B上规定约束yB,算法通过最小化基于面的二次狄利克雷能量,将场插值到其余的面yI:
    在这里插入图片描述
    式中,ef为边e在f的基底中的向量的表示,eg为g的表示。权重ωe是由[5]给出的谐波权重。场是通过函数计算出来的。可以用对齐权值ωc软性规定约束directional::power_field() {Y∗C},解决以下最小化问题:在这里插入图片描述
    其中λS,λC,ωc,∀c∈c为用户控制。
    如果集合B为空,则该场仅定义到全局旋转为止;因此,该算法在一个切线空间中任意设置一个向量,并将其插值到网格的其余部分。在这里插入图片描述
    硬(左)和软(右)对齐的约束(红色表面上的黄色)插入到网格的其余部分。注意通过主体匹配发现的奇点。
  2. 多方向向量? PolyVector
    多向量场[7]是幂场的一种推广,它允许在每个切线空间中表示独立的向量,它们的顺序不变。表示为局部复基上一多项式的系数集a0⋯N−1:在这里插入图片描述

其中根P(z)=0是基于面的方向对象的向量,在局部基中表示为复数。狄利克雷能量与power场的狄利克雷能量相似,只是每个ai都有一个项,具有适当的幂i。注意,N-RoSy表示为一个多项式,其中除a0外所有a都为零。在PolyVectors上,主要的匹配、组合和工作也有很好的定义。
利用该函数可以充分求解线性多向量问题;输入是一组规定的约束vb,每切线空间集合B包含于VTB,在这里你可以规定每切线空间上小于N(除非有对称性)的任意数量的向量(这意味着我们允许集合B具有重复的切线空间)。进一步考虑面集c的软对准向量vc,并伴有对准权值ωc(同样具有重复的面)。然后求解如下二次优化问题:
在这里插入图片描述在这里插入图片描述
所以集合B是完全内插的。矩阵Qc和向量Qc被设计来创建多项式的线性子空间,其各自的向量vc为根;详见14附录A。最后一项测量软对齐,也用每向量ωc加权。同样的技术被用于集合b的硬约简。中间项压制P(z)的所有非自由幂,从而优化P(z),使其尽可能成为一个幂向量。不同的能量也由用户参数λS,λR和λC全局控制。也有可能将场约束为完美的电场;实际上是通过调用实现的。本教程示例允许与对齐权重进行交互 power_field()polyvector_field()
在这里插入图片描述

顶部:锐边约束(左;注意有时每面多于一个),硬溶液(中间)和软溶液(右边)。底部:主导加权平滑度(左),对齐(中)和旋转对称(右)。

  1. polycurl reduction
    此功能仅适用于基于面部的场,通过IntrinsicFaceTangentBundle
    矢量场引导曲面参数化的思想是设计参数化函数(曲面上的切向量场)的候选梯度,而不是函数本身。因此,用于参数化(以及随后的重网格)的向量集场(N-Rosy场、框架场和多向量场)应该尽可能是可积的:应该有可能局部地将它们梳理成近似于标量函数梯度的单个向量场。通过“尽可能平滑”设计方法获得的字段(例如;12,11,7,2,17)通常不具备这个性质。在第8章中,介绍了一种利用旋度约简法生成可积多向量场的方法。该方法以给定的字段为输入,通过迭代减小字段的PolyCurl来提高其可积性;也就是说,一个基于双边的多项式的系数,其根是两个相邻面中匹配向量的旋度。通过使用PolyCurl而不是匹配,优化可以在PolyVector本身上完成,允许奇点自然出现。然而,优化是非线性的——它减少了PolyCurl迭代,同时保留了向量的CCW顺序(对于双射参数化),并选择尽可能平滑和正交的结果。
    一个处处为零多边形旋度的场在局部(远离奇点)可积成N个不同的标量函数;在全局范围内,它可被集成到一个旋转无缝的多分支函数中,我们将在第5章进一步演示。我们演示了PolyCurl-reduction优化。请注意,本教程演示了一种替代匹配,该匹配最小化curl而不是rotate。curl_matching()
    PolyCurl是从初始PolyVector场(Top:迭代0(原始)、10和50的场)迭代缩减的。下图:PolyCurl图。颜色是PolyCurl的根向量的范数。它的最大值(无限范数)如下所示
    在这里插入图片描述
  2. 共轭场 Conjugate Fields

这个功能只适用于通过IntrinsicFaceTangentBundle的基于面的场。两个切向量u和v是共轭的如果满足:在这里插入图片描述
其中k1和k2是主曲率d1和d2是各自的主方向。共轭向量场在建筑几何中非常重要:它们的积分线形成了一个无限小的平面四边形网格。因此,由离散共轭网络产生的有限四元网格是后续平面参数化的一个很好的候选者。
寻找一个满足给定方向约束的共轭向量场是建筑几何中的一个标准问题,这可以通过将一个2² PolyVector场变形为最接近的共轭场来解决。这样的算法在[7]中提出,它在全局平滑和正交步骤之间交替,和局部步骤,将每个面上的场投影到最近的共轭场。
一个平滑的22-PolyVector场(左)被变形成为共轭场(右)。上:场 下:共轭图
在这里插入图片描述

第四章 极坐标方法 Polar Methods

  1. Polar Fields
    极场用角度表示。这些角度可以在切线空间上对给定基的旋转进行编码(因此与笛卡尔方法相比,这是一种“对数”表示),或者是两个相邻切线空间之间的角度差(在偏离平行传输的意义上)。前者通常需要整数变量进行方向场设计。后者没有,但最先进的方法需要在网格中独立的双环周围的指数prescription。目前,Directional支持后者。

  2. Index Prescription
    在双边上编码旋转角度的概念,作为对相邻切平面之间的平行传输的偏差进行编码的手段,在文献6,12中以几种格式出现。我们在Directional中使用的公式和符号是平凡连接6的公式和符号。简单连接解决了一个旋转角度,两个面fi和fj之间的δij每(双)边eij,编码它们之间平行输运的偏差。该算法首先计算一个基循环的生成集,在所有基循环周围必须规定δij的总和。求和被定义为矩阵h。每一个这样的循环(矩阵中的行)都有一个原始曲率K0,指定的指标定义了一个由向量场诱导的替代曲率(因此这是一个平凡的连接)。该算法求解2范数最小二乘意义上的最光滑场,如下所示:
    在这里插入图片描述

H是定义基循环和的矩阵,K0是每个基循环原始曲率的向量,K是规定的曲率,由规定的奇异指数得出:对于正则循环,我们规定K=0,对于具有规定奇异指数i/N的奇异循环,我们设K=2πi/N。K的和必须符合Poincaré指数定理。然而,生成器(句柄)循环可以允许无界索引。具体细节见6。如果输入服从和,则结果在循环周围处处服从规定的指标。该表示是差分的,其中单个全局自由度通过在单个任意面中设置单个方向来解决。请注意,“周期曲率”的正确定义对应于所谓的“周期完整性”,只能达到2π的整数倍。

  1. Basis Cycles 基础环

基循环形成了必须在网格上规定曲率(和奇点)的循环。基循环上的和用大小为|个循环|×|EI|的稀疏矩阵H来描述,其中EI是切束中非边界(内)边的数量GTB。矩阵中的每一行都描述了一个周期的和,并且包含1或−1个值,这取决于参与周期的双边对各自面的(任意)方向。索引的类型在引言中定义。所规定的奇异指数包含与每个基循环对应的奇异指数。k∈Z的值代表围绕各自周期的2πkN旋转。如果规定的索引不符合Poincaré索引定理,结果仍将由最小二乘计算,但它将是不可预测的。
在几个顶点奇点和一个生成器循环上规定了索引,以匹配索引定理在这里插入图片描述

第五章 无缝集成(积分?)&&网格 Seamless Integration and Meshing

本章实现的方法的全部细节可以在技术报告[20]中找到。关于一般n -函数的许多理论思想在[21]中进行了探讨。此外,本章目前只适用于IntrinsicFaceTangentBundle
N -Directional场通常用作无缝N- function的候选梯度,它反过来用于生成与原始场对齐的网格2、10、15、21。回想一下,除了稀疏的一组接缝之外,梳理会使其他地方的匹配变得微不足道。我们增加这些接缝,使网格被切割成一个拓扑圆盘。然后,我们将一个精梳的N-方向{u0,⋯,uN−1}作为裁剪网格上N个基于顶点的标量函数{F0,⋯,FN−1}的N个候选梯度集合。然后求解泊松问题:在这里插入图片描述

考虑原始顶点vi和之间的接缝边eij然后将这两个顶点切成四个角vi,k,vj,k,vi,l,vj,l。注意,如果缝边在奇点处,有些角可能是相同的。在接缝边缘,我们强制执行(线性)无缝条件:在这里插入图片描述

702/5000
翻译
其中πe:N×N是附在(双)边e上的排列矩阵,与积分函数F中的值匹配,就像它对方向场v所做的那样,Te:N×1是平移跳(也:周期跳),它编码了F在接缝上的不连续。为了快速直观地理解,这编码了围绕网格开始和结束于接缝边缘的循环的函数的积分:在一个4-函数中,导致一个四边形网格,它是这样一个循环中的四边形的数量。如果Te∈ZN,则n -函数是完全无缝的:函数的整数等值线沿着一条接缝完美连接。否则,它只是排列无缝的:梯度匹配,这意味着它们只是共同面向的。
服从无缝约束的无缝n函数这样标记;可以很容易地证明[10],平移跳跃Te实际上在奇点之间的接缝曲线上是均匀的。因此,这种平移跳跃变量的数量就是网格中接缝曲线的数量(×N)。

  1. 无缝整合(积分?)Seamless Integration
  2. 不同阶整合(积分?)Integration in various orders
  3. 圆接缝或奇点Rounding either seams or singularities
  4. 线性下降 Linear Reductions
  5. 网格化 meshing

关于Integration

在IFAM中,第2章讲到: Quad-dominant meshes can be created by integrating curvature lines,and usually contain a large number of singularities.
integration 翻译为“积分”好像说不过去,翻译为“连接” 好些。 那什么是曲率线curvature lines 呢?
已知:离散高斯曲率 == 每个顶点的缺角

维基百科解释:

curvature lines are curves which are always tangent to a principal direction (they are integral curves for the principal direction fields). There will be two lines of curvature through each non-umbilic point and the lines will cross at right angles.曲率线是始终与一个主方向相切的曲线(它们是主方向场的积分曲线)。有两条曲率线穿过每个非脐带点,这些线将以直角相交。放到离散里面理解,就是每一个相邻的cross连接起来。
其中 “脐点 umbilic point”的定义是 两个主曲率相等的点。“脐点”分为曲率为0的平点(所有都为0)和曲率不为0的圆点(标准球面所有点的所有曲率都相等),对于后者,该点局部可视为一个以“脐点”为中心的极小的球面。
在脐带附近,曲率线通常形成星形、柠檬形和单星形(来自柠檬星)三种构型之一
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值