小编Mar*_*utz的帖子

通过血管树的STL模型进行Python-VTK 3D样条回归

我需要创建维管树模型的样条线或折线表示(请参见下文)。

整个血管树

该模型采用STL格式,因此我具有所有顶点的xyz坐标。这些线应该穿过血管网格的中心,因此我认为最好的方法是通过顶点云进行样条回归另外,如果我可以在给定的点(例如,折线的坐标)上获得容器的半径,那将是很好的。

显示为网格的树的一部分

我浏览了这个论坛和VTK网站(假设他们对这种事情有一个简单的实现),但是到目前为止,我还没有找到可以使用的东西。有谁知道可以做到这一点的Python模块或VTK类(我会从Python调用它)?我在此找到的python模块全部用于2D数据。

非常感谢!

编辑:我遇到了一个名为VMTK的库,该库几乎专门处理血管分割,并具有所谓的“ 中心线计算 ”功能。但是,它们通常要求在其末端“切割”船只并定义“源点”。但是,在我的模型中,可以看到端点被“封顶”,这使事情变得更加复杂。如果找到解决方案,请在此处发布

python graphics regression vtk stl-format

5
推荐指数
1
解决办法
1230
查看次数

为依赖类型专门化 std::hash<T>

我已经定义了这个模板类结构:

template<typename T> struct Outer {
    struct Inner { /* ...some stuff... */ };
};
Run Code Online (Sandbox Code Playgroud)

我想将Inner对象放入一个unordered_map(实际上,不是直接将它们而是它们的容器,因此直接在模板参数上指定散列对象的方法unordered_map不是一个好主意),因此我想hash为这些项目专门化类。

这将不起作用,因为编译器无法与Outer<T>::Inner实例化时指定的类型匹配hash

namespace std {
    template<typename T> struct hash<typename Outer<T>::Inner > {
        size_t operator ()( typename Outer<T>::Inner const & obj )
        { /* ...some stuff... */ }
    };
};
Run Code Online (Sandbox Code Playgroud)

有谁知道这个问题的解决方案?

c++ hash templates c++11 stdhash

5
推荐指数
1
解决办法
685
查看次数

GCC:如何导出(选定的方法和)类的 vtable / typeinfo 而不导出整个类?

我在共享库中有这个类:

class Interface {
    int m_ref;
public:
    FOO_EXPORT virtual ~Interface();
    virtual void foo() = 0;

protected:
    void ref() { ++m_ref; }
    bool deref() { return --m_ref; }
};

// cpp file:
Interface::~Interface() {}
Run Code Online (Sandbox Code Playgroud)

哪里FOO_EXPORT__attribute__((visibility=default))GCC 的,我正在使用-fvisibiliy=hidden -fvisibility-inlines-hidden.

但是当我使用Interface另一个库中的 时,我得到了 typeinfo 和 vtable 的未定义引用。

