VTK入门程序样例分析-vtk与MFc混编(6)

2019-04-21 19:17

#include \ #include \ #include \ #include #include #include #include #include #include

void main() {

double x,y,z; int i;

for(i=0;i

x = (float)rand()/(float)RAND_MAX; y = (float)rand()/(float)RAND_MAX; z = (float)rand()/(float)RAND_MAX; printf(\,x,y,z); aSplineX->AddPoint(i, x); aSplineY->AddPoint(i, y); aSplineZ->AddPoint(i, z);

inputPoints->InsertPoint(i, x, y, z); vtkPoints *inputPoints = vtkPoints::New();

vtkCardinalSpline *aSplineX = vtkCardinalSpline::New(); vtkCardinalSpline *aSplineY = vtkCardinalSpline::New(); vtkCardinalSpline *aSplineZ = vtkCardinalSpline::New(); int numberOfInputPoints = 30;

vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renWindow); // rand()/RAND_MAX;//

0 - RAND_MAX

vtkRenderer *ren = vtkRenderer::New();

vtkRenderWindow *renWindow = vtkRenderWindow::New(); renWindow->AddRenderer(ren); renWindow->SetSize( 600, 600 ); srand(time(NULL)) ;

}

vtkPolyData *inputData =vtkPolyData::New(); inputData->SetPoints(inputPoints);

vtkSphereSource *balls =vtkSphereSource::New(); balls->SetRadius(.01); balls->SetPhiResolution(10); balls->SetThetaResolution(10);

vtkGlyph3D *glyphPoints =vtkGlyph3D::New(); glyphPoints->SetInput(inputData);

glyphPoints->SetSource(balls->GetOutput());

vtkPolyDataMapper *glyphMapper = vtkPolyDataMapper::New(); glyphMapper->SetInputConnection(glyphPoints->GetOutputPort()); vtkActor *glyph = vtkActor::New(); glyph->SetMapper(glyphMapper);

glyph->GetProperty()->SetDiffuseColor(1,0,0); glyph->GetProperty()->SetSpecular(.3); glyph->GetProperty()->SetSpecularPower(30); ///////////////

vtkPoints *points = vtkPoints::New(); // Number of points on the spline int numberOfOutputPoints = 400; float t;

for(i=0;i

vtkCellArray *lines = vtkCellArray::New();

int a=lines->InsertNextCell(numberOfOutputPoints); for(i=0;i

t = (numberOfInputPoints-1.0)/(numberOfOutputPoints-1.0)*i;

points->InsertPoint(i, aSplineX->Evaluate(t), aSplineY->Evaluate(t),

aSplineZ->Evaluate(t));

points->GetPoint(i)[1],points->GetPoint(i)[2]); printf(\,points->GetPoint(i)[0],

}

}

lines->InsertCellPoint(i);

vtkPolyData *profileData = vtkPolyData::New(); profileData->SetPoints(points); profileData->SetLines(lines);

// Add thickness to the resulting line.

vtkTubeFilter *profileTubes = vtkTubeFilter::New(); profileTubes->SetNumberOfSides(8); profileTubes->SetInput(profileData); profileTubes->SetRadius(0.005);

vtkPolyDataMapper *profileMapper = vtkPolyDataMapper::New(); profileMapper->SetInputConnection(profileTubes->GetOutputPort()); vtkActor *profile = vtkActor::New(); profile->SetMapper(profileMapper);

profile->GetProperty()->SetDiffuseColor(1,1,0); profile->GetProperty()->SetSpecular(0.3); profile->GetProperty()->SetSpecularPower(30); ////////////// ren->AddActor(glyph); ren->AddActor(profile); iren->Initialize(); renWindow->Render(); iren->Start();

4、图形切割

#include \

#include \ #include \ #include \ #include \ #include \ #include \

#include \ #include \ #include \

#include \ #include \

int main() {

vtkQuadric *quadric = vtkQuadric::New();

vtkSampleFunction *sample = vtkSampleFunction::New();

vtkExtractVOI *extract = vtkExtractVOI::New();

sample->SetSampleDimensions(30, 30, 30); sample->SetImplicitFunction(quadric); sample->ComputeNormalsOff();

quadric->SetCoefficients(.5, 1, .2, 0, .1, 0, 0, .2, 0, 0);

extract->SetInputConnection(sample->GetOutputPort());

extract->SetVOI(0, 29, 0, 29, 5, 25); //**********调整三维切割

// extract->SetSampleRate(1, 2, 3);

vtkContourFilter *contours = vtkContourFilter::New();

vtkPolyDataMapper *contMapper = vtkPolyDataMapper::New();

vtkActor *contActor = vtkActor::New();

vtkOutlineFilter *outline = vtkOutlineFilter::New();

vtkPolyDataMapper *outlineMapper = vtkPolyDataMapper::New();

vtkActor *outlineActor = vtkActor::New();

vtkRenderer *ren1 = vtkRenderer::New();

vtkRenderWindow *renWin = vtkRenderWindow::New(); }

return 0;

ren1->ResetCamera();

ren1->GetActiveCamera()->Zoom( 1.5 ); renWin->Render(); iren->Initialize(); iren->Start();

ren1->SetBackground(1, 1, 1); ren1->AddActor(contActor); ren1->AddActor(outlineActor); renWin->AddRenderer(ren1); iren->SetRenderWindow(renWin);

vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();

outlineActor->SetMapper(outlineMapper);

outlineActor->GetProperty()->SetColor(0, 0, 0);

outlineMapper->SetInputConnection(outline->GetOutputPort()); outline->SetInputConnection(sample->GetOutputPort()); contActor->SetMapper(contMapper);

contMapper->SetInputConnection(contours->GetOutputPort()); contMapper->SetScalarRange(0.0, 1.2);

contours->SetInputConnection(extract->GetOutputPort()); contours->GenerateValues(13, 0.0, 1.2);


VTK入门程序样例分析-vtk与MFc混编(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:ABB机器人RAPID指令中文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: