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.
148 lines
4.3 KiB
C
148 lines
4.3 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkConeSource.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 vtkConeSource
|
||
|
* @brief generate polygonal cone
|
||
|
*
|
||
|
* vtkConeSource creates a cone centered at a specified point and pointing in
|
||
|
* a specified direction. (By default, the center is the origin and the
|
||
|
* direction is the x-axis.) Depending upon the resolution of this object,
|
||
|
* different representations are created. If resolution=0 a line is created;
|
||
|
* if resolution=1, a single triangle is created; if resolution=2, two
|
||
|
* crossed triangles are created. For resolution > 2, a 3D cone (with
|
||
|
* resolution number of sides) is created. It also is possible to control
|
||
|
* whether the bottom of the cone is capped with a (resolution-sided)
|
||
|
* polygon, and to specify the height and radius of the cone.
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkConeSource_h
|
||
|
#define vtkConeSource_h
|
||
|
|
||
|
#include "vtkFiltersSourcesModule.h" // For export macro
|
||
|
#include "vtkPolyDataAlgorithm.h"
|
||
|
|
||
|
#include "vtkCell.h" // Needed for VTK_CELL_SIZE
|
||
|
|
||
|
class VTKFILTERSSOURCES_EXPORT vtkConeSource : public vtkPolyDataAlgorithm
|
||
|
{
|
||
|
public:
|
||
|
vtkTypeMacro(vtkConeSource, vtkPolyDataAlgorithm);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
/**
|
||
|
* Construct with default resolution 6, height 1.0, radius 0.5, and
|
||
|
* capping on. The cone is centered at the origin and points down
|
||
|
* the x-axis.
|
||
|
*/
|
||
|
static vtkConeSource* New();
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set the height of the cone. This is the height along the cone in
|
||
|
* its specified direction.
|
||
|
*/
|
||
|
vtkSetClampMacro(Height, double, 0.0, VTK_DOUBLE_MAX);
|
||
|
vtkGetMacro(Height, double);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set the base radius of the cone.
|
||
|
*/
|
||
|
vtkSetClampMacro(Radius, double, 0.0, VTK_DOUBLE_MAX);
|
||
|
vtkGetMacro(Radius, double);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set the number of facets used to represent the cone.
|
||
|
*/
|
||
|
vtkSetClampMacro(Resolution, int, 0, VTK_CELL_SIZE);
|
||
|
vtkGetMacro(Resolution, int);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set the center of the cone. It is located at the middle of the axis of
|
||
|
* the cone. Warning: this is not the center of the base of the cone!
|
||
|
* The default is 0,0,0.
|
||
|
*/
|
||
|
vtkSetVector3Macro(Center, double);
|
||
|
vtkGetVectorMacro(Center, double, 3);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set the orientation vector of the cone. The vector does not have
|
||
|
* to be normalized. The direction goes from the center of the base toward
|
||
|
* the apex. The default is (1,0,0).
|
||
|
*/
|
||
|
vtkSetVector3Macro(Direction, double);
|
||
|
vtkGetVectorMacro(Direction, double, 3);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Set the angle of the cone. This is the angle between the axis of the cone
|
||
|
* and a generatrix. Warning: this is not the aperture! The aperture is
|
||
|
* twice this angle.
|
||
|
* As a side effect, the angle plus height sets the base radius of the cone.
|
||
|
* Angle is expressed in degrees.
|
||
|
*/
|
||
|
void SetAngle(double angle);
|
||
|
double GetAngle();
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Turn on/off whether to cap the base of the cone with a polygon.
|
||
|
*/
|
||
|
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:
|
||
|
vtkConeSource(int res = 6);
|
||
|
~vtkConeSource() override {}
|
||
|
|
||
|
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
||
|
int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
||
|
|
||
|
double Height;
|
||
|
double Radius;
|
||
|
int Resolution;
|
||
|
vtkTypeBool Capping;
|
||
|
double Center[3];
|
||
|
double Direction[3];
|
||
|
int OutputPointsPrecision;
|
||
|
|
||
|
private:
|
||
|
vtkConeSource(const vtkConeSource&) = delete;
|
||
|
void operator=(const vtkConeSource&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif
|