2014-11-23 13 views
2

는 3D 장면에서 포인트를 생성하고, 런타임에 나는, 예, 삼각형 들어, 그림과 같이 표식의 유형을 변경하려면 : 가능ILNumerics 플롯 마커 유형을 변경하는 방법은 무엇입니까? 나는 임의의 설정

enter image description here

인가? 이것을 어떻게 할 수 있습니까? 또한 나는 약간의 점을 위해 색을 바꿀 필요가있다.

장면 초기화 아래 코드 :

ILArray<float> points = ILMath.tosingle(ILMath.randn(3, 1000)); 
var scene = new ILScene 
{ 
    new ILPlotCube(twoDMode: false) 
    { 
     new ILPoints 
     { 
      Positions = points, 
      Color = null, 
      Size = 2 
     } 
    } 
}; 
+0

확인, 나는 당신의 질문은 이제 분명하다 생각합니다. 불행히도 필자는 ILNumerics에서 플롯을 사용하지 않았으므로 더 이상 당신을 도울 수 없습니다. 희망을 갖고 다른 누군가가 - 행운을 빈다. – BartoszKP

답변

0

마커 (ILMarker)와 '포인트'(ILPoints)는 매우 다른 짐승이다. 마커는 훨씬 유연하게 구성 가능하며 대개 더 멋지게 보이고 렌더하는 데 훨씬 더 비쌉니다. 일반적으로 테두리 (선 모양)와 채워진 영역 (삼각형 모양)으로 구성되며 미리 정의 된 모양이 여러 개 있습니다.

반면에 ILPoints는 빠르고 쉽게 디자인되었습니다. 플로팅 성능을 떨어 뜨리지 않고도 수백만 포인트를 쉽게 만들 수 있습니다. 이것을 마커로 사용하지 마십시오! 그러나 그러한 점은 다음과 같습니다 : 채워진 원. 그게 전부 야. 국경도없고 다른 모양도 없습니다.

그러나 질문을 던지기 위해 1000 점을주고 싶다면 그렇게 할 수 있습니다. 대신 ILLinePlot을 사용하고 마커를 구성하십시오. 마커가 나타나도록 라인 색을 Color.Empty으로 설정할 수 있습니다. 이 점의 각 세트에 최대 마커 (점) 분할 할 개별 표식에 대한 개별 색상을 얻기 위하여

new ILLinePlot(points, lineColor: Color.Empty, markerStyle: MarkerStyle.TriangleDown) 

. 위에서 설명한 스키마를 사용하여 각 점 집합에 대한 ILLinePlot을 만듭니다.

'동적'을 다루는 부분도 간단합니다. 런타임에 마커 유형과 다른 속성을 변경할 수 있습니다. 여기에 현장에 아무 곳이나 클릭하여 빨간색 삼각형 표식과 흰색 사각형 마커와 마커를 toogles 하나의 간단한 예입니다

ilPanel1.Scene.MouseClick += (_s, _a) => { 
    if (_a.DirectionUp) return; 
    var lp = ilPanel1.Scene.First<ILLinePlot>(); 
    if (lp != null) { 
     if (lp.Marker.Style == MarkerStyle.TriangleDown) { 
      lp.Marker.Style = MarkerStyle.Rectangle; 
      lp.Marker.Fill.Color = Color.White; 
     } else { 
      lp.Marker.Style = MarkerStyle.TriangleDown; 
      lp.Marker.Fill.Color = Color.Red; 
     } 
     lp.Configure(); 
     ilPanel1.Refresh(); 
    } 
};