我有一个函数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.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];
这些是我想要绘制的曲面的新顶点。现在我该如何为这个新曲面正确生成面?
当我使用更精细的网格并添加一些漂亮的灯光时,它应该看起来像这样:
答案 0 :(得分:2)
投机:
所以你的问题是关于如何设置trisurf
的第一个参数,即如何在代码中定义扩展的t
。根据{{3}},这是由剩余参数定义的顶点的索引。我没有在这台机器上安装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]
试着想一想这是否有意义,以及它是否/如何延伸到其他象限。