如何在 ILNumerics 中有效地绘制大曲面(例如 1000x1000)?

2024-03-19

这是我使用的代码:

public partial class Form1 : Form
{
    private ILPlotCube plotcube_ = null;
    private ILSurface surface_ = null;

    public Form1()
    {
        InitializeComponent();

        ilPanel1.Driver = RendererTypes.OpenGL;
    }

    private void ilPanel1_Load(object sender, EventArgs e)
    {
        var scene = new ILScene();
        plotcube_ = scene.Add(new ILPlotCube(twoDMode: false));
        plotcube_.MouseDoubleClick += PlotCube_MouseDoubleClick;

        ilPanel1.Scene = scene;
    }

    private void PlotCube_MouseDoubleClick(object sender, ILMouseEventArgs e)
    {
        ResetSurface();
        e.Cancel = true;
        e.Refresh = true;
    }

    private void ResetSurface()
    {
        using (ILScope.Enter())
        {
            ILArray<float> array = ILMath.tosingle(ILSpecialData.sincf(1000, 1000));

            if (surface_ == null)
            {
                surface_ = new ILSurface(0);
                surface_.Fill.Markable = false;
                surface_.Wireframe.Visible = false;
                plotcube_.Add(surface_);
            }

            surface_.UpdateColormapped(array);
            surface_.UseLighting = false;
        }

        plotcube_.Plots.Reset();
    }
}

每次调用 ResetSurface() 都需要几秒钟才能完成:调试模式下约为 6 秒,发布模式下约为 4 秒。

然而,一旦表面更新,旋转和平移操作就非常流畅。

表面越小,更新越快。

是否有更有效的方法来更新表面位置/颜色缓冲区?

注意:在具有双显卡(Intel HD 4000 + GeForce GT 650M)且已激活 nvidia 卡的 Windows 7 笔记本电脑上使用 IlNumerics 3.2.2 Community Edition。


您的代码没有任何明显的错误。一个常见的陷阱是线框颜色。如果将其保留为半透明(默认),则必要的排序会减慢渲染速度。但你已经将其设置为Visible = false.

因此,在我的机器(win 7、T430 笔记本、i7 和类似显卡)上,更新需要

@Edit 预先计算颜色并使用 ILSurface.UpdateRGBA() 将它们提供为离散颜色可能会更快。您必须尝试使用​​分析器来调查瓶颈。另一个选择 - 因为您正在追求简单的 imagesc 风格的绘图 - 是自己构建 imagesc:ILTriangles(-strip) 更苗条,并且可能提供更多选项来提高更新速度。但是,您必须自己进行大量的重新排序/顶点生成/颜色计算。此外,这不会为您提供 ILSurface 的颜色条支持。

