我试图通过非指针追逐优化一段代码,就像我现在一样.我想创建一个常量偏移量来添加到存储指针以获取下一个数据条目,请参阅下面的代码.但是,数据位于包含不同数据类型的类或结构中.
所以我在下面的代码片段中得到了正确的行为,即输出为1,2,3.
#include <iostream>
#include <vector>
// knows nothing about foo
class Readfoo
{
private:
int offset;
double* pdouble;
public:
void SetPoint(double* apdouble, int aoffset)
{
offset = aoffset;
pdouble = apdouble;
};
const double& printfoo(int aidouble) const
{
return *(pdouble + offset*aidouble);
};
};
// knows nothing about readFoo
struct foo
{
int a[5];
double b[10];
};
int main()
{
// populate some data (choose b [2] or other random entry.).
std::vector<foo> bar(10);
bar[0].b[2] = 1;
bar[1].b[2] = 2; …Run Code Online (Sandbox Code Playgroud) 我最近将我的系统更新到了 Ubunutu 20.04,我的 python 现在是 3.8。从那以后我所有的import vtk线路都不起作用,
ModuleNotFoundError: No module named 'vtk'
Run Code Online (Sandbox Code Playgroud)
我已经尝试过apt-get python-vtk,pip3 install vtk几乎所有的标准终端安装命令。毫无疑问,他们都无法找到包裹。我一直在网上寻找解决这个问题的方法,但没有成功。
我熟悉从源代码构建 Kitware(Cmake 和 Paraivew)的东西,所以我这样做了:
git clone https://github.com/Kitware/VTK.git
mkdir VTK/build
cd VTK/build
ccmake ..
make
make install
Run Code Online (Sandbox Code Playgroud)
一些相关CMake的选项BUILD_SHARED_LIBS=ON,CMAKE_BUILD_TYPE=Release,CMAKE_INSTALL_PREFIX=/usr/local,python3_EXECUTABLE=/usr/bin/python3.8,VTK_WRAP_PYTHON=ON,Python3_INCLUDE_DIR=/usr/include/python3.8,Python3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so,和VTK_PYTHON_OPTIONAL_LINK=ON。
我能够构建它,并且我认为我应该打开python wrapping. 安装后,我发现仍然无法运行 python 文件,仍然出现与上述相同的错误。我觉得我只需要告诉 python 去哪里获取 vtk 模块,这是正确的吗?如果是这样,它在哪里,它的名字是什么,我如何制作 python 链接到它?还是我错过了什么或做了一些非常愚蠢的事情?
如果有一种apt-get或pip3 install方式这样做会更好,但我想我已经用尽了谷歌搜索找到的所有尝试。
提前致谢。
我正在尝试将 3D 等高线图进行阴影处理,或者使用阴影使其“看起来”为 3D。我正在使用 matplotlib,主要是因为图的质量很高,并且更愿意继续使用它。
最终,我想要一个单一或平坦的彩色表面,在 matplotlib 样式的图中投射阴影。
我正在使用 scipy 进行一些插值和 skimage 以及行进立方体算法来生成轮廓。然后最后使用它来创建和着色多边形集合。
import numpy as np
from skimage import measure
from scipy.interpolate import griddata
import matplotlib as mpl
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
from matplotlib.colors import LightSource
# Generate an grid to inerpolate to
X, Y, Z = np.meshgrid(0.0:1.0:50j, 0.0:1.0:50j, 0.0:1.0:50j)
# Interpolate (coor and phi are the numerical grid and scalar values)
F = griddata(coor, phi, (X, Y, Z), method='nearest')
# Make the …Run Code Online (Sandbox Code Playgroud)