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:

LB=12<v,v>Ω0+<λ,Δu−v>Ω0=12<v,v>Ω0−<λ,v>Ω0+<λ,Δu>Ω0=12<v,v>Ω0−<λ,v>Ω0+<λ,∂u∂n>∂Ω0−<∇λ,∇u>Ω0

\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:

12<v,v>Ω0−<λ,v>Ω0+<λ,∂u∂n>∂Ω−<∇λ,∇u>Ω0+<μ,uf−u>Ωf=12∑j∈I<viφi,vjφj>Ω0+12∑j∈I<vjφj,viφi>Ω0−∑j∈I<λiφi,vjφj>Ω0−∑j∈I<λjφj,viφi>Ω0+∑j∈I<λiφi,∂uj∂nφj>∂Ω0+∑j∈I<λjφj,∂ui∂nφi>∂Ω0−∑j∈I<λi∇φi,uj∇φj>Ω0−∑j∈I<λj∇φj,ui∇φi>Ω0+∑j∈I<μiφi,(ufj−uj)φj>Ωf+∑j∈I<μjφj,(ufi−ui)φi>Ωf=∑j∈Ivivj<φi,φj>Ω0−∑j∈Iλivj<φi,φj>Ω0−∑j∈Iλjvi<φj,φi>Ω0+∑j∈Iλi∂uj∂n<φi,φj>∂Ω0+∑j∈Iλj∂ui∂n<φj,φi>∂Ω0−∑j∈Iλiuj<∇φi,∇φj>Ω0−∑j∈Iλjui<∇φj,∇φi>Ω0+∑j∈Iμi(ufj−uj)<φi,φj>Ωf+∑j∈Iμj(ufi−ui)<φj,φi>Ωf

\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相关推荐

  1. Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020

    Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264,1280×720 |音频:aac,48000 ...

  2. Robust Quasistatic Finite Elements and Flesh Simulation

    文章来源: Robust Quasistatic Finite Elements and Flesh Simulation 3.Quasistatic Formulation { 公式xt→=v⃗ \ ...

  3. 经典论文推导: As-Rigid-As-Possible(ARAP) Surface Modeling

    论文As-Rigid-As-Possible Surface Modeling 发表于SGP 2007,是变形领域的经典论文,目前引用已经超过1000次.网格变形要求产生视觉合理并且大致满足物理规律的 ...

  4. 计算机图形学研究软件

    转自http://www.dgp.toronto.edu/~rms/links.html Papers & Archives Graphics Conference Paper Link Ar ...

  5. 图形学领域的关键算法及源码链接

    原文链接在这里,谢谢博主的分享. Graphics Conference Paper Link Archive (Ke-Sen Huang) Reproducible Research archive ...

  6. 图形学领域的关键算法及源代码链接

    非常全非常强大的图形学相关的论文和源代码: Computer Graphics Research Software Helping you avoid re-inventing the wheel s ...

  7. 图形学算法与相应的源码-帮助你重复的造三维图形学以及三维可视化领域的轮子

    原文地址:Graphics Software  http://www.dgp.toronto.edu/~rms/links.htmlGraphics Software 贴出来贴出来贴出来,防止自己忘掉 ...

  8. 图形学领域的关键算法及源码链接[转]

    原文链接:http://www.dgp.toronto.edu/~rms/links.html http://www.cnblogs.com/yuhuimoon/p/3877724.html Last ...

  9. 《PCL点云库学习VS2010(X64)》Part 41 图形学领域的关键算法及源码链接

    <PCL点云库学习&VS2010(X64)>Part 41 图形学领域的关键算法及源码链接 原文链接: Conference papers Graphics Conference ...

最新文章

  1. 大学java专业核心课程_计算机应用技术专业核心课程有哪些?
  2. opengl android 线宽
  3. C#字符串与unicode互相转换
  4. python字典按键值排序_Python字典『键 值』排序
  5. C#获取类名为Internet_Explorer_Server控件的内容
  6. Rocket - tilelink - Delayer
  7. smartdns使用指南_Windows10 玩SmartDNS告别污染
  8. matlab function的使用
  9. java i18n实例_Java国际化(i18n)格式化日期
  10. 2014北科计算机原理试题答案,北科_计算机组成原理考题-A卷答案
  11. 经典面试题(12):关于事件循环,以下代码将输出什么?
  12. CentOS上使用sysstat做系统监控测试
  13. C语言之父:我创造了C语言,但这些书帮我表达了出来
  14. 基于Java技术的汽车维修管理软件的设计与实现
  15. 微信支付指纹要上传到服务器,华为即将支持微信指纹支付,同意上传至腾讯服务器!...
  16. IT项目管理之第5章 项目时间管理习题之选择题汇总
  17. BUGS 小胡的学习日志
  18. python 0 100被7整除_python: 输出 1~100 之间不能被 7 整除的数,每行输出 10 个数字,要求应用字符串格式化方法美化输出格式。...
  19. 怎样使PPT自动播放
  20. flex effect

热门文章

  1. 标准 C I/O函数
  2. Python Imaging Library: ImageChops Module(图像通道操作模块)
  3. String+char+byte+ascii+unicode
  4. 用智能墨水打造超灵敏传感器 “写”到哪里感知就到哪里...
  5. mesos 学习笔记-- mesos安装和配置
  6. 下载Office安装包,提示找不到OfficeLR.cab文件。
  7. Server.UrlEncode、HttpUtility.UrlDecode的区别
  8. C# 最小化到系统托盘的实现(一)
  9. OpenCV-浮雕雕刻效果
  10. kopernio显示无效程序_daz 无法渲染/没有渲染/渲染不显示/渲染无效?