2017-01-27 1 views
0

Matlab의 trimesh 함수에 문제가 있습니다.플롯 후 Matlab의 삼각형 정점을 변경하십시오.

내가해야 할 일은 trimesh 함수를 통해 연장 된 작업 시간을 초과 작업으로 변경하는 것입니다. 저는 사실 변형 된 얼굴을 다시 그려내는 것으로 그 일을 처리 할 수 ​​있습니다. 그것은 예상되는 모양을 나에게줍니다. 이것은 내가 내 모양 플롯하는 방법입니다

hc = trimesh(triangles,candide3(:,1),candide3(:,2),candide3(:,3)); 

여기 candide3을 정점 113x3 이중 행렬이다 삼각형 모든 행은 삼각형 인덱스의 184x3 이중 행렬이된다. 이것은 내가 원하는 것을 정확히 묘사합니다. 그런 다음 얼굴을 변형해야합니다. 삼각형은 항상 동일한 행렬로 유지되며, candide3의 몇 가지 항목은 실시간으로 초과 근무 (초당 약 25 회)로 변경해야합니다. 이 작업을 수행하는 경우 :

candidet = transform(candide3, ...); 
trimesh(triangles,candide3(:,1),candide3(:,2),candide3(:,3)); 

정확히 찾고자하는 변환을 얻습니다. 그리고 괜찮습니다. 그러나 충분하지 않습니다. 나는 trimesh를 초당 25 번 호출하는 대신 새로운 정점을 설정하는 것을 피하고 싶다. 그래서 이 같은 기능을 설정하려고 :

candidet = transform(candide3, ...); 
set(hc,'XData',candidet(:,1),'YData',candidet(:,2),'ZData',candidet(:,3)); 

을하지만 이것은 예상 된 결과를 제공하지 않습니다 : 그것은 심지어 내가 무엇을 찾고 가까이 가지 않는 삼각형 표면의 혼란을 나타내는 그것은 이상하고 무작위로 느껴진다. 그래서 설명서를보고 나는 이것을 시도 :

candidet = transform(candide3, ...); 
hc.XData = candidet(:,1); 
hc.YData = candidet(:,2); 
hc.ZData = candidet(:,3); 

그리고 위의 시도와 같은 말도 안돼 줄.

Max OS X El Capitan에서 Matlab R2016b를 사용하고 있습니다. 누구든지 나를 도와 주려 할 것입니다. 따라서

h = patch('faces',triangles,'vertices',[x(:) y(:) z(:)],'facevertexcdata',c(:),...); 

, 나는 다음을 시도하는 것이 좋습니다 : 당신이 trimesh이 내부적으로 어떻게 작동하는지 체크하면

답변

1

, 당신은 triangles, x는이 같은 patch 명령에 y, z이 인수를 통지합니다

hc = trimesh(triangles,candide3(:,1),candide3(:,2),candide3(:,3)); 
candidet = transform(candide3, ...); 
set(hc,'vertices',candidet);