小编Ben*_*Ben的帖子

如何测试点是否位于由点云定义的表面的3d形状内?

我有一个点的集合描述了应该是大致球形的形状的表面,我需要一种方法来确定是否有任何其他给定点位于这个形状内.我以前将形状近似为一个精确的球体,但事实证明这太不准确了,我需要一种更精确的方法.简单和速度有利于完全准确,良好的近似就足够了.

我遇到了将点云转换为3d网格的技术,但我发现的大多数事情都非常复杂,我正在寻找尽可能简单的东西.

有任何想法吗?

c algorithm computational-geometry

11
推荐指数
2
解决办法
3034
查看次数

将大型复杂数组从Python传递到C++ - 我最好的选择是什么?

2017/06/13编辑:我尝试按照建议使用提升,但在花了超过3天试图让它进行编译和链接,并且失败后,我认为愚蠢的痛苦方式可能是最快且不那么痛苦的.. ..所以现在我的代码只是保存了一堆巨大的文本文件(拆分数组和文件中数字的复杂/虚部),然后C++读取.优雅......不......有效......是的.


我有一些科学代码,目前用Python编写,在循环中通过数字3d集成步骤减慢速度.为了克服这个问题,我在C++中重写了这一特定步骤.(Cython等不是一个选项).

简而言之:我希望尽可能方便,轻松地将几个非常大的复数数组从python代码传输到C++集成器.我可以使用文本或二进制文件手动和痛苦地做到这一点 - 但在我开始之前,我想知道我是否有更好的选择?

我正在使用Visual Studio for C++和anaconda for python(不是我的选择!)

是否有任何文件格式或方法可以快速方便地从python中保存一组复数,然后在C++中重新创建它?

非常感谢,本

c++ python arrays visual-c++

2
推荐指数
2
解决办法
2368
查看次数

这个变量的值在我的C代码中是如何变化的?

我在C中遇到过一个我以前从未遇到的奇怪问题.我已将其缩小到以下非常简单的片段.

变量是全局变量和类型:

    int cpd;
    int nPart;
Run Code Online (Sandbox Code Playgroud)

这里是相关的代码片段,我逐渐将其删除到产生问题所需的最低限度:

    printf("\ncpd1: %d\n",cpd);

    int p;
    for(p=1;p<=nPart;p++)
    {
        printf("\ncpd2: %d\n",cpd); exit(0);
    }
Run Code Online (Sandbox Code Playgroud)

...我得到的输出是这样的:

cpd1: 17

cpd2: 0
Run Code Online (Sandbox Code Playgroud)

这怎么可能?!cpd还没有被重新分配,没有调用任何函数......但它改变了吗?怎么样?!?!

这已经让我慢慢疯了一段时间了......所以任何想法?

谢谢你的时间,本.

编辑:当我从gcc的makefile参数中删除-02时,打印语句告诉我cpd = 0!

编辑:好的,我刚刚发现一个全局声明的变量,初始化为4.0,然后从未修改过的变量现在显然是1.51086e-311 ...某处出了点问题......

编辑:已解决!:我有一个1000大小的数组,需要超过4000,并试图写这个是破坏它周围的记忆.事实是,这些数组不会在那些打印语句附近的任何地方访问,但它可以在相同的函数中访问,但更早(大函数!).打印语句之间的奇怪差异必须是使用-O2的一些奇怪的假象,因为没有-O2,两个打印的cpd打印损坏的版本.谢谢大家,没有你的帮助,我不会这样做!

c

1
推荐指数
2
解决办法
7287
查看次数

标签 统计

c ×2

algorithm ×1

arrays ×1

c++ ×1

computational-geometry ×1

python ×1

visual-c++ ×1