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

运行效果:

 

转载于:https://www.cnblogs.com/ankier/archive/2012/12/11/2812319.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值