混合有限元方法通入引入辅助变量后可以将高阶微分问题变成一系列低阶微分问题的组合。在三维网格形变问题中,我们考虑如下泛函极值问题:

  其中u: Ω0 → R3是变形体的空间坐标,上述泛函极值问题对应的欧拉拉格朗日方程就是双调和方程∆2u = 0。

  通过引入额外变量v,我们可以将上述无约束高阶优化问题转变为带约束的低阶优化问题:

  引入拉格朗日函数,并利用格林公式可以得到:

  将变量vu,λ写成基函数的线性组合形式,并且基函数选择为分段线性帽函数:

  将上式分别对变量viuiλi求偏导可以得到:

  这里讨论两种边界条件情况:

  第一种是固定区域边界条件,就是说在变形体上存在区域Ωf,其对应的空间位置为uf

  求解形式:

  消除额外变量后得到:

  

  第二种是固定曲线边界条件,就是说在变形体上存在曲线C,其满足:

  求解形式:

  消除额外变量后得到:

效果:

本文为原创,转载请注明出处:http://www.cnblogs.com/shushen

 

参考文献:

[1] Jacobson A, Tosun E, Sorkine O, et al. Mixed Finite Elements for Variational Surface Modeling. symposium on geometry processing, 2010, 29(5): 1565-1574.

 

附录

基于三维网格的微分问题求解

  对于求解三维网格上带Dirichlet边界条件的泊松方程:

  将上式写成等价的弱形式:

其中v是任意的测试函数,但是其满足在边界处值为0。

  利用分部积分,可以将上式等式左边进行变化:

  由于测试函数在边界处值为0,所以上式中等式右边第一项为0:

  然后将待求解函数u和测试函数v表示成基函数的线性组合形式,并且基函数选择为分段线性帽函数:

其中I是网格上所有的顶点集合。

  三维网格上分段线性帽函数如下图所示:

  那么对于网格内部任意顶点j,我们都取测试函数v = Φj,这样可以形成一个方程:

  将积分里的求和提取到积分外,得到:

  由于边界处u的数值已知,那么可以将已知项移到等式右侧:

  这样就形成了n个方程组,n为三维网格除边界外的顶点个数。

  对于求解三维网格上带Neumann边界条件的泊松方程:

  同样转换成弱形式,并利用分部积分:

  在Neumann边界条件下,我们选择边界处值不为0的测试函数,那么可以得到:

Cotangent权重矩阵L

  将Φi定义为分段线性帽函数,那么矩阵L的具体数值就可以根据三维网格模型唯一确定了,另外矩阵L之所以称为Cotangent权重,是因为其具体表达式是一个三角函数形式。

  下面具体推导下矩阵L的形式,根据其原始定义表达式:

  在每个三角片内∇Φi是恒定的,并且只有在顶点i相邻的周边三角片上是非零值的。对于一个三角片,∇Φi指向的方向与顶点i相对的底边ei垂直,数值大小为三角片在底边ei上高h的倒数,即:

上式中||ei||是边ei的长度,A是三角片的面积。

  对于相邻顶点ij,∇Φi与∇Φj的方向分别垂直于各自的底边eiej,它们之间的夹角记为θ,于是我们可以得到:

  由于ΦiΦj只有在相邻三角片TαTβ内才同时为非零值,那么:

 

Mass质量矩阵M

  矩阵M的原始定义表达式为:

  由于Φi定义为分段线性帽函数,所以Mij只有当ij为三维网格上相邻顶点或者ij相同时其值才为非零。

  根据积分规则:

其中A是三角片T的面积,x1x2x3是三角片三条边的中点。

  由于Φi在每个三角片内是个简单的线性函数,那么上式可以进一步表示为:

  于是可以得到矩阵M的表达式:

  通常矩阵M可以用对角矩阵Md来近似代替,近似过程为:

  矩阵Md的对角线元素之和等于三维网格Ω的表面积,一般有两种方式来计算对角线元素,分别为重心质量矩阵和Voronoi质量矩阵,如下图所示。

