找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 753|回复: 5

[VTK] VTK例子13-TenEllip

[复制链接]

291

主题

401

回帖

2545

积分

管理员

积分
2545

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2015-12-5 17:47:20 | 显示全部楼层 |阅读模式
TenEllip
#include "stdafx.h"
#include "vtkActor.h"
#include "vtkCamera.h"
#include "vtkPointLoad.h"
#include "vtkImageDataGeometryFilter.h"
#include "vtkPlanes.h"
#include "vtkPolyDataMapper.h"
#include "vtkProperty.h"
#include "vtkSphereSource.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkTensorGlyph.h"
#include "vtkPolyDataNormals.h"
#include "vtkLogLookupTable.h"
#include "vtkOutlineFilter.h"
#include "vtkConeSource.h"
#include "vtkPolyDataNormals.h"
void main()
{
  vtkRenderer *ren1 = vtkRenderer::New();
  vtkRenderWindow *renWin = vtkRenderWindow::New();
    renWin->AddRenderer(ren1);
  vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
    iren->SetRenderWindow(renWin);
// Create tensor ellipsoids
//
// generate tensors
vtkPointLoad *ptLoad=vtkPointLoad::New();
    ptLoad ->SetLoadValue( 100.0);
    ptLoad ->SetSampleDimensions (6 ,6 ,6);
    ptLoad ->ComputeEffectiveStressOn();
    ptLoad ->SetModelBounds (-10 ,10 ,-10 ,10 ,-10 ,10);
// extract plane of data
vtkImageDataGeometryFilter *plane=vtkImageDataGeometryFilter::New();
    plane ->SetInputConnection (ptLoad ->GetOutputPort());
    plane ->SetExtent( 2, 2 ,0, 99 ,0 ,99);
// Generate ellipsoids
vtkSphereSource *sphere=vtkSphereSource::New();
    sphere-> SetThetaResolution (8);
    sphere ->SetPhiResolution( 8);
vtkTensorGlyph *ellipsoids=vtkTensorGlyph::New();
    ellipsoids-> SetInputConnection (ptLoad ->GetOutputPort());
    ellipsoids-> SetSource (sphere ->GetOutput());
    ellipsoids-> SetScaleFactor (10);
    ellipsoids-> ClampScalingOn();
  
vtkPolyDataNormals *ellipNormals=vtkPolyDataNormals::New();
  ellipNormals ->SetInputConnection (ellipsoids-> GetOutputPort());
// Map contour
vtkLogLookupTable *lut=vtkLogLookupTable::New();
    lut ->SetHueRange (0.6667, 0.0);
vtkPolyDataMapper *ellipMapper=vtkPolyDataMapper::New();
    ellipMapper ->SetInputConnection (ellipNormals-> GetOutputPort());
    ellipMapper ->SetLookupTable( lut);
    plane ->Update();//force update for scalar range
    ellipMapper ->SetScalarRange (plane ->GetOutput() ->GetScalarRange());
vtkActor *ellipActor=vtkActor::New();
    ellipActor ->SetMapper( ellipMapper);
//
// Create outline around data
//
vtkOutlineFilter *outline=vtkOutlineFilter::New();
    outline ->SetInputConnection (ptLoad ->GetOutputPort());
vtkPolyDataMapper *outlineMapper=vtkPolyDataMapper::New();
    outlineMapper ->SetInputConnection (outline ->GetOutputPort());
vtkActor *outlineActor=vtkActor::New();
    outlineActor-> SetMapper( outlineMapper);
    outlineActor-> GetProperty()->SetColor( 0, 0 ,0);
//
// Create cone indicating application of load
//
vtkConeSource *coneSrc=vtkConeSource::New();
    coneSrc->  SetRadius( 0.5);
    coneSrc->  SetHeight( 2);
vtkPolyDataMapper *coneMap=vtkPolyDataMapper::New();
    coneMap-> SetInputConnection (coneSrc ->GetOutputPort());
vtkActor *coneActor=vtkActor::New();
    coneActor-> SetMapper (coneMap);   
    coneActor-> SetPosition (0 ,0 ,11);
    coneActor-> RotateY (90);
    coneActor-> GetProperty() ->SetColor( 1 ,0 ,0);
vtkCamera *camera=vtkCamera::New();
    camera-> SetFocalPoint( 0.113766 ,-1.13665 ,-1.01919);
    camera-> SetPosition (-29.4886 ,-63.1488 ,26.5807);
    camera-> SetViewAngle( 24.4617);
    camera-> SetViewUp (0.17138 ,0.331163 ,0.927879);
    camera-> SetClippingRange (1 ,100);
ren1-> AddActor (ellipActor);
ren1-> AddActor( outlineActor);
ren1-> AddActor( coneActor);
ren1-> SetBackground( 1.0 ,1.0 ,1.0);
ren1-> SetActiveCamera (camera);
renWin-> SetSize (400, 400);
  renWin->Render();
  iren->Start();
  // Clean up
  ren1->Delete();
  renWin->Delete();
  iren->Delete();
  sphere->Delete();
}
13.png
回复

使用道具 举报

161

主题

402

回帖

1505

积分

版主

积分
1505

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2016-5-10 13:15:43 | 显示全部楼层
初学者,学习,谢谢
回复

使用道具 举报

4

主题

241

回帖

561

积分

高级会员

积分
561

最佳新人

发表于 2016-5-13 02:44:22 | 显示全部楼层
顶贴
回复

使用道具 举报

0

主题

388

回帖

775

积分

高级会员

积分
775

最佳新人

发表于 2016-5-13 21:00:28 | 显示全部楼层
楼主太伟大了
回复

使用道具 举报

110

主题

429

回帖

1428

积分

金牌会员

积分
1428

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2016-5-13 21:59:21 | 显示全部楼层
看看高人有多高
回复

使用道具 举报

0

主题

388

回帖

775

积分

高级会员

积分
775

最佳新人

发表于 2016-5-14 17:50:48 | 显示全部楼层
高手,厉害,向你学习。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于我们|医维基|网站地图|Archiver|手机版|医疗之家 ( 沪ICP备2023001278号-1 )

GMT+8, 2025-4-11 08:11 , Processed in 0.742365 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表