在 MSVC 上,其中FOO_EXPORT) declspec(dllexport/dllimport` 工作正常,因为导出虚拟函数时会导出 vtable。

我当然可以导出整个班级:

类 FOO_EXPORT 接口 {

但这也导出所有内联方法。

是否有一个中间立场,仅导出~Interface()vtable,而没有其他内容?

如果您知道:为什么 GCC 与 MSVC 不兼容?

c++ gcc dllexport

5
推荐指数
0
解决办法
1365
查看次数

给定cbegin(),cend(),为什么没有cfront(),cback(),cfind(),...?

所以,为了允许代码如

auto vect = ...;
auto it = vect.begin(), end = vect.end(); // want const_iterator, getting iterator
Run Code Online (Sandbox Code Playgroud)

挑右超载begin()end(),即使对于非const的容器中,更明确的cbegin()/ cend()添加功能.

为何停在那里?

关联容器具有find()相同问题的方法.序列容器有,front()并且back()同样存在同样的问题.

这些遗漏的显式const版本是遗漏还是设计?

c++ stl c++14

5
推荐指数
1
解决办法
418
查看次数

为什么 `static_pointer_cast` 不适用于 ADL,而是需要显式的 `std::`?

考虑

// https://godbolt.org/z/z5M9b9jzx
#include <memory>
#include <cassert>

struct B {};
struct D : B {};

int main() {
    std::shared_ptr<B> b = std::make_shared<D>();
    auto d = static_pointer_cast<D>(b);
    assert(d);
}
Run Code Online (Sandbox Code Playgroud)

我本来希望static_pointer_cast对解析为的不合格调用std::static_pointer_cast,因为b作为std::shared_ptr,应该引入namespace std使用 ADL。

为什么不呢?我需要std::shared_pointer_cast明确地编写以使其工作。

c++ shared-ptr argument-dependent-lookup unqualified-name static-pointer-cast

5
推荐指数
1
解决办法
79
查看次数

Windows版本识别[C/C++]

如何以编程方式确定当前安装的Windows版本?在区分vista和xp时.

c c++ windows

4
推荐指数
1
解决办法
1284
查看次数

doxygen:如何记录\ enum值的外联线?

确切地说:我知道如何在声明时使用dox枚举,我想把它们排除在外.

我想保持头文件没有doxygen评论; 它们都在.cpp文件中.对于函数,类,typedef等,这不是问题.我也可以这样记录enum自己:

/*!
  \enum MyClass::MyEnum

  Foo Bar Baz

  \value FirstEnumValue <- doesn't work
*/
Run Code Online (Sandbox Code Playgroud)

但我怎么记录的enum呢?

谢谢!

c++ enums doxygen

4
推荐指数
1
解决办法
5085
查看次数

java.util.HashMap类'keySet()方法的时间复杂度是多少?

我正在尝试实现平面扫描算法,为此我需要知道java.util.HashMap类'keySet()方法的时间复杂度.我怀疑它是O(n log n).我对么?

澄清点:我在谈论keySet()方法的时间复杂性; 迭代返回的Set将显然花费O(n)时间.

java algorithm complexity-theory hashmap

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

g ++链接器错误:为std :: hash获取未定义的引用错误

我在我的代码中使用了TR1实现的unordered_map,并且链接器提供了奇怪的错误,我甚至无法破译:

BPCFG.o: In function `std::__detail::_Hash_code_base<DottedRule, std::pair<DottedRule  const, int>, std::_Select1st<std::pair<DottedRule const, int> >, eqDottedRule,  std::hash<DottedRule>, std::__detail::_Mod_range_hashing,  std::__detail::_Default_ranged_hash, false>::_M_hash_code(DottedRule const&) const':  
BPCFG.cpp:  (.text._ZNKSt8__detail15_Hash_code_baseI10DottedRuleSt4pairIKS1_iESt10_Select1stIS4_E12eqDottedRuleSt4hashIS1_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERS3_[std::__detail::_Hash_code_base<DottedRule,   std::pair<DottedRule const, int>, std::_Select1st<std::pair<DottedRule const, int> >,   eqDottedRule, std::hash<DottedRule>, std::__detail::_Mod_range_hashing,  std::__detail::_Default_ranged_hash, false>::_M_hash_code(DottedRule const&) const]+0x23):  undefined reference to `std::hash<DottedRule>::operator()(DottedRule) const'
BPCFG.o: In function `std::__detail::_Hash_code_base<DottedRule, std::pair<DottedRule  const, int>, std::_Select1st<std::pair<DottedRule const, int> >, eqDottedRule,  std::hash<DottedRule>, std::__detail::_Mod_range_hashing,  std::__detail::_Default_ranged_hash,  false>::_M_bucket_index(std::__detail::_Hash_node<std::pair<DottedRule const, int>, false>  const*, unsigned long) const':
BPCFG.cpp:  (.text._ZNKSt8__detail15_Hash_code_baseI10DottedRuleSt4pairIKS1_iESt10_Select1stIS4_E12eqDottedRuleSt4hashIS1_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS4_Lb0EEEm[std::__detail::_Hash_code_base<DottedRule,  std::pair<DottedRule const, int>, std::_Select1st<std::pair<DottedRule const, int> >,  eqDottedRule, std::hash<DottedRule>, std::__detail::_Mod_range_hashing,  std::__detail::_Default_ranged_hash,  false>::_M_bucket_index(std::__detail::_Hash_node<std::pair<DottedRule const, int>, false> …
Run Code Online (Sandbox Code Playgroud)

c++ hash unordered-map linker-errors stdhash

4
推荐指数
1
解决办法
5321
查看次数

将Python标准输入/输出重定向到C#表单应用程序

我道歉,如果这是一个重复的问题,我搜索了一下,找不到任何类似的东西 - 我有一个Python库,通过套接字连接到我的C#应用​​程序,以允许简单的Python脚本(IronPython不是一个选项权利现在有几个原因).我想创建一个Windows Forms控件,它基本上是Python解释器的图形前端,这样用户就可以运行解释器而无需打开单独的控制台窗口.

我附上了一个简单的演示,说明了我到目前为止所尝试的内容,但是我无法让它工作.永远不会调用DataReceived事件处理程序,当我尝试写入标准输入时,解释器中没有任何操作.有没有人对我做错了什么有反馈,或者这是否可能?

public partial class Form1 : Form
{

    Process _pythonProc;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        ProcessStartInfo psi = new ProcessStartInfo()
        {
            FileName = @"C:\Python26\Python.exe",
            CreateNoWindow = true,
            UseShellExecute = false,
            RedirectStandardInput = true,
            RedirectStandardOutput = true,
            RedirectStandardError = true
        };
        _pythonProc = new Process();
        _pythonProc.OutputDataReceived += OutputDataReceived;
        _pythonProc.ErrorDataReceived += ErrorDataReceived;
        _pythonProc.StartInfo = psi;
        _pythonProc.Start();
    }

    private void cmdExecute_Click(object sender, EventArgs e)
    {
        string cmd = textInput.Text;
        _pythonProc.StandardInput.WriteLine(cmd);
        _pythonProc.StandardInput.Flush();
        textInput.Text …
Run Code Online (Sandbox Code Playgroud)

c# python redirect stdin stdout

4
推荐指数
1
解决办法
3664
查看次数