如何与ILnumerics中的标记进行交互?

时间:2013-11-04 21:25:49

标签: c# plot ilnumerics

我使用ILNumerics数学库为.Net创建了一个简单的线图。我想与绘制的数据进行交互。应该可以选择绘制数据的子集并对其执行不同的数学运算。我想使用标记进行选择,但我无法检索位置的正确值。我想我必须以某种方式改变积分......也许有人可以帮助我?

以下是代码的简化版本:

    private void ilPanel1_Load(object sender, EventArgs e)
    {
        var scene = new ILScene();
        //create 2D data
        ILArray<float> line1 = new float[,] { 
                    {0.0f,  1.0f, 2.0f }, 
                    {0.0f,  2.0f , 3.0f} };


        var linePlot1 = new ILLinePlot(line1.T,
            lineColor: Color.Blue,
            lineWidth: 3,
            markerStyle: MarkerStyle.Dot);

        var plot = scene.Add(new ILPlotCube());
        plot.Add(linePlot1);

        linePlot1.Marker.MouseClick += Marker_MouseClick;
        ilPanel1.Scene = scene;
    }

点击其中一个标记后,将调用Marker_MouseClick事件。

    void Marker_MouseClick(object sender, ILMouseEventArgs e)
    {
        ILGroup group = e.Target.Parent;
        ILMarker marker = group.First<ILMarker>();

        var posx = e.LocationF.X;
        var posY = e.LocationF.Y;
    }

但是这些位置并不是指我轴的缩放。 有没有一种简单的方法将LocationF值转换为我的轴的缩放? 或者是否有其他方法可以在触发事件后获取标记的x和y值?

1 个答案:

答案 0 :(得分:0)

鼠标事件参数为您提供LocationF属性。它反映了视口(2D)坐标系中的鼠标位置。 ILNumerics中的视口由ILCamera建立。因此,我们将鼠标位置放在父摄像机节点的坐标系中。

为了将鼠标位置转换为绘图立方体的坐标系,必须累积从摄像机到绘图立方体节点的变换矩阵。生成的变换矩阵将任何鼠标位置转换为绘图立方体坐标系。

SO上有一个类似的问题:How to find the 3D coordinates of a surface from the click location of the mouse on the ILNumerics surface plots? 鼠标点击位置的三维坐标/ 17681163#17681163