我有一个点的集合描述了应该是大致球形的形状的表面,我需要一种方法来确定是否有任何其他给定点位于这个形状内.我以前将形状近似为一个精确的球体,但事实证明这太不准确了,我需要一种更精确的方法.简单和速度有利于完全准确,良好的近似就足够了.
我遇到了将点云转换为3d网格的技术,但我发现的大多数事情都非常复杂,我正在寻找尽可能简单的东西.
有任何想法吗?
2017/06/13编辑:我尝试按照建议使用提升,但在花了超过3天试图让它进行编译和链接,并且失败后,我认为愚蠢的痛苦方式可能是最快且不那么痛苦的.. ..所以现在我的代码只是保存了一堆巨大的文本文件(拆分数组和文件中数字的复杂/虚部),然后C++读取.优雅......不......有效......是的.
我有一些科学代码,目前用Python编写,在循环中通过数字3d集成步骤减慢速度.为了克服这个问题,我在C++中重写了这一特定步骤.(Cython等不是一个选项).
简而言之:我希望尽可能方便,轻松地将几个非常大的复数数组从python代码传输到C++集成器.我可以使用文本或二进制文件手动和痛苦地做到这一点 - 但在我开始之前,我想知道我是否有更好的选择?
我正在使用Visual Studio for C++和anaconda for python(不是我的选择!)
是否有任何文件格式或方法可以快速方便地从python中保存一组复数,然后在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打印损坏的版本.谢谢大家,没有你的帮助,我不会这样做!