三维动画形变算法(Mixed Finite Elements)的更多相关文章

  1. 三维动画形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)

    在三维网格形变算法中,个人比较喜欢下面两个算法,算法的效果都比较不错, 不同的是文章[Lipman et al. 2005]算法对控制点平移不太敏感.下面分别介绍这两个算法: 文章[Lipman et ...

  2. 三维动画形变算法(Laplacian-Based Deformation)

    网格上顶点的Laplace坐标(均匀权重)定义为:,其中di为顶点vi的1环邻域顶点数. 网格Laplace坐标可以用矩阵形式表示:△=LV,其中,那么根据网格的Laplace坐标通过求解稀疏线性方程 ...

  3. 三维动画形变算法(Gradient-Based Deformation)

    将三角网格上的顶点坐标(x,y,z)看作3个独立的标量场,那么网格上每个三角片都存在3个独立的梯度场.该梯度场是网格的微分属性,相当于网格的特征,在形变过程中随控制点集的移动而变化.那么当用户拖拽网格 ...

  4. 在图层上使用CATransform3D制做三维动画-b

    在UIView上,我们可以使用CGAffineTransform来对视图进行:平移(translation),旋转(Rotation),缩 放(scale),倾斜(Invert)操作,但这些操作是没有 ...

  5. Camera三维动画

    一.概述 在Android中说到3D开发,我们首先想到的是OpenGL,但用起来比较复杂繁琐,不适合做应用级别的3D变换.Android为我们提供了一个简化版的3D开发入口:Camera(这里的Cam ...

  6. 高阶Laplace曲面形变算法(Polyharmonic Deformation)

    数学上曲面的连续光滑形变可以通过最小化能量函数来建模得到,其中能量函数用来调节曲面的拉伸或弯曲程度,那么能量函数最小化同时满足所有边界条件的最优解就是待求曲面. 能量函数通常是二次函数形式: 其中S* ...

  7. 三维网格形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)

    在三维网格形变算法中,个人比较喜欢下面两个算法,算法的效果都比较不错, 不同的是文章[Lipman et al. 2005]算法对控制点平移不太敏感.下面分别介绍这两个算法: 文章[Lipman et ...

  8. 三维网格形变算法(Laplacian-Based Deformation)

    网格上顶点的Laplace坐标(均匀权重)定义为:,其中di为顶点vi的1环邻域顶点数. 网格Laplace坐标可以用矩阵形式表示:△=LV,其中,那么根据网格的Laplace坐标通过求解稀疏线性方程 ...

  9. ArcGIS案例学习笔记4_2_城乡规划容积率计算和建筑景观三维动画

    ArcGIS案例学习笔记4_2_城乡规划容积率计算和建筑景观三维动画 概述 计划时间:第4天下午 目的:城市规划容积率计算和建筑三维景观动画 教程: pdf page578 数据:实验数据\Chp13 ...

随机推荐

  1. [Linux] Telnet提示:Unable to connect to remote host: No route to host

    出错现象: [root@localhost ~]# telnet 192.168.1.128 Trying 192.168.1.128...telnet: connect to address 192 ...

  2. [C++]类的设计(2)——拷贝控制(拷贝控制和资源管理)

      1.类的行为分类:看起来像一个值:看起来想一个指针.     1)类的行为像一个值,意味着他应该有自己的状态.当我们拷贝一个像值的对象时,副本和原对象是完全独立的.改变副本不会对原有对象有任何影响 ...

  3. Python-进程相关概念

    名词解释: 进程: 一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度运行的基本单位 1. 并行 在某个*时间点*,两件或两件以上的事件(任务)同时执行. 比如说,有三 ...

  4. 报错:ORA-25150:不允许对区参数执行ALERING

    alter table 表名 MOVE   storage   (     next 128   ) ; -- Add/modify columns alter table 表名 add 列名 var ...

  5. C# 反射Reflection——反射反射程序员的快乐

    一.什么是反射 反射Reflection:System.Reflection,是.Net Framework提供的一个帮助类库,可以读取并使用metadata. 反射是无处不在的,MVC-Asp.Ne ...

  6. Spring 梳理 - JavaConfig、SPI、SCI、SpringSCI、WebApplicationInitializer、AbstractAnnotationConfigDispatcherServletInitializer、WebMvcConfigurationSupport

    总结1: SCI:Servlet容器(Tomcat)提供的初始化Servlet容器本身的接口,可替换web.xml SpringSCI:SpringServletContainerInitialize ...

  7. JVM 调优 - jhat

    Java命令学习系列(五)——jhat 2016-01-21 分类:Java 阅读(8708) 评论(3) 阿里大牛珍藏架构资料,点击链接免费获取 jhat(Java Heap Analysis To ...

  8. 基于hap的文件上传和下载

    序言 现在,绝大部分的应用程序在很多的情况下都需要使用到文件上传与下载的功能,在本文中结合hap利用spirng mvc实现文件的上传和下载,包括上传下载图片.上传下载文档.前端所使用的技术不限,本文 ...

  9. 学习VBA

    学习VBA VBA 就是 (Visual basic for Application) 用的比较多的是在Excel中处理数据,可以方便快捷地使用编程方式来对数据进行操作. VBA 数据类型 Integ ...

  10. gitblit在windows10上的安装及服务启动报错处理

    折腾一下午算是装好了,心情不错决定分享一下.安装步骤大同小异网上都有,主要是Failed creating java 这个报错,百度出来的没有一个能给我解决的,摸索半天找出一个自己的方式.为报错而来的 ...