Mixed Finite Elements for Variational Surface Modeling
paper source
{ formula 5
LB=12<v,v>Ω0+<λ,Δu−v>Ω0=12<v,v>Ω0−<λ,v>Ω0+<λ,Δu>Ω0L_B=\frac{1}{2}_{\Omega_0}+_{\Omega_0}=\frac{1}{2}_{\Omega_0}-_{\Omega_0}+_{\Omega_0}
wherein, according to Green’s identity:
<λ,Δu>Ω0=<λ,∇(∇u)>Ω0=<λ,∂u∂n>∂Ω0−<∇λ,∇u>Ω0<script type="math/tex" id="MathJax-Element-147"><\lambda,\Delta u>_{\Omega_0}=<\lambda,\nabla(\nabla u)>_{\Omega_0}=<\lambda,\frac{\partial u}{\partial n}>_{\partial\Omega_0}-<\nabla \lambda,\nabla u >_{\Omega_0}</script>
Therefore, we obtain the (5) formula as follows:
\begin{align} L_B&=\frac{1}{2}_{\Omega_0}+_{\Omega_0}\\ &=\frac{1}{2}_{\Omega_0}-_{\Omega_0}+_{\Omega_0}\\&=\frac{1}{2}_{\Omega_0}-_{\Omega_0}+_{\partial\Omega_0}-_{\Omega_0} \end{align}
}
{ figure 5
I would like to depict the picture more accurately.
}
{ formula 8
I∂Ω0I_{\partial \Omega_0}represents the vertices on the boundary of Ω0\Omega_0
The formula 6 is like:
12<v,v>Ω0−<λ,v>Ω0+<λ,∂u∂n>∂Ω−<∇λ,∇u>Ω0+<μ,uf−u>Ωf\frac{1}{2}_{\Omega_0}-_{\Omega_0}+_{\partial\Omega}-_{\Omega_0}+_{\Omega_f}
Here, we rewrite the formula 6 in terms of the form ∑i∈Iaiφi\displaystyle\sum_{i\in I}a_i\varphi_i:
\begin{align} &\frac{1}{2}_{\Omega_0}-_{\Omega_0}+_{\partial\Omega}-_{\Omega_0}+_{\Omega_f}\\ &=\frac{1}{2}\displaystyle\sum_{j\in I}_{\Omega_0}+\frac{1}{2}\displaystyle\sum_{j\in I}_{\Omega_0}-\displaystyle\sum_{j\in I}_{\Omega_0}-\displaystyle\sum_{j\in I}_{\Omega_0}+\displaystyle\sum_{j\in I}_{\partial\Omega_0} +\\ &\displaystyle\sum_{j\in I}_{\partial\Omega_0}-\displaystyle\sum_{j\in I}_{\Omega_0}-\displaystyle\sum_{j\in I}_{\Omega_0}+\displaystyle\sum_{j\in I}_{\Omega_f}+\\ &\displaystyle\sum_{j\in I}_{\Omega_f}\\ &=\displaystyle\sum_{j\in I}v_iv_j_{\Omega_0}-\displaystyle\sum_{j\in I}\lambda_iv_j_{\Omega_0}-\displaystyle\sum_{j\in I}\lambda_jv_i_{\Omega_0}+\displaystyle\sum_{j\in I}\lambda_i\frac{\partial u_j}{\partial n}_{\partial\Omega_0} +\\ &\displaystyle\sum_{j\in I}\lambda_j\frac{\partial u_i}{\partial n}_{\partial\Omega_0}-\displaystyle\sum_{j\in I}\lambda_iu_j_{\Omega_0}-\displaystyle\sum_{j\in I}\lambda_ju_i_{\Omega_0}+\displaystyle\sum_{j\in I}\mu_i(u_j^f-u_j)_{\Omega_f}+\\ &\displaystyle\sum_{j\in I}\mu_j (u_i^f-u_i)_{\Omega_f} \end{align}
with respect to viv_i:
∑j∈Ivj<φi,φj>Ω0−∑j∈Iλj<φj,φi>Ω0=∑j∈I(vj−λj)<φi,φj>Ω0\displaystyle\sum_{j\in I}v_j_{\Omega_0}-\displaystyle\sum_{j\in I}\lambda_j_{\Omega_0}=\displaystyle\sum_{j\in I}(v_j-\lambda_j)_{\Omega_0}
with respect to uiu_i:
−∑j∈Iλj<∇φj,∇φi>Ω0−∑j∈Iμj<φj,φi>Ωf-\displaystyle\sum_{j\in I}\lambda_j_{\Omega_0}-\displaystyle\sum_{j\in I}\mu_j_{\Omega_f}
with respect to λi\lambda_i:
−∑j∈Ivj<φi,φj>Ω0+∑j∈I∂uj∂n<φi,φj>∂Ω0−∑j∈Iuj<∇φi,∇φj>Ω0-\displaystyle\sum_{j\in I}v_j_{\Omega_0}+\displaystyle\sum_{j\in I}\frac{\partial u_j}{\partial n}_{\partial\Omega_0}-\displaystyle\sum_{j\in I}u_j_{\Omega_0}
with respect to μi\mu_i:
∑j∈I(ufj−uj)<φi,φj>Ωf\displaystyle\sum_{j\in I}(u_j^f-u_j)_{\Omega_f}
Therefore, the complete formula 8 should be like:
∑j∈I(vj−λj)<φi,φj>Ω0=0\displaystyle\sum_{j\in I}(v_j-\lambda_j)_{\Omega_0}=0
−∑j∈Iλj<∇φj,∇φi>Ω0−∑j∈Iμj<φj,φi>Ωf=0-\displaystyle\sum_{j\in I}\lambda_j_{\Omega_0}-\displaystyle\sum_{j\in I}\mu_j_{\Omega_f}=0
−∑j∈Ivj<φi,φj>Ω0+∑j∈I∂uj∂n<φi,φj>∂Ω0−∑j∈Iuj<∇φi,∇φj>Ω0=0-\displaystyle\sum_{j\in I}v_j_{\Omega_0}+\displaystyle\sum_{j\in I}\frac{\partial u_j}{\partial n}_{\partial\Omega_0}-\displaystyle\sum_{j\in I}u_j_{\Omega_0}=0
∑j∈I(ufj−uj)<φi,φj>Ωf=0\displaystyle\sum_{j\in I}(u_j^f-u_j)_{\Omega_f}=0
If we assume the uu is independent with nn, i.e. ∂u∂n=0\frac{\partial u}{\partial n}=0, meanwhile, with the value unchanged, we exchange the positions of uj,ufju_j,u_j^f in the last equation, then we will get what paper gives.
∑j∈I(vj−λj)<φi,φj>Ω0=0\displaystyle\sum_{j\in I}(v_j-\lambda_j)_{\Omega_0}=0
−∑j∈Iλj<∇φj,∇φi>Ω0−∑j∈Iμj<φj,φi>Ωf=0-\displaystyle\sum_{j\in I}\lambda_j_{\Omega_0}-\displaystyle\sum_{j\in I}\mu_j_{\Omega_f}=0
−∑j∈Ivj<φi,φj>Ω0−∑j∈Iuj<∇φi,∇φj>Ω0=0-\displaystyle\sum_{j\in I}v_j_{\Omega_0}-\displaystyle\sum_{j\in I}u_j_{\Omega_0}=0
∑j∈I(uj−ufj)<φi,φj>Ωf=0\displaystyle\sum_{j\in I}(u_j-u_j^f)_{\Omega_f}=0
note: the sige in equation 3 of the original equation set is wrong.
}
{formula (9)
From the first equation of formula 8, we can just let vj=λjv_j = \lambda_j. Substituting it into the second equation yields:
−∑j∈Ivj<∇φj,∇φi>Ω0−∑j∈Iμj<φj,φi>Ωf=0-\displaystyle\sum_{j\in I}v_j_{\Omega_0}-\displaystyle\sum_{j\in I}\mu_j_{\Omega_f}=0
Using Lij,MijL_{ij},M_{ij} to replace the corresponding part gives us:
∑j∈IvjLij−∑j∈IμjMij=0\displaystyle\sum_{j\in I}v_jL_{ij}-\displaystyle\sum_{j\in I}\mu_jM_{ij}=0, if i∈Ifi \in I_f
In addition, we use the diagonal matrix MdM^d to replace MM, which means only the diagonal elements of M need to be cared, all other elements are zeros. we denote MiiM_{ii} as DiD_i
Therefore, it is easily followed by :
∑j∈IvjLij−∑j∈IμjMij=∑j∈IvjLij−μiDi=0\displaystyle\sum_{j\in I}v_jL_{ij}-\displaystyle\sum_{j\in I}\mu_jM_{ij}=\displaystyle\sum_{j\in I}v_jL_{ij}-\displaystyle\mu_iD_i=0, if i∈Ifi \in I_f
As <φj,φi>Ωf<script type="math/tex" id="MathJax-Element-185">< \varphi_j,\varphi_i>_{\Omega_f}</script> integrates on Ωf\Omega_f, the integration will be 0 if i∉If.i \notin I_f. Then we can obtain another equation:
∑j∈IvjLij=0\displaystyle\sum_{j\in I}v_jL_{ij}=0, if i∉Ifi \notin I_f
These two equations are the top two ones of formula 9.
After replacing by Lij,DiL_{ij}, D_i, the third equation of formula 8 seems to be:
∑j∈ILijuj−DiVi=0\displaystyle\sum_{j\in I}L_{ij}u_j-D_iV_i=0
which is the left lower corner one of formula 9.
In terms of the fourth equation of formula 8, to hold the left hand side zero when i∈Iei \in I_e, as ∑j∈I<φj,φi>Ωf\sum_{j\in I}_{\Omega_f} would not be zero, the other part must be zero, which gives:
∑j∈Iuj−ufj=0\displaystyle\sum_{j\in I}u_j-u_j^f=0, if i∈Ifi \in I_f
which is the right lower corner one of formula 9.
}
{ formula 10
Since μi\mu_i is not present in other equations, we can just ignore the left upper corner equation of formula 9.
According to the right upper corner equation of formula 9, index i∈IΩi \in I_\Omega. To prevent LijL_{ij} being zero, index jj should be the neighbor of index i, i.e. j∈IΩ¯j \in I_\overline \Omega. Consequently, we can get:
LΩ,Ω¯vΩ¯=0L_{\Omega, \overline \Omega}v_{\overline \Omega}=0…………………………………………..(1)
which is the bottom equation of formula 10.
Limiting the index i of the left lower corner of formula 9 to IΩ¯I_\overline \Omega, index j can extend to I1I_1, i.e. j∈IΩ∪I0∪I1j \in I_{\Omega} \cup I_0 \cup I_1
(再用中文解释下:为了算uΩu_\Omega, 我们需要引入LΩ¯ΩL_{\overline \Omega \Omega},而完整的LΩ¯⋅=LΩ¯Ω+LΩ¯0+LΩ¯1L_{\overline \Omega \cdot}=L_{\overline \Omega \Omega}+L_{\overline \Omega 0}+L_{\overline \Omega 1})
LΩ¯,ΩuΩ+LΩ¯,0u0+LΩ¯,1u1−MdVΩ¯=0L_{\overline \Omega, \Omega}u_{\Omega}+L_{\overline \Omega, 0}u_{0}+L_{\overline \Omega, 1}u_{1}-M^dV_{\overline \Omega}=0
Switching the second, third terms to the right hand side gives:
LΩ¯,ΩuΩ−MdvΩ¯=−LΩ¯,0u0−LΩ¯,1u1L_{\overline \Omega, \Omega}u_{\Omega}-M^dv_{\overline \Omega}=-L_{\overline \Omega, 0}u_{0}-L_{\overline \Omega, 1}u_{1}
Using the right lower corner equation of formula 9, we can replace u0,u1u_0, u_1 with uf0,uf1u_0^f, u_1^f respectively, which gives the top equation of formula 10:
LΩ¯,ΩuΩ−MdvΩ¯=−LΩ¯,0uf0−LΩ¯,1uf1L_{\overline \Omega, \Omega}u_{\Omega}-M^dv_{\overline \Omega}=-L_{\overline \Omega, 0}u_{0}^f-L_{\overline \Omega, 1}u_{1}^f …………………………………………..(2)
}
{ formula 11
Rewriting equation (2) in formula 10 as:
LΩ¯,ΩuΩ−MdvΩ¯=−LΩ¯,01uf01L_{\overline \Omega, \Omega}u_{\Omega}-M^dv_{\overline \Omega}=-L_{\overline \Omega, 01}u_{01}^f
Left multiplying (Md)−1(M^d)^{-1} on both sides gives us :
(Md)−1LΩ¯,ΩuΩ−vΩ¯=−(Md)−1LΩ¯,01uf01(M^d)^{-1}L_{\overline \Omega, \Omega}u_{\Omega}-v_{\overline \Omega}=-(M^d)^{-1}L_{\overline \Omega, 01}u_{01}^f
Then, again, left multiplying LΩ,Ω¯L_{\Omega, \overline \Omega} on both sides leads to:
LΩ,Ω¯(Md)−1LΩ¯,ΩuΩ−LΩ,Ω¯vΩ¯=−LΩ,Ω¯(Md)−1LΩ¯,01uf01L_{\Omega, \overline \Omega}(M^d)^{-1}L_{\overline \Omega, \Omega}u_{\Omega}-L_{\Omega, \overline \Omega}v_{\overline \Omega}=-L_{\Omega, \overline \Omega}(M^d)^{-1}L_{\overline \Omega, 01}u_{01}^f
According to the equation 1 in formula 10, the second term ought to be zero, which results in:
LΩ,Ω¯(Md)−1LΩ¯,ΩuΩ=−LΩ,Ω¯(Md)−1LΩ¯,01uf01L_{\Omega, \overline \Omega}(M^d)^{-1}L_{\overline \Omega, \Omega}u_{\Omega}=-L_{\Omega, \overline \Omega}(M^d)^{-1}L_{\overline \Omega, 01}u_{01}^f
which is what paper gives.
}
reduced matlab code:
bi_bndtype = 'ext';
masstype = 'voronoi';
reduction = 'no_flatten';xRes = 32;
yRes = 32;wrap = 0;
[F,V,res,edge_norms] = create_regular_grid(xRes,yRes,wrap,wrap);
V = [V(:,1), V(:,2), zeros(size(V,1),1)];
subplot_handle = subplot(2,2,1);
cla(subplot_handle);
tsurf(F,V,0,0);
title('Input domain');R = 0.4;
r = 0.2;indices = 1:size(V,1);
interior = indices( ...(V(:,1)-0.5).^2 + (V(:,2)-0.5).^2 < R^2 & ...(V(:,1)-0.5).^2 + (V(:,2)-0.5).^2 > r^2 );
exterior = indices( ...(V(:,1)-0.5).^2 + (V(:,2)-0.5).^2 >= R^2 | ...(V(:,1)-0.5).^2 + (V(:,2)-0.5).^2 <= r^2 );[Omega, N0, N1, N2, outside_region_of_interest] = ...layers_from_handle(size(V,1), F, exterior);subplot_handle = subplot(2,2,2);
cla(subplot_handle);
display_domain(F,V,Omega,N0,N1,N2,outside_region_of_interest);
title('Paritioned domain');[bi_L,bi_U,bi_P,bi_Q,bi_R,bi_S,bi_M] = biharm_factor_system( ...V, ...F, ...bi_bndtype, ...masstype, ...reduction, ...Omega, ...N0, ...N1);rest_V = V;V(exterior,:) = [ V(exterior,1) ...V(exterior,2) ...0.25*( (V(exterior,1)-0.5).^2 + (V(exterior,2)-0.5).^2 <= r^2)];bi_V = zeros(size(V));
bi_V(exterior,:) = V(exterior,:);% Build RHS and use factor system matrix to solve for new positions in each
% coordinate
bi_V = biharm_solve_with_factor( ...bi_L, bi_U, bi_P, bi_Q, bi_R, bi_S, bi_M, ...F, V, Omega, N0, N1, bi_bndtype, reduction,0,rest_V);% Display solution
subplot_handle = subplot(2,2,3);
% clear cubplot just in case
cla(subplot_handle);
display_domain(F,bi_V,Omega,N0,N1,N2,outside_region_of_interest,1);
view(3)
zoom out
zoom(1.5)
title('Biharmonic solution');
axis equal;
axis vis3d;
note: Even though there is not any N1, N2 point in the domain, the algorithm still holds.
complete matlab source code
Mixed Finite Elements for Variational Surface Modeling相关推荐
- Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020
Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264,1280×720 |音频:aac,48000 ...
- Robust Quasistatic Finite Elements and Flesh Simulation
文章来源: Robust Quasistatic Finite Elements and Flesh Simulation 3.Quasistatic Formulation { 公式xt→=v⃗ \ ...
- 经典论文推导: As-Rigid-As-Possible(ARAP) Surface Modeling
论文As-Rigid-As-Possible Surface Modeling 发表于SGP 2007,是变形领域的经典论文,目前引用已经超过1000次.网格变形要求产生视觉合理并且大致满足物理规律的 ...
- 计算机图形学研究软件
转自http://www.dgp.toronto.edu/~rms/links.html Papers & Archives Graphics Conference Paper Link Ar ...
- 图形学领域的关键算法及源码链接
原文链接在这里,谢谢博主的分享. Graphics Conference Paper Link Archive (Ke-Sen Huang) Reproducible Research archive ...
- 图形学领域的关键算法及源代码链接
非常全非常强大的图形学相关的论文和源代码: Computer Graphics Research Software Helping you avoid re-inventing the wheel s ...
- 图形学算法与相应的源码-帮助你重复的造三维图形学以及三维可视化领域的轮子
原文地址:Graphics Software http://www.dgp.toronto.edu/~rms/links.htmlGraphics Software 贴出来贴出来贴出来,防止自己忘掉 ...
- 图形学领域的关键算法及源码链接[转]
原文链接:http://www.dgp.toronto.edu/~rms/links.html http://www.cnblogs.com/yuhuimoon/p/3877724.html Last ...
- 《PCL点云库学习VS2010(X64)》Part 41 图形学领域的关键算法及源码链接
<PCL点云库学习&VS2010(X64)>Part 41 图形学领域的关键算法及源码链接 原文链接: Conference papers Graphics Conference ...
最新文章
- 大学java专业核心课程_计算机应用技术专业核心课程有哪些?
- opengl android 线宽
- C#字符串与unicode互相转换
- python字典按键值排序_Python字典『键 值』排序
- C#获取类名为Internet_Explorer_Server控件的内容
- Rocket - tilelink - Delayer
- smartdns使用指南_Windows10 玩SmartDNS告别污染
- matlab function的使用
- java i18n实例_Java国际化(i18n)格式化日期
- 2014北科计算机原理试题答案,北科_计算机组成原理考题-A卷答案
- 经典面试题(12):关于事件循环,以下代码将输出什么?
- CentOS上使用sysstat做系统监控测试
- C语言之父:我创造了C语言,但这些书帮我表达了出来
- 基于Java技术的汽车维修管理软件的设计与实现
- 微信支付指纹要上传到服务器,华为即将支持微信指纹支付,同意上传至腾讯服务器!...
- IT项目管理之第5章 项目时间管理习题之选择题汇总
- BUGS 小胡的学习日志
- python 0 100被7整除_python: 输出 1~100 之间不能被 7 整除的数,每行输出 10 个数字,要求应用字符串格式化方法美化输出格式。...
- 怎样使PPT自动播放
- flex effect
热门文章
- 标准 C I/O函数
- Python Imaging Library: ImageChops Module(图像通道操作模块)
- String+char+byte+ascii+unicode
- 用智能墨水打造超灵敏传感器 “写”到哪里感知就到哪里...
- mesos 学习笔记-- mesos安装和配置
- 下载Office安装包,提示找不到OfficeLR.cab文件。
- Server.UrlEncode、HttpUtility.UrlDecode的区别
- C# 最小化到系统托盘的实现(一)
- OpenCV-浮雕雕刻效果
- kopernio显示无效程序_daz 无法渲染/没有渲染/渲染不显示/渲染无效?