zoukankan      html  css  js  c++  java
  • 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

    运行效果:

  • 相关阅读:
    爬取网易云音乐歌手和id
    【兼容调试】cffi library '_openssl' has no function, constant or global variable named 'Cryptography_HAS
    python如何去掉字符串‘xa0’
    python 中json和字符串互相转换
    vip视频播放
    一行Python代码画心型
    Java语言编写MD5加密方法,Jmeter如何给字符串MD5加密
    转载:oracle RAC集群启动和关闭
    转载:oracle 11g ADG实施手册(亲测,已成功部署多次)
    如何上传本地文件到github又如何删除自己的github仓库
  • 原文地址:https://www.cnblogs.com/ankier/p/2812319.html
Copyright © 2011-2022 走看看