You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.2 KiB
C++
112 lines
3.2 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkCylinderSource.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
/**
|
|
* @class vtkCylinderSource
|
|
* @brief generate a cylinder centered at origin
|
|
*
|
|
* vtkCylinderSource creates a polygonal cylinder centered at Center;
|
|
* The axis of the cylinder is aligned along the global y-axis.
|
|
* The height and radius of the cylinder can be specified, as well as the
|
|
* number of sides. It is also possible to control whether the cylinder is
|
|
* open-ended or capped. If you have the end points of the cylinder, you
|
|
* should use a vtkLineSource followed by a vtkTubeFilter instead of the
|
|
* vtkCylinderSource.
|
|
*/
|
|
|
|
#ifndef vtkCylinderSource_h
|
|
#define vtkCylinderSource_h
|
|
|
|
#include "vtkFiltersSourcesModule.h" // For export macro
|
|
#include "vtkPolyDataAlgorithm.h"
|
|
|
|
#include "vtkCell.h" // Needed for VTK_CELL_SIZE
|
|
|
|
class VTKFILTERSSOURCES_EXPORT vtkCylinderSource : public vtkPolyDataAlgorithm
|
|
{
|
|
public:
|
|
static vtkCylinderSource* New();
|
|
vtkTypeMacro(vtkCylinderSource, vtkPolyDataAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
//@{
|
|
/**
|
|
* Set the height of the cylinder. Initial value is 1.
|
|
*/
|
|
vtkSetClampMacro(Height, double, 0.0, VTK_DOUBLE_MAX);
|
|
vtkGetMacro(Height, double);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set the radius of the cylinder. Initial value is 0.5
|
|
*/
|
|
vtkSetClampMacro(Radius, double, 0.0, VTK_DOUBLE_MAX);
|
|
vtkGetMacro(Radius, double);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get cylinder center. Initial value is (0.0,0.0,0.0)
|
|
*/
|
|
vtkSetVector3Macro(Center, double);
|
|
vtkGetVectorMacro(Center, double, 3);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set the number of facets used to define cylinder. Initial value is 6.
|
|
*/
|
|
vtkSetClampMacro(Resolution, int, 2, VTK_CELL_SIZE);
|
|
vtkGetMacro(Resolution, int);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Turn on/off whether to cap cylinder with polygons. Initial value is true.
|
|
*/
|
|
vtkSetMacro(Capping, vtkTypeBool);
|
|
vtkGetMacro(Capping, vtkTypeBool);
|
|
vtkBooleanMacro(Capping, vtkTypeBool);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/get the desired precision for the output points.
|
|
* vtkAlgorithm::SINGLE_PRECISION - Output single-precision floating point.
|
|
* vtkAlgorithm::DOUBLE_PRECISION - Output double-precision floating point.
|
|
*/
|
|
vtkSetMacro(OutputPointsPrecision, int);
|
|
vtkGetMacro(OutputPointsPrecision, int);
|
|
//@}
|
|
|
|
protected:
|
|
vtkCylinderSource(int res = 6);
|
|
~vtkCylinderSource() override {}
|
|
|
|
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
|
double Height;
|
|
double Radius;
|
|
double Center[3];
|
|
int Resolution;
|
|
vtkTypeBool Capping;
|
|
int OutputPointsPrecision;
|
|
|
|
private:
|
|
vtkCylinderSource(const vtkCylinderSource&) = delete;
|
|
void operator=(const vtkCylinderSource&) = delete;
|
|
};
|
|
|
|
#endif
|