关于vtk HedgeHog算法的一个问题请教一下各位大佬

暴走の小新 暴走の小新 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在官网找的一个example,原网址链接https://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/HedgeHog
它里面的函数void CreateData(vtkStructuredGrid* sgrid)我看不明白是什么意思,谁能帮我讲解一下,代码如下,谢谢啦!
void CreateData(vtkStructuredGrid* sgrid)
{
int i, j, k, kOffset, jOffset, offset;
float x[3], v[3], rMin=0.5, rMax=1.0, deltaRad, deltaZ;
float radius, theta;
static int dims[3]={13,11,11};
sgrid->SetDimensions(dims);

// We also create the points and vectors. The points
// form a hemi-cylinder of data.
vtkSmartPointer<vtkFloatArray> vectors =
vtkSmartPointer<vtkFloatArray>::New();
vectors->SetNumberOfComponents(3);
vectors->SetNumberOfTuples(dims[0]*dims[1]*dims[2]);

vtkSmartPointer<vtkPoints> points =
vtkSmartPointer<vtkPoints>::New();
points->Allocate(dims[0]*dims[1]*dims[2]);

deltaZ = 2.0 / (dims[2]-1);
deltaRad = (rMax-rMin) / (dims[1]-1);
v[2]=0.0;
for ( k=0; k<dims[2]; k++)
{
x[2] = -1.0 + k*deltaZ;
kOffset = k * dims[0] * dims[1];
for (j=0; j<dims[1]; j++)
{
radius = rMin + j*deltaRad;
jOffset = j * dims[0];
for (i=0; i<dims[0]; i++)
{
theta = i * vtkMath::RadiansFromDegrees(15.0);
x[0] = radius * cos(theta);
x[1] = radius * sin(theta);
v[0] = -x[1];
v[1] = x[0];
offset = i + jOffset + kOffset;
points->InsertPoint(offset,x);
vectors->InsertTuple(offset,v);
}
}
}
sgrid->SetPoints(points);

sgrid->GetPointData()->SetVectors(vectors);
}
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
暴走の小新
C# 111,129 成员 642,539 内容