2013-07-03 5 views
3

삼각형을 그리는 3D 표면의 플롯에 적용 할 때 MATLAB R2011b의 데이터 커서에서 비정상적인 동작이 발생합니다. 특정 점을 클릭하면 완전히 다른 점이 대신 선택됩니다. 실린더와 예 :MATLAB R2011b의 삼각형 3D 표면에 대한 불규칙한 데이터 커서 동작

[r, phi, h] = meshgrid(1, 0:pi/10:2*pi, 0:0.05:1); 
x = r.*cos(phi); 
y = r.*sin(phi); 
z = h; 
xyz = [x(:) y(:) z(:)]; 
tri = delaunay(xyz); 
trimesh(tri, xyz(:,1), xyz(:,2), xyz(:,3), ... 
     'LineStyle', 'none', 'Marker', '.', 'MarkerSize', 30) 
view(-37, 28) 

그럼 데이터 커서 모드를 사용하고 열 앞에 하나의 최상위 점을 선택하려고. 설치 과정에서 MATLAB은 커서 아래의 점을 선택하지 않고 무작위로 선택한 점을 선택합니다.

이 버그입니까? 아니면 내가 잘못하고 있습니까?

답변

1

이 문제에 대한 해결책을 the 'HitTest' property을 통해 데이터 커서로 선택할 수있는 데이터를 정의 할 수 있습니다. 따라서 제공된 예제에서 마커 만 선택 가능하게하려는 경우 해결 방법은 'HitTest'를 'off'로 설정 한 다음 'scatter3'을 사용하여 마커를 그립니다.

[r, phi, h] = meshgrid(1, 0:pi/10:2*pi, 0:0.05:1); 
x = r.*cos(phi); 
y = r.*sin(phi); 
z = h; 
xyz = [x(:) y(:) z(:)]; 
tri = delaunay(xyz); 
figure 
hold on 
trimesh(tri, xyz(:,1), xyz(:,2), xyz(:,3), ... 
     'LineStyle', 'none', 'Marker', 'none', 'HitTest', 'off') 
scatter3(xyz(:,1), xyz(:,2), xyz(:,3)) 
view(-37, 28) 

삼각형의 그려지는 점이 궁금하다면 : 뒤쪽에있는 점들을 가려서 점 구름을 시각화하는 데 도움이됩니다. 'trimesh'호출은 여전히 ​​얼굴을 흰색으로 그리기 때문에이 작업을 수행합니다.

+0

아, HitTest 속성은 매우 유용합니다. –

1

메쉬에 너무 많은 선이 있기 때문에 생각합니다. 'linestyle', 'none'을 제거하고 메쉬의 작은 부분을 플롯하면 (예 : [r, phi, h] = meshgrid(1, 0:pi/10:2*pi, 0:0.5:1); as your first line을 사용하면 실린더를 통과하는 것을 볼 수 있습니다.) 데이터 커서 모드는 클릭 한 선상의 가장 가까운 정점으로 이동합니다 따라서 얼굴 아래에 숨겨진 선을 클릭하면 눈에 보이는 점만이 아니라 그 선의 점으로 점프 할 수 있습니다.이 동작을 변경하는 쉬운 방법이 있는지 확실하지 않습니다.

+0

이 힌트를 보내 주셔서 감사합니다. 아래를 참조하십시오. –

0

나를위한 해결책은 데이터 커서 개체의 "SnapToDataVertex"속성을 "off"로 설정하는 것이 었습니다. 패치 개체를 클릭

dc = datacursormode; 
set(dc,'SnapToDataVertex','off') 

기본값으로 설정

"에는,"얼굴이 폐색 된 경우에도, 시선 가까운 정점으로 이동 datacursor됩니다. 꺼지면 datacursor가 가장 가까운 얼굴과 교차하는 지점으로 이동합니다. 이는 일반적으로 원하는 것입니다.