@编辑:您可以使用IL图像SCP图 http://ilnumerics.net/imagesc-plots.html类作为 ILSurface 的纤薄替代品。文档在这里:http://ilnumerics.net/imagesc-plots.html http://ilnumerics.net/imagesc-plots.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ILNumerics 中有效地绘制大曲面(例如 1000x1000)? 的相关文章

  • 如何在 R 中绘制更平滑的曲线

    Using R 我画了一个阴影图 如果您看到曲线 它们并不平滑 如何让它们变得光滑 即使是 Excel 也能绘制出更加平滑的曲线 设备功能 Windows 7 屏幕分辨率 1366 x 768 最大 这是情节 以下代码用于绘制绘图 plot
  • 隐藏图中某些图形对象的 MATLAB 图例条目

    MATLAB 图例列出了绘图中的所有内容 包括您在绘图上放置的指南 绕过这个问题的软糖就是要做的 Plot Add legend Add guidelines 然而 MATLAB 将最新的行放在前面 这意味着指南将位于显示的数据之上 丑陋且
  • 使用 matplotlib 绘制亚像素精度散点图?

    注 我在写这个问题时找到了解决方案 我的回答如下 有没有一种简单的方法可以使用 matplotlib 获得圆的亚像素抗锯齿放置 我能够创建以下 gif 但圆圈的运动以整数像素为单位这一事实确实困扰着我 我当然可以渲染一个大图像 plt sa
  • 使用 Javascript(或任何客户端)绘制方程

    有没有可以用来绘制数学方程的库 最好使用 javascript 我也可以使用 Java 或者任何客户端 你看过 弗洛特 吗 http code google com p flot http code google com p flot
  • 使用 pandas 在不同轴上绘制条形图和时间序列图

    我有一个 pandas 数据框 它是从具有以下结构的 csv 文件中读取的 Date Latitude Longitude Brand Pump AKI Trip Miles Total Miles Gallons MPG PPG Tota
  • 如何使用seaborn、python中的彩色气泡图设置数值变量的色调范围?

    我正在尝试使用seaborn创建3D点 x y z 的彩色气泡图 每个坐标都是 0 255 范围内的整数 我希望轴代表 x 和 y 散点气泡的色调和大小代表 z 坐标 代码 import seaborn seaborn set import
  • R Doplot() 坐标定位器()

    我绘制了 2 个 fasta 序列的点图 使用 seqinr 包中的 dotPlot 我需要从图中提取一些值 x y Dotplot 输出是图像 通用点图可能就是这个 例如 我需要局部对齐的开始和结束值 由紫色线表示所以这里有一个例子 l
  • 条形图中的并排条形

    这是基于这个帖子 https stackoverflow com questions 26913954 make barplot in ggplot2 with summary statistics noredirect 1 comment
  • Julia:如何使用 PyPlot 创建不同大小的子图?

    我想创建一个包含多个绘图的图形 不过我希望能够使每个图具有不同的大小 例如 我希望第一个子图的宽度大约是第二个子图的两倍 我希望做这样的事情 using PyPlot a rand 500 900 b rand 500 400 notice
  • R:用不同的颜色将一个 ECDF 绘制在另一个 ECDF 之上

    我有几个累积经验密度函数 我想将它们绘制在彼此之上 以说明两条曲线的差异 正如所指出的在上一个问题中 https i stack imgur com V7fIq png 绘制 ECDF 的函数很简单plot Ecdf 当我阅读精美的手册页时
  • MATLAB 中的抗锯齿线和标记

    您好 我在 MATLAB 中有一张图像 我希望这条线是平滑的 看看从 0 4 到 0 8 的线 这太可怕了 当在图中使用 LineSmoothing on 运算符时 我得到了这个 我在线条上做得很好 但它也使标记变得平滑 而且它们太可怕了
  • 如何在 R 或 MATLAB 中为散点图创建阴影误差条“框”

    我想在 R 或 MATLAB 中创建一个简单的散点图 涉及两个变量 x 和 y 它们有与之相关的错误 epsilon x 和 epsilon y 然而 我不是添加误差线 而是希望在每个 x y 对周围创建一个 阴影框 其中框的高度范围从 y
  • Seaborn:带有背景颜色的图例

    以下问题解释了如何更改图例的背景颜色 matplotlib 图例背景颜色 https stackoverflow com questions 19863368 matplotlib legend background color 但是 如果
  • R - 绘图标签文本的文本格式 - 删除线

    如何使绘图标签中的标签文本的一部分带有删除线 例如 要使 y 轴标签读取为 标签中的 strikethrough 文本 ggplot mpg aes x displ y hwy geom point ylab strikethrough t
  • 如何使用 NumPy/SciPy 进行简单的高斯混合采样和 PDF 绘图?

    我添加三个正态分布以获得一个新的分布 如下所示 如何在python中根据这个分布进行采样 import matplotlib pyplot as plt import scipy stats as ss import numpy as np
  • 如何绘制两个 ggplot 密度分布之间的差异?

    我想使用 ggplot2 来说明两个相似密度分布之间的差异 这是我拥有的数据类型的玩具示例 library ggplot2 Make toy data n sp lt 100000 n dup lt 50000 D lt data fram
  • 使填充的值成为ggplot2中的实际填充

    有没有办法让填充的值 标签 成为填充本身 例如 在堆积条形图中 我有 require ggplot2 big votes movies movies movies votes gt 100000 p ggplot big votes mov
  • 为格子中的每个面板添加不同的独特标签

    很清楚如何在格子中标记面板 https stackoverflow com questions 8508269 how to label panels in lattice using panel text or ltext论据 但是 如果
  • matplotlib:在次要标签下绘制主要刻度标签

    这看起来应该很容易 但我不知道该怎么做 我有一个 X 轴上有时间的图 我想设置两组刻度 小刻度显示一天中的小时 大刻度显示日 月 所以我这样做 set date ticks to something sensible xax ax get
  • 在Python中整齐地绘制PMF

    有没有一个库可以帮助我在 python 中整齐地绘制样本的概率质量函数 如下所示 通过matplotlib pyplot的stem模块 matplotlib pyplot stem args kwargs from matplotlib p

随机推荐