vtk类之vtkSuperquadricSource:创建以原点为中心的多边形超二次曲面的poly data
vtkSuperquadricSource 创建以原点为中心的多边形超二次曲面,可以设置尺寸。可以设置两个(φ)的纬度和经度(θ)方向的分辨率(多边形离散化)。浑圆度参数(纬度浑圆度和经度浑圆度)控制超二次曲面的形状。环形布尔值控制是否产生环形的超二次曲面。如果是的话,厚度参数控制的厚度的环形:0是最薄的环形,和1具有最小尺寸的孔。缩放尺度参数允许超二次曲面,在x,y,和z(在任何情况下,正确地生成法线向量)进行缩放。 尺寸参数控制的超二次曲面的size。
原理是基于“刚性基于物理的超二次曲面”,AH巴尔,在“图形宝石III”,大卫柯克,编,科学出版社,1992年。
基本方法:
SetCenter()设置中心点
SetThickness()厚度参数控制的厚度的环形:0是最薄的环形,和1具有最小尺寸的孔
ToroidalOn()开启环形
SetPhiRoundness(),SetThetaRoundness设置经纬度的环形度
SetScale()设置在x,y,z方向的超二次曲面的拉伸系数。
例子:
#-*- coding: UTF-8 -*- #------------------------------------------------------------------------------- # Name: 模块2 # Purpose: # # Author: ankier # # Created: 12-12-2012 # Copyright: (c) Ankier 2012 # Licence: <your licence> #------------------------------------------------------------------------------- from ActorFactory import ActorFactory from vtk import * ## @detal 生产超二次曲面 class SuperquadricActorFactory(ActorFactory): def __init__(self): ActorFactory.__init__(self) self.__SuperquadricSource = vtkSuperquadricSource() def _MakeActors(self): self.__SuperquadricSource.SetCenter(0, 0, 0) self.__SuperquadricSource.SetThickness(0.8) self.__SuperquadricSource.SetSize(20) self.__SuperquadricSource.ToroidalOn() self.__SuperquadricSource.SetPhiRoundness(10) self.__SuperquadricSource.SetThetaRoundness(1) self.__SuperquadricSource.SetScale(1 ,0.5, 1) polyDataMapper = vtkPolyDataMapper() polyDataMapper.SetInput(self.__SuperquadricSource.GetOutput()) actor = self._NewActor() actor.SetMapper(polyDataMapper) actor.GetProperty().SetColor((1.0, 0.7, 0.2)) return [actor] def __del__(self): del self.__SuperquadricSource
运行效果: