Two Mode = true로 Plot Cube에 서페이스를 플롯합니다. 마우스 왼쪽 드래그를 사용하여 확대하려고하면 선택 확대/축소 사각형이 서페이스 뒤쪽으로 이동합니다. 따라서 제대로 표시되지 않습니다. 선택 사각형을 표면 위에 놓을 수 있습니까? 또한 마우스를 표면 위로 올려 놓거나 마우스를 클릭하면 X, Y 및 Z 값이 일부 텍스트 상자에 표시됩니까? 고맙습니다.ILNumerics 확대/축소 선택 사각형 및 ILPlotcube에서 플롯 된 데이터에 액세스
답변
표면은 본질적으로 3D 개체입니다. 기본적으로 이들은 ILPlotCube.TwoDMode
을 false
으로 설정하여 사용하도록되어 있습니다. 그러나 선택 사각형 객체에 액세스하여 그에 맞게 수정할 수 있습니다. plotCube.ZoomRectangle.Lines.Positions
으로 시작하여 Z 좌표를 올림하여 카메라에 더 가깝게 이동하십시오.
커서 아래 서페이스의 지점을 달성하는 것은 쉽지 않지만 실행 가능합니다. 표면 타일의 꼭지점 만 명시 적으로 알려줍니다. 마우스가 표면 위에있는 경우 피킹 및 마우스 이벤트를 사용하여 정보를 얻을 수 있습니다.
surface.MouseMove += (_s,_a) => { yourHandler(_a); }
그 후에는 스스로 해결할 수 있습니다. 먼저 실제 3D 표면 좌표를 찾아야합니다. 표면이 회전하지 않았 음을 확신 할 수 있다면 here을 볼 수 있습니다.
이 스레드의 메소드는 표면 X와 Y 좌표를 제공합니다. 그 위치에 해당하는 타일을 더 멀리 (수동으로) 찾을 수 있습니다. 최종적이고 정확한 X, Y, Z 좌표의 경우 barycentric interpolation을 사용하여 타일 (삼각형) 정점을 실제 마우스 위치에 보간해야합니다.
3D 좌표를 표시하려면 ILLabel
을 사용하면됩니다. 당신은 그걸 ILScreenObject
에 넣을 수도 있고 원치 않을 수도 있습니다.
답해 주셔서 감사합니다. plotCube.ZoomRectangle.Lines.Positions의 Z 좌표를 100으로 변경하는 방법에 대한 예를 들어 주시겠습니까? – Ehsan
시도해보십시오. zoomrectangle.Translate (0,0,100); –
신기한 방법 일 수도 있지만이 방법을 사용하여 작업했습니다. ILArray
표면에 2D 모드를 사용하는 이유는 무엇입니까? –