雅可比矩阵引导的无翻转体映射生成
2022-02-28徐茂峰刘利刚
徐茂峰,刘利刚
中国科学技术大学数学科学学院, 合肥 230026
0 引 言
计算无翻转和低扭曲的体映射是计算机图形与几何处理中的重要问题。无翻转体映射在网格变形、重新网格化、网格优化以及形状分析等诸多领域有着广泛应用。研究鲁棒的无翻转体映射生成方法具有重要的现实意义。
现实世界中的物体包含内部结构。体映射不仅需要考虑边界,还需要处理内部复杂的几何和拓扑结构。由于现实中的物体不存在负的体积,所以要求体映射必须是无翻转的,即体映射的雅可比矩阵行列式处处大于0。
生成无翻转的体映射主要有以下困难:1)输入映射可能存在翻转。由于无翻转约束是非线性和非凸的,所以将这些翻转去除是困难的。在保证体映射是无翻转的同时,还需要尽可能降低它的扭曲。2)体映射需要满足用户指定的位置约束。位置约束和无翻转约束是相互制约的,同时满足这两个约束比较困难。
为了满足上述要求,已经提出了很多计算无翻转体映射的方法。体映射的计算通常视为一个带约束的优化问题来求解,一般要求在无翻转的条件下尽量减少映射的扭曲。一类方法是从一个无翻转的初始映射开始优化扭曲,通过使用线搜索的方式使得无翻转约束一直不被违反(Aigerman和Lipman,2013;Kovalsky等,2016;Zhu等,2018)。然而对于3维网格,给定严格的位置约束时,计算无翻转的初始体映射是非常困难的。另一类方法不需要无翻转的初始映射,尝试通过消除翻转的方式生成无翻转的体映射。这类方法主要分为扭曲有界的映射方法(Aigerman和Lipman,2013;Kovalsky等,2014,2015)、基于表示的方法(Paillé等,2015;Fu等,2015)、基于惩罚的方法(Liu等,2016)等。这类方法有一些限制因素,一般需要额外的输入信息或复杂的计算。扭曲有界的映射方法需要输入精确的扭曲界线。基于惩罚的方法需要输入额外的旋转场,若输入的数据不准确,则会造成生成的体映射扭曲过高,甚至无法消除翻转。基于表示的方法需要计算二面角和仿射变换等数据,计算成本大幅增加。而基于映射的方法(practical foldover-free volumetric mapping construction,FF)(Su等,2019)能够在严格位置约束下生成无翻转的体映射,无需额外的输入信息,使用扭曲有界的投影技术即可消除翻转,但不能保证完全消除翻转。事实上,经过大量实验发现,对一些复杂模型,使用基于投影的方法处理后,仍然会有部分翻转存在。
本文提出了一种新的计算体映射的方法,能够满足上面提出的几点要求。图1是对本文方法的基本介绍。对有翻转的初始映射(图1(b)),基于映射的方法(FF)不能完全消除翻转(图1(c)),而本文方法可以完全消除翻转(图1(d))。本文算法的核心是一种雅可比指导的变形算法。基于投影的方法虽然不能保证完全消除翻转,但是可以消除大部分翻转,并可以保证映射严格满足位置约束。因此本文将基于映射的方法得到的雅可比矩阵为引导,对原始网格进行变形操作,变形过程中通过线搜索保证体映射不发生翻转。此外,添加了位置能量,通过不断增大位置能量的权重保证变形结果最终能够满足位置约束。最后,在变形优化收敛后,再固定边界优化内部网格的扭曲,最终映射的扭曲达到较低水平。
图1 本文方法简介Fig.1 Introduction to the proposed method ((a) input mesh;(b) initial mapping;(c) FF;(d) ours)
本文提出的雅可比引导的无翻转体映射生成方法的优点和贡献主要如下:1)不需要任何额外的输入,能够处理现有的无翻转体映射生成算法失败的复杂模型,算法鲁棒性高。2)对初始有翻转的体映射,可以生成无翻转的低扭曲体映射。3)提出一种新的雅可比引导的变形方法,能够满足用户指定的位置约束。
本文测试了多种复杂模型,结果表明本文方法均能生成无翻转的体映射。如图2中高亏格的复杂模型以及输入与输出差别较大的模型,本文方法都有较好的效果。此外,在保证满足位置约束的基础上,降低了体映射的扭曲。与现有的方法相比,本文算法具有更强的鲁棒性。
图3展示了本文算法的详细流程,其中红色四面体表示翻转的四面体。图3(a)—(c)分别表示输入的初始网格、输入模型初步映射到多立方体上和基于映射方法的结果,图3(d)—(f)表示本文算法的主要流程,分别为雅可比引导的变形优化、位置约束以及降低扭曲。
图2 复杂模型与差异较大模型Fig.2 Complex model and model with big differences ((a) high-genus model;(b) human model)
图3 本文算法的整体流程Fig.3 The pipeline of the algorithm ((a) input mesh;(b) initial mapping;(c) FF; (d) deformation optimization;(e) position constraints;(f) post-optimization processing)
1 相关工作
1.1 基于维护的方法
基于维护的方法通常从一个无翻转的初始出发,通过优化目标能量方程来降低映射的扭曲(Aigerman和Lipman,2013;Jiang等,2017)。这类方法在优化过程中通过检测雅可比矩阵的行列式来判断映射是否发生翻转,当映射的雅可比矩阵的行列式趋于0时,映射的扭曲能量将趋于正无穷。并且这类方法可以通过线搜索来控制下降步长,使得在优化能量过程中始终不产生翻转。对表面映射而言,最早的双射方法是Tutte嵌入方法(Tutte,1963),这是唯一有理论保证的可以保证无翻转的映射方法。因此基于维护的方法通常应用于与表面映射关系密切的参数化中(Claici等,2017;Liu等,2018)。然而对于体积映射来说,想要得到一个无翻转的初始映射是困难的。例如,可以将一个四面体网格映射到一个立方体或球上,同时保证该映射是一个双射(Campen等,2016)。但是如果将原始模型映射到任意的边界形状上,就很难保证该映射不发生翻转。因此基于维护的方法很难拓展到体映射的计算中。类似基于维护的方法,本文方法同样使用能量优化来防止翻转并降低扭曲,通过变形生成无翻转的体映射。但是本文方法可以处理具有翻转的初始映射,对3维中具有复杂边界的翻转模型仍然能产生较好的结果。
基于维护的方法优化的能量通常是非线性的,很难直接求解这些能量方程。通常做法是通过迭代产生一系列的近似值,直到收敛至最优值。为此,大部分方法使用目标函数的局部二次逼近或代理来求解该优化问题,根据代理的不同,基于维护的方法可以大致分为3种类型:1)一阶方法(Fu等,2016;Rabinovich等,2017),构造比较简单,只考虑能量的一阶导数信息,可以达到不错结果,但往往收敛较慢。2)拟牛顿法(Zhu等,2018),仅使用梯度差来模拟二阶导数,收敛速度高于一阶方法。3)二阶方法,收敛速率最高,其中牛顿法是最传统的二阶方法。该方法一般适用于凸函数,对非凸函数通常需要修正目标函数的海森矩阵(Shtengel等,2017;Golla等,2018),使其成为半正定矩阵才能保证能量优化最终能够收敛。本文方法同样使用二阶方法(Smith等,2019),通过一些不变量系统推导出等距能量的特征系统,能够将能量方程的海森矩阵解析地投影到半正定矩阵,可以加快优化算法的收敛速度,提高算法效率。
1.2 基于翻转消除的方法
很多方法尝试通过消除翻转来生成无翻转的体映射。这类方法对初始映射没有要求,一般可以处理初始较差的模型,鲁棒性较好。在连续情况下,准保形映射方法(Weber等,2012)能够保证局部单射,并且符合给定的位置约束。但是该方法的单射保证并不能很好地转换为离散逼近,并且在凹角处经常容易发生翻转(Weber和Zorin,2014)。扭曲有界的映射方法(Aigerman和Lipman,2013;Kovalsky等,2014,2015)将映射结果投影到扭曲有界的空间范围内来保证无翻转,但需要用户输入额外的界线信息。然而如何定义扭曲的界线仍然是一个困难问题,不准确的输入会导致该方法不能完全消除翻转。另外,基于惩罚的方法(Liu等,2016)通过添加一些凸函数和一些二次旋转弹性能量来惩罚翻转元素的存在,从而消除映射中的翻转。然而这种方法仍需要额外的旋转场作为输入信息。还有一些基于表示的方法(Paillé等,2015;Fu等,2015)不再将顶点作为变量,而是选择二面角或者仿射变换等数据来表示映射。这种方法虽然提高了表示的准确性,但大幅增加了计算的复杂度,体映射生成效率比较慢。基于面积的方法(Xu等,2011)通过优化无符号面积来保证映射无翻转,但这类方法具有不能排除退化三角形、导数不连续和梯度消失的缺点。Du等人(2020)将网格提升到更高的维度进行测量解决了上述问题,但也不能保证得到全局的最小值,即不能保证映射不会产生翻转。基于映射的方法(Su等,2019)使用的是有界扭曲的投影技术,不需要额外输入信息,并且具有鲁棒高效的优点,但对一些复杂模型仍然不能完全消除翻转。
2 雅可比矩阵引导的无翻转体映射生成算法
2.1 概述
2.1.1 输入
首先输入一个3维空间中的四面体网格,记为M。网格的顶点数和四面体数分别为Nv和Nt。网格顶点集合V={vi|i=1,…,Nv},网格四面体集合T={ti|i=1,…,Nt}。
(1)
式中,vi表示顶点vi相应的位置坐标。
2.1.2 目标及方法介绍
若雅可比矩阵的行列式detJi>0,则称四面体ti是无翻转的。仅当所有的四面体都不翻转时,一个映射才称为是无翻转的。本文的目标是得到一个无翻转的映射,并且满足给定的位置约束。
为了完成给定的目标,现有的无翻转映射生成方法一般都将其作为一个优化问题来求解。因为输入的初始映射往往是翻转的,这些方法都是在满足位置约束的前提下尝试去除所有的翻转,但是往往没有理论保证能成功。因此,本文提出一种雅可比矩阵引导的变形算法用于计算无翻转的体映射。本文算法放松了位置约束,不依赖无翻转的初始映射。具体来讲,映射首先设置为恒等映射,然后进行两步优化:1)使用雅可比矩阵指导映射优化,使得映射逐渐满足给定的位置约束,并通过线搜索的方式防止在优化过程中产生翻转;2)通过优化位置能量使得最终结果满足位置约束。
2.1.3 挑战及解决方案
使用上述算法生成体映射时,主要面临以下两个挑战:1)给定的初始映射是有翻转的,因此找到合适的雅可比矩阵作为指导比较困难。2)在保证体映射没有翻转的同时,满足用户给出的位置约束且尽量降低映射的扭曲是非平凡的。
针对上述挑战,分别提出以下解决方案:1)对于输入的有翻转的初始映射,首先使用现有的消除翻转的方法进行处理。但由于算法的限制,处理后的映射可能仍然存在部分翻转。本文直接使用处理后映射无翻转部分的雅可比矩阵作为本文变形算法的引导,对翻转部分使用单位矩阵作为引导。这样就得到了无翻转的引导雅可比矩阵。2)经过上述雅可比矩阵引导优化后,位置约束已经接近满足。然后添加一项位置约束能量,通过不断增大位置约束能量的权重,使得网格最终满足位置约束要求。最后固定位置约束继续优化网格的扭曲,得到一个无翻转的、满足位置约束的且扭曲较低的体映射。
2.2 雅可比矩阵引导的变形优化
2.2.1 引导雅可比矩阵生成
输入的初始映射f存在大量翻转,不能直接使用上述雅可比矩阵作为本文变形算法的引导。对此,采用如下方法找到合适的引导雅可比矩阵:对初始映射存在大量的翻转,首先使用基于映射的方法(Su等,2019)消除初始映射中的翻转。基于映射的方法使用扭曲有界的投影技术消除翻转,不仅可以严格地保证位置约束,并且鲁棒性较好。但与其他消除翻转方法相同的是,基于映射的方法也无法保证能够完全消除翻转。所以还需对上述映射的雅可比矩阵Ji进行处理,具体为
(2)
式中,I表示单位矩阵。使用单位矩阵的原因是可以减少变形时翻转部分的扭曲。式(2)中矩阵对应的映射不存在翻转,且具备部分基于映射方法的良好性质,因此将式(2)中的矩阵作为变形算法的引导雅可比矩阵。
2.2.2 变形能量优化
本文变形的目标是将映射变形到满足给定的位置约束。将算法中映射的雅可比矩阵记为J′,四面体ti上对应的雅可比矩阵记为J′i。为了满足位置约束的目标,需要将J′i优化到接近引导雅可比矩阵Ji。因为J′i(x)是网格顶点坐标x的线性组合,所以本文变形算法可以使用的能量为
(3)
(4)
(5)
(6)
(7)
2.2.3 求解器
本文使用牛顿法优化式(3)定义的能量。牛顿法是二阶优化方法,相较于其他一阶的优化方法,牛顿法迭代次数更少,收敛速率更快。但由于本文使用的狄利克雷能量是非凸的,所以它的海森矩阵并不能保证是半正定的,此时传统的牛顿法往往会发生停滞甚至发散。为了解决这一问题,使用解析的特征系统方法(Smith等,2019)来修正对称狄利克雷能量的海森矩阵,从而满足牛顿法中矩阵半正定性要求,使得本文的变形算法能够快速收敛。
2.2.4 线搜索方法
在变形过程中,为了防止产生翻转的四面体,使用线搜索方法(Smith和Schaefer,2015)确定下降步长t,从而保证每一步迭代都不会产生翻转。考虑每个未翻转的四面体ti,记四面体上的4个顶点坐标分别为v1、v2、v3和v4,它们对应的搜索方向分别是p1、p2、p3和p4。当四面体发生退化时,四面体的有向体积会变为0。因此,可以通过求解以下方程求得该四面体的下降步长ki
(8)
式(8)是关于下降步长k的三次方程,求解比较简单。本文只使用正下降方向上的线搜索,当下降步长ki接近所求的最小正根时,相应的四面体则会接近退化。因此所求的最小的正根即是该四面体的最大下降步长。对所有的四面体计算式(8)中k的最小正根,取其中的最小值作为最大下降步长,记为kmax。当下降步长k∈(0,kmax)时,变形后的网格不会发生翻转。
2.2.5 终止条件
与其他消除翻转方法不同,本文算法始终不会产生翻转的四面体,所以不能以是否存在翻转作为终止条件。为了尽量满足位置约束,便于后面算法的进行,要求变形算法的能量尽可能地优化到收敛。所以终止条件设定为
(9)
式中,En表示定义的能量在第n次迭代的结果。当扭曲能量满足上述条件时终止变形算法。对于复杂的输入,算法可能迭代多次仍然不能达到上述收敛条件,因此还设定了一个迭代次数上限作为终止条件。取迭代上限为250次迭代,当超过迭代次数上限时也停止变形算法,通过后续的处理最后仍然可以得到较好结果。
图4 雅可比矩阵引导的变形优化Fig.4 Deformation optimization guided by Jacobian matrix ((a) input mesh;(b) initial mapping;(c) FF;(d) deformation result)
2.3 位置约束
虽然本文给出的修正雅可比引导是不准确的,但由于基于映射方法处理后的四面体网格翻转较少,所以在变形优化收敛后,映射基本满足给定的位置约束。为了尽量地满足位置约束,将位置能量加入到定义的变形能量当中。由于此时的变形网格接近满足位置约束,因此优化起来仍然比较简单。添加位置约束后的能量表达式为
(10)
式中,λD和λS是给定的两个参数,用来控制这两部分能量的大小。本文设定λD为1。由于变形刚收敛的时候,映射与指定的位置约束相差较大,因此将λS的初值设定得比较小,本文将其初始值设置为0.001。继续使用现有的优化方法优化该能量,为了保证能够满足位置约束,在能量收敛后增大λS的值继续优化,直到第2项位置约束的能量值达到一个较低的水平。改变参数λS的方法为
(11)
图5 位置约束优化过程Fig.5 Position constraint optimization process ((a) input mesh;(b) deformation result;(c) the first iteration; (d) the third iteration;(e) position constraints)
2.4 后优化处理
本文算法还做了一步后处理操作,用来降低最终映射的扭曲。在带有位置约束的能量优化结束后,此时映射已经满足位置约束的要求。为了进一步降低映射的扭曲,固定位置约束,通过优化以下能量降低扭曲。
(12)
式中
农村师资发展的需求 在信息化的教育条件下,教师有机会强化自身,适应学习型社会的要求,提升自身素质。教育信息化为教师提高自身素质提供了便利条件,无纸化的学习环境可节约大量经费,便利的网络交流渠道使教师学习更加便捷,从而改变农村教育经费紧张和农村教师收入低导致的影响业务学习的状况,方便教师利用分散的时间和地点进行学习,使教学效率得到提高,改善长期以来农村教育师资落后的局面。
(13)
在优化处理中,仍然使用变形算法中的能量求解方法。因为降低扭曲时固定了位置约束,所以能够在满足位置约束的条件下降低映射的扭曲,并且在优化过程中不会产生新的翻转四面体。如图6所示,红色代表扭曲,红色越深扭曲越大。经过后处理优化,本文算法明显降低了映射的扭曲。
图6 优化处理中的网格扭曲能量Fig.6 Mesh distortion energy in optimization process ((a) input mesh;(b) before optimization process; (c) after optimization process)
3 实验结果与分析
本文提供了一种能够鲁棒地生成无翻转和低扭曲体映射的算法。针对复杂模型进行大量实验,并通过与现有方法对比,验证本文算法的鲁棒性。本文算法基于C++实现,所有实验都在Core i7-8700处理器、16 GB内存的台式电脑上完成。优化能量时使用解析的特征系统方法来修正海森矩阵,并使用英特尔的数学内核库求解大型的线性方程组(Schenk等,2007;Petra等,2014a,b)。
3.1 质量测量标准
为了评估体映射的质量,使用如下测量标准:
1)是否存在翻转。无翻转是体映射的最基本要求,通过记录四面体网格中翻转的四面体数量来衡量体映射的质量。本文所有图例中红色的四面体表示翻转的四面体。
3.2 结果分析
3.2.1 不同网格质量
本文测试了不同质量的网格输入。如图7所示,输入两种内部质量不同、形状相同的原始网格,位置约束是它们对应的多立方体。经过测试,对于不同质量的网格,本文算法均能生成满足测量标准的体映射。
图7 不同网格质量Fig.7 Different mesh quality((a)input mesh 1; (b)output mesh 1;(c)input mesh 2;(d)output mesh 2)
3.2.2 不同网格类型
3.2.3 不同位置约束及初始化
一个合格的体映射生成算法能够适应不同的位置约束,并且能够处理不同的初始映射。本文将同一个模型映射到不同的目标区域进行实验,如图9所示,对同一个网格构建目标形状不同的体映射。结果表明,对于不同的目标区域,本文算法均能生成较好的体映射。
图8 不同网格类型及更多结果展示Fig.8 Different mesh types and more results((a) input original meshs;(b) output results)
图9 不同位置约束Fig.9 Different position constraints((a) input mesh 1; (b) position constraint 1;(c) position constraint 2;(d) position constraint 3;(e) input mesh 2;(f) output mesh 1; (g) output mesh 2;(h) output mesh 3)
此外,实验中本文使用了不同的体映射初始化,包括3种方式:1)谐波映射;2)将网格的内部顶点放置在同一位置;3)随机放置网格内部的顶点位置。图10展示了同一个模型3种不同的初始化。可以看出,本文算法得到的结果不存在翻转的四面体,能够满足体映射测量标准的要求。
图10 不同初始映射Fig.10 Different initial mappings((a) input mesh; (b) harmonic mapping;(c) same position;(d) random position;(e) position constraint;(f) output mesh 1; (g) output mesh 2;(h) output mesh 3)
3.2.4 鲁棒性分析
本文算法以基于映射的方法为基础。基于映射的方法对大量数据进行测试,鲁棒性较好。即使对于不能完全消除翻转的模型,该方法仍能消除大部分翻转,保证了本文的雅可比引导是比较合理的。通过雅可比矩阵引导的变形算法处理,能够使映射尽可能地逼近位置约束,便于后面包含位置约束的能量优化。并且本文算法在变形过程中还可以使用线搜索的方法防止产生翻转。因此,对于生成无翻转的体映射,本文方法具有更好的鲁棒性。
3.2.5 效率分析
与现有的体映射方法相比,本文算法在消除翻转方法的基础上添加了雅可比引导的变形算法,因此耗费时间更长。最耗费时间的地方主要在优化变形网格以满足位置约束这一步。为了使优化顺利进行,并尽可能满足位置约束,本文算法将位置约束能量的权重逐渐增大并进行多次优化。这些步骤保证了本文算法能够生成高质量的无翻转的体映射,同时也通过对变形算法进行加速,使算法的效率在一个合理的范围内。
3.3 与其他方法对比
3.3.1 与扭曲有界方法的对比
扭曲有界方法是消除翻转这类方法中一种比较有效的方法。扭曲有界的方法不依赖初始映射,通过将映射结果投影到扭曲有界的空间范围内消除翻转,实验中主要与这类方法中的大规模有界扭曲映射(large-scale bounded distortion mappings,LBDM)(Kovalsky等,2015)方法进行比较,对比结果如图11所示。
由于扭曲有界的方法比较依赖扭曲界线的选取,一个比较差的界线可能导致LBDM方法产生振荡。而本文算法以基于映射的方法作为基础,使用基于映射方法中的最大扭曲作界线。为了更好地消除翻转,对LBDM方法进行最大1 000次迭代的实验或能够完全消除翻转时停止迭代。通过实验发现,对较复杂的模型,LBDM方法进行1 000次迭代不能完全消除翻转,仍有少部分区域存在翻转的四面体(图11(b)上)。而对于映射前后差异较大的网格,LBDM方法处理后留存的翻转的四面体数目还有很多,仍有183个翻转的四面体(图11(b)下)。
图11 本文算法与扭曲有界方法对比Fig.11 Comparison between our method and LBDM ((a) input mesh;(b) LBDM;(c) ours)
相比于LBDM方法,本文算法不仅迭代次数更少,并且保证不会产生翻转(图11(c))。
3.3.2 与基于映射方法的对比
基于映射的方法不依赖无翻转的初始映射,具有较高的鲁棒性,并且也通过后处理降低了体映射的扭曲,与本文目标相似。但通过实验发现,对于某些复杂模型,基于映射的方法往往需要多步迭代才能收敛,并且有些模型在经过多步迭代后仍不能完全消除翻转。而使用本文算法对大量复杂模型进行实验,均能生成无翻转的体映射。
本文算法与基于映射的方法主要从3个方面进行对比。1)无翻转是体映射的最基本要求,生成无翻转的体映射是本文的核心工作。如图12所示,基于映射的方法未能完全消除翻转,在进行了多次迭代之后仍存有少量的翻转四面体(图12(b))。本文算法通过使用雅可比引导的变形方法,保证变形过程中不产生翻转,因此最终结果不会有翻转的四面体(图12(c))。2)基于映射的方法可以保证严格的位置约束。本文算法虽然放松了位置约束,但通过后续位置约束的优化,可以将定义的位置约束能量控制在很小的值。3)在时间复杂度上,本文算法需要使用基于映射方法的结果作为引导,因此需要更多的时间。但是对于复杂模型,基于映射的方法也需要多次迭代来消除翻转。由于本文算法不需要完全无翻转的雅可比矩阵引导,因此可以提前终止基于映射方法的迭代,从而减少算法的时间。此外,基于映射的方法也使用了类似的后优化处理,两种方法均能生成扭曲较低的映射。
图12 本文算法与基于映射的方法对比Fig.12 Comparison between our method and FF ((a) input mesh;(b) FF;(c) ours)
本文算法在本文各图示模型的顶点和四面体数目、初始映射的翻转数目以及每个模型的扭曲能量δt和位置能量ρ如表1所示。可以看出,本文算法不仅不会产生翻转,而且能够满足用户能量和位置的要求。
表1 模型数据统计Table 1 Model data statistics
4 结 论
本文提出了一种新的计算无翻转体映射的方法,不依赖无翻转的初始映射,对不同质量、不同目标的网格均有较好表现,并且能够处理现有方法处理失败的复杂网格。本文算法的优势在于,使用雅可比矩阵作为引导进行变形操作,通过构建合理的雅可比矩阵,可以保证变形后的网格不存在翻转的四面体,并且使变形网格尽量接近目标形状。同时通过控制位置能量来满足给定的位置约束,并通过后优化处理进一步降低映射的扭曲。
但是,本文算法有一定的局限性。首先,本文算法依赖基于映射的方法,且需要进行多步的优化处理,因此算法时间复杂度较高。其次,本文算法可以理论上保证映射是无翻转的,大量实验也表明本文算法生成的映射都能满足位置约束的要求,但目前没有理论保证映射一定会满足给定的位置约束。