基于MATLAB三角剖分的人脸数据对齐
我有一个函数f(x,y),它有一些对称性,我想画出来。以下是一个例子: 此图可通过以下方式生成:基于MATLAB三角剖分的人脸数据对齐,matlab,plot,triangulation,Matlab,Plot,Triangulation,我有一个函数f(x,y),它有一些对称性,我想画出来。以下是一个例子: 此图可通过以下方式生成: [x,y,z] = 0 0 0.1415 0.1999 0.1999 0.1165 0.2760 0 0.1268 0.3694 0.3694 0.0983 0.4830 0 0.1142 0.5090 0.5090 0.0903 0.5550 0.1871 0.0881 0
[x,y,z] =
0 0 0.1415
0.1999 0.1999 0.1165
0.2760 0 0.1268
0.3694 0.3694 0.0983
0.4830 0 0.1142
0.5090 0.5090 0.0903
0.5550 0.1871 0.0881
0.6189 0.3558 0.0715
0.6197 0.6197 0.0907
0.6399 0 0.1056
0.7071 0.7071 0.1415
0.7169 0.4835 0.0869
0.7215 0.1200 0.0859
0.7304 0.2392 0.0680
0.7643 0 0.1005
0.7926 0.3574 0.0856
0.8090 0.5878 0.1393
0.8581 0.1122 0.0821
0.8634 0.2343 0.0878
0.8794 0 0.0986
0.8910 0.4540 0.1332
0.9511 0.3090 0.1253
0.9877 0.1564 0.1191
1.0000 0 0.1169
t =
6 4 8
12 6 8
8 4 7
4 2 7
8 7 14
14 7 13
3 2 1
5 7 3
3 7 2
17 12 21
6 12 9
9 17 11
12 17 9
10 15 13
10 7 5
13 7 10
21 12 16
16 12 8
8 14 16
18 14 13
15 20 18
13 15 18
24 23 18
18 20 24
21 16 22
23 22 19
19 18 23
14 18 19
19 16 14
19 22 16
trisurf(t,x,y,z)
所以我知道函数有一个关于y=x的反射对称性,然后得到的函数将在所有象限中重复。以下是执行此操作的代码:
allx = [x; x;-x;-x;y; y;-y;-y];
ally = [y;-y; y;-y;x;-x; x;-x];
allz = [z; z; z; z;z; z; z; z];
这些是我要绘制的曲面的新顶点。现在,我如何正确地为这个新曲面生成面
当我使用更精细的网格并添加一些漂亮的灯光时,应该是这样的:
推测性:
因此,您的问题是如何设置trisurf
的第一个参数,即如何在代码中定义扩展的t
。根据定义,这是由剩余参数定义的顶点索引。我没有在这台机器上安装MATLAB,但是如果您安装了:
allx = [x; x;-x;-x];
ally = [y;-y; y;-y];
allz = [z; z; z; z];
s = size(x,1);
t = [t; t + s; t + 2*s; t + 3*s]
试着想想这是否有意义,以及它是否/如何延伸到其他象限。我不完全理解这里发生了什么。我建议扩展您的代码,以便它为
fun
生成值,人们可以进行实验,并更详细地解释(和/或添加到代码中)您所说的“人脸数据”和对齐人脸的意思。@MrE-感谢您的快速回复。我已经编辑了这个问题,希望能让它更清楚我在寻找什么。它很有效,谢谢!是的,它确实扩展了。以下是结果:。