Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 重新审视Matlab中的人脸着色_Function_Matlab_Patch - Fatal编程技术网

Function 重新审视Matlab中的人脸着色

Function 重新审视Matlab中的人脸着色,function,matlab,patch,Function,Matlab,Patch,使用Mathematica我能够创建 现在我想切换到Matlab——我才刚刚开始学习。我能够用FL.Vertexs和FL.faces矩阵以及面片函数创建三角剖分,看起来像这样 faces=FV.faces; facecolor = [.7 .7 .7]; patch('faces',faces,'vertices',FV.vertices,... 'facecolor',facecolor,'facealpha',0.8,'edgecolor',[.8.8.8]); camlight('he

使用Mathematica我能够创建

现在我想切换到Matlab——我才刚刚开始学习。我能够用FL.Vertexs和FL.faces矩阵以及面片函数创建三角剖分,看起来像这样

faces=FV.faces; 
facecolor = [.7 .7 .7]; 
patch('faces',faces,'vertices',FV.vertices,...
'facecolor',facecolor,'facealpha',0.8,'edgecolor',[.8.8.8]);
camlight('headlight','infinite'); 
daspect([1 1 1]); axis vis3d; axis off 
material dull;
它会产生一种迟钝的感觉:

现在,我有一个函数J,它取矩阵FL.vertices并返回一个正值矩阵。我想根据顶点上J的值为面着色。可能沿面进行插值。现在,边缘可以像现在一样,待以后处理。阅读文档后,我不清楚如何完成这项任务。我是否需要手动查找J的最小值和最大值?或者Matlab可以自动完成吗?现在可以使用Matlab的一个预设着色方案,类似“温度图”的东西就可以了。我应该在哪一点调用我的函数J?它应该如何与patch命令一起使用?我仔细阅读了之前对一个类似问题的回答,但我仍然不知道如何处理我的案件。任何有帮助的建议都将不胜感激

附言。
好啊我想我做的很简单

FV.Cdata=sphere_jacobian(FV.vertices,1,1,0,1);
figure
Hp = patch('faces',FV.faces,'vertices',FV.vertices,...
'FaceVertexCData',FV.Cdata,'facecolor','interp','edgecolor',[.8 .8 .8]); 
FV.Cdata=sphere_jacobian(FV.vertices,1,1,0,1);
figure
Hp = patch('faces',FV.faces,'vertices',FV.vertices,...
'FaceVertexCData',FV.Cdata,'facecolor','interp','edgecolor',[.8 .8 .8]); 

但我不确定是否自动计算并插值了最小值和最大值。

这是我认为海报给出的答案,我将把它放在这里,这样问题就不会一直悬而未决了


嗯。我想我做的很简单

FV.Cdata=sphere_jacobian(FV.vertices,1,1,0,1);
figure
Hp = patch('faces',FV.faces,'vertices',FV.vertices,...
'FaceVertexCData',FV.Cdata,'facecolor','interp','edgecolor',[.8 .8 .8]); 
FV.Cdata=sphere_jacobian(FV.vertices,1,1,0,1);
figure
Hp = patch('faces',FV.faces,'vertices',FV.vertices,...
'FaceVertexCData',FV.Cdata,'facecolor','interp','edgecolor',[.8 .8 .8]); 
但我不确定min和max是否已自动计算和插值


是的

colormap(hsv(3200)); 
并规范了我的功能:

jac = sphere_jacobian(FV.vertices,m); 
minj = min(jac);
maxj = max(jac);
jac1 = (jac-minj*ones(size(jac)))/(maxj-minj);FV.Cdata=jac1; 
figure Hp = patch('faces',FV.faces,'vertices',FV.vertices,... 'FaceVertexCData',FV.Cdata,'facecolor','interp','edgecolor',[.8 .8 .8]);

可以看到结果。

正常。我想我是用simplehave做的你有没有试过更改
颜色贴图
?我会试着玩颜色贴图。我想我真的需要对我的着色函数做一些缩放。我还想在这个彩色球体上绘制函数的轮廓。在任何地方都找不到正确的示例。您能否更清楚地了解您到底想问什么?或者,如果你已经找到了解决方案,请将其作为一个答案发布。Inded,我想我喜欢这个答案:我做了彩色地图(hsv(3200));并归一化了我的函数:jac=sphere_jacobian(FV.顶点,m);minj=min(jac);maxj=max(jac);jac1=(jac minj*one(size(jac))/(maxj minj);FV.Cdata=jac1;图Hp=patch('faces',FV.faces,'vertexts',FV.vertexcdata,'facecolor','interp','edgecolor',[8.8.8]);结果可见一斑。不太理想,但也不太坏。