ILNumerics 在特定位置绘制平面

2023-12-28

我目前正在使用 ILNumerics API,并开始在立方体中绘制几个点。 然后我通过这些点计算了一个回归平面。 现在我想在相同的场景图中绘制平面,但大小仅与点云相同。

我得到了平面的参数(a,b,c):f(x,y) = a*x + b*y + c; 我知道只有 z 对于绘制平面很有趣,但我不知道如何将正确的坐标传递到场景,以便平面大小与点的最大和最小面积大致相同。

你们能给我一个绘制平面的简单示例以及如何正确设置该平面的边界的一些建议吗?

这是我到目前为止得到的:

        private void ilPanel1_Load(object sender, EventArgs e)
    {
           // get the X and Y bounds and calculate Z with parameters

           // plot it!
            var scene = new ILScene {
              new ILPlotCube(twoDMode: false) {
                new ILSurface( ??? ) {
                }
              }
            };

           // view angle etc
            scene.First<ILPlotCube>().Rotation = Matrix4.Rotation(
            new Vector3(1f, 0.23f, 1), 0.7f);

        ilPanel1.Scene = scene; 
    }

我希望有人能帮助我... 提前致谢 !!!


您可以采用plotcube.Plots 组的Limits 并从中导出边界框的坐标。这将为您提供平面的最小和最大 x 和 y 坐标。使用它们通过评估平面方程来获得相应的 z 值。

获得平面的 x、y 和 z 后,将它们与 ILSurface 一起使用来绘制平面。

如果您需要更多帮助,我可以尝试添加一个示例。

@Edit:下面的示例通过 3 个任意点绘制一个平面。平面方向和位置是通过平面函数 zEval 计算的。它的系数 a、b、c 是根据 3 个(具体)点计算的。您必须在这里计算自己的方程系数。

平面是用曲面来实现的。人们不妨采用“P”中计算出的 4 个坐标,并使用 ILTriangleFan 和 ILLineStrip 来创建平面和边界。但表面已经带有填充和线框,因此我们将此作为快速解决方案。

private void ilPanel1_Load(object sender, EventArgs e) {
    // 3 arbitrary points 
    float[,] A = new float[3, 3] { 
        { 1.0f, 2.0f, 3.0f }, 
        { 2.0f, 2.0f, 4.0f }, 
        { 2.0f, -2.0f, 2.0f } 
    };
    // construct a new plotcube and plot the points
    var scene = new ILScene {
        new ILPlotCube(twoDMode: false) {
            new ILPoints {
                Positions = A,
                Size = 4,
            }
        }
    };
    // Plane equation: this is derived from the concrete example points. In your 
    // real world app you will have to adopt the weights a,b and c to your points. 
    Func<float, float, float> zEval = (x, y) => {
        float a = 1, b = 0.5f, c = 1;
        return a * x + b * y + c; 
    }; 
    // find bounding box of the plot contents 
    scene.Configure(); 
    var limits = scene.First<ILPlotCube>().Plots.Limits; 

    // Construct the surface / plane to draw
    // The 'plane' will be a surface constructed from a 2x2 mesh only. 
    // The x/y coordinates of the corners / grid points of the surface are taken from 
    // the limits of the plots /points. The corresponding Z coordinates are computed 
    // by the zEval function. So we give the ILSurface constructor not only Z coordinates 
    // as 2x2 matrix - but an Z,X,Y Array of size 2x2x3
    ILArray<float> P = ILMath.zeros<float>(2, 2, 3);
    Vector3 min = limits.Min, max = limits.Max; 
    P[":;:;1"] = new float[,] { { min.X, min.X }, { max.X, max.X } };
    P[":;:;2"] = new float[,] { { max.Y, min.Y }, { max.Y, min.Y } };
    P[":;:;0"] = new float[,] { 
        { zEval(min.X, max.Y) , zEval(min.X, min.Y) }, 
        { zEval(max.X, max.Y) , zEval(max.X, min.Y) }, 
    };
    // create the surface, make it semitransparent and modify the colormap
    scene.First<ILPlotCube>().Add(new ILSurface(P) {
        Alpha = 0.6f, 
        Colormap = Colormaps.Prism
    }); 
    // give the scene to the panel
    ilPanel1.Scene = scene;
}

这将创建一个与此类似的图像:

@Edit2:您问,如何在添加表面时禁用绘图立方体的自动缩放:

// before adding the surface: 
var plotCube = scene.First<ILPlotCube>(); 
plotCube.AutoScaleOnAdd = false; 

或者,您可以手动设置多维数据集的限制:

plotCube.Limits.Set(min,max); 

您可能还想禁用一些鼠标交互,因为它们将允许用户以类似(不需要的?)方式重新缩放立方体:

