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

暴走の小新 2018-01-25 04:19:55
在官网找的一个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);
}
...全文
321 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
暴走の小新 2018-01-25
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
这是 C++ 代码,看不懂很正常 就算看懂了,也不一定就能改成 C# 的
我已经转成c#实现了它的效果,HedgeHog方法里面需要传入vtkStructuredGrid的数据,CreateData()就是创建这个数据,但是我不明白这个函数里的代码是什么意思,是怎么创建出这个数据的
暴走の小新 2018-01-25
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
这是 C++ 代码,看不懂很正常 就算看懂了,也不一定就能改成 C# 的
我已经转成c#实现了它的效果,HedgeHog方法里面需要传入vtkStructuredGrid的数据,CreateData()就是创建这个数据,但是我不明白这个函数里的代码是什么意思,是怎么创建出这个数据的
暴走の小新 2018-01-25
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
这是 C++ 代码,看不懂很正常 就算看懂了,也不一定就能改成 C# 的
我已经转成c#实现了它的效果,HedgeHog方法里面需要传入vtkStructuredGrid的数据,CreateData()就是创建这个数据,但是我不明白这个函数里的代码是什么意思,是怎么创建出这个数据的
xuzuning 2018-01-25
  • 打赏
  • 举报
回复
这是 C++ 代码,看不懂很正常 就算看懂了,也不一定就能改成 C# 的
xuzuning 2018-01-25
  • 打赏
  • 举报
回复
这是 C++ 代码,看不懂很正常 就算看懂了,也不一定就能改成 C# 的

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