plotCube.AllowZoom = false;    // disables the mouse wheel zoom
plotCube.MouseDoubleClick += (_,arg) => {
        arg.Cancel = true;     // disable the double click - resetting for the plot cube
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ILNumerics 在特定位置绘制平面 的相关文章

  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 当我使用 OpenSSL1.1.0g 根据固定的 p 和 g 值创建 Diffie Hellman 密钥协议密钥时,应该执行哪些检查?

    您好 我尝试通过这段代码使用修复 p 和 g 参数来制作 Diffie Hellman Keysanswer https stackoverflow com a 54538811 4706711 include

随机推荐

  • DisplayObject 的可见属性

    例如 我有一个影片剪辑的层次结构 mc1 是 mc 的子级 mc2 是 mc1 的子级 结果当我设置时 mc1 visible false mc2 visible 保持不变 这应该发生吗 有没有测试 mc2 可见性的快捷方式 可以玩的代码
  • vagrant 连接虚拟机失败

    我正在运行 vagrant up 命令来连接到虚拟机 在运行此命令时出现下面提到的错误 我尝试了几个步骤以在 GUI 模式打开的情况下运行它 但是 GUI 模式 本身并没有打开任何东西 在单独的命令提示符中运行此命令时 它会自行打开和关闭
  • Xamarin 表单从文本文件读取结果为空

    我的项目文件资源管理器中有 data txt 文件 我想从这个文本文件中读取数据 但每次尝试时 结果都是空 程序崩溃 我写的代码是 public MapPage var assembly typeof MapPage GetTypeInfo
  • 通过循环生成[0, 1001]中不重复随机数的随机数

    我需要在plpgsql中生成一个不重复的随机数的随机数 非重复数应在 1 1001 范围内 但是 该代码生成的数字超过 1001 directed2number trunc Random 7 1 counter directed2numbe
  • 语法错误或访问冲突:1055 group by 中的表达式 #17

    我尝试使用 laravel 5 3 中的组进行查询 我发现 SQLSTATE 42000 语法错误或访问冲突 1055 SELECT 列表的表达式 17 不在 GROUP BY 子句中 并且包含非聚合列 testtravel country
  • 在哪里可以找到有关转义字符(例如“\”)的文档

    我想更好地了解 R 中的转义字符序列 我尝试过搜索类似的内容 但是 它逃脱了自身并且 我想避免这种行为cat 例如 cat Versus cat 您正在寻找的帮助页面是 Quotes 大写Q 字符串文字语法也有描述 恕我直言 不太清楚 ht
  • 在 Python/Numpy/Pandas 中查找连续值块的开始和结束

    我想在 numpy 数组或最好是 pandas DataFrame 中找到相同值块的开始和停止索引 沿着 2D 数组的列的块 以及沿着 n 维数组的最快变化的索引 我只在单个维度上查找块 并且不想在不同的行上聚合 nan 从这个问题开始 在
  • iOS 9 中的 Spotlight 扩展

    我已经下载了 Xcode 7 beta 并在那里发现了一种新型扩展 2015 年 WWDC 上对此只字未提 它被称为聚光灯延伸 When 聚光灯扩展在 iOS 9 中被称为以及它的用途是什么 From iOS 9 0 https devel
  • React Native 首次加载时图像闪烁

    我正在尝试构建一个带有动画按钮的 ReactNative 应用程序 问题是 该动画在应用程序第一次启动后无法正常工作 有一些白色的闪烁 但在动画第一次出现错误后 一切都按预期进行 我已经尝试过多种方式预加载图像 但没有成功 这是我的最小工作
  • 无法安装适用于 AMD 处理器的 Android 仿真器管理程序驱动程序(安装程序)

    如上所述通过 GUI 禁用 HyperV Disable WindowsOptionalFeature Online FeatureName Microsoft Hyper V 然后通过上面的 powershell 进行确认 然而 当运行
  • 使用 scipy/numpy 在 Python 中解析字母数字 CSV 的最终方法

    我一直在尝试找到一种良好且灵活的方法来在 Python 中解析 CSV 文件 但似乎没有一个标准选项符合要求 我很想自己写一个 但我认为 numpy scipy 和 csv 模块中存在的某种组合可以满足我的需要 所以我不想重新发明轮子 我想
  • 在 .js 文件中包含 .js 文件 [重复]

    这个问题在这里已经有答案了 我想知道是否可以包括 js文件在另一个文件中 js file 我想要这样做的原因是为了将客户端包含的内容保持在最低限度 我有一些 js已经编写了客户端所需功能的文件 客户将有一个 html 文件 他 她用 js文
  • 如何获取路径相关类型的类标签

    我有一个抽象的路径相关类型 我需要对其进行 ClassTag 有没有比手动提取每个具体派生类的隐式更好的方法 trait Foo type A ClassTag Need the ClassTag of A later val ctA Cl
  • 使用 C++ 中的 scanLine() 方法存储 QImage 的所有像素

    我正在尝试使用修改图像Qt与scanLine http doc qt io qt 4 8 qimage html scanLine方法 此方法返回指向给定行数据的指针 我创立了如何读取行here https stackoverflow co
  • 动态更改日志文件的文件路径.NET Core + NLog

    在我的 NET Core 应用程序中 我使用一些环境 并且我想为每个环境使用不同的路径来记录文件 例如 Development c logs Staging d apps logs 对于每个环境我都有配置部分appsettings env
  • Windows 7:超出 C++ std::this_thread::sleep_for

    我们的代码是用 C 11 VS2012 Win 7 64bit 编写的 C 库提供了sleep for我们使用的函数 我们观察到 C sleep for有时会出现较大的超调 换句话说 我们请求睡眠 15 毫秒 但睡眠结果是例如 15 毫秒
  • YouTube API:如何获取 liveChatId?

    文档说 liveChatId 参数指定将返回其消息的聊天 ID 与广播关联的实时聊天 ID 在 liveBroadcast 资源的 snippet liveChatId 属性中返回 但是 当使用 API Explorer 和 youtube
  • 从特定列 scala Spark 数据帧获取最小值和最大值

    我想从我的数据框中访问特定列的最小值和最大值 但我没有列的标题 只有它的编号 所以我应该使用 scala 吗 也许是这样的 val q nextInt ncol we pick a random value for a column num
  • Javascript:如何正确扩展类

    在互联网上搜索时 我总是遇到这种 Javascript 类扩展方法 function extend Child Parent var F function F prototype Parent prototype Child prototy
  • ILNumerics 在特定位置绘制平面

    我目前正在使用 ILNumerics API 并开始在立方体中绘制几个点 然后我通过这些点计算了一个回归平面 现在我想在相同的场景图中绘制平面 但大小仅与点云相同 我得到了平面的参数 a b c f x y a x b y c 我知道只有