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.
120 lines
4.0 KiB
C++
120 lines
4.0 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkTextureMapToCylinder.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 vtkTextureMapToCylinder
|
|
* @brief generate texture coordinates by mapping points to cylinder
|
|
*
|
|
* vtkTextureMapToCylinder is a filter that generates 2D texture coordinates
|
|
* by mapping input dataset points onto a cylinder. The cylinder can either be
|
|
* user specified or generated automatically. (The cylinder is generated
|
|
* automatically by computing the axis of the cylinder.) Note that the
|
|
* generated texture coordinates for the s-coordinate ranges from (0-1)
|
|
* (corresponding to angle of 0->360 around axis), while the mapping of
|
|
* the t-coordinate is controlled by the projection of points along the axis.
|
|
*
|
|
* To specify a cylinder manually, you must provide two points that
|
|
* define the axis of the cylinder. The length of the axis will affect the
|
|
* t-coordinates.
|
|
*
|
|
* A special ivar controls how the s-coordinate is generated. If PreventSeam
|
|
* is set to true, the s-texture varies from 0->1 and then 1->0 (corresponding
|
|
* to angles of 0->180 and 180->360).
|
|
*
|
|
* @warning
|
|
* Since the resulting texture s-coordinate will lie between (0,1), and the
|
|
* origin of the texture coordinates is not user-controllable, you may want
|
|
* to use the class vtkTransformTexture to linearly scale and shift the origin
|
|
* of the texture coordinates.
|
|
*
|
|
* @sa
|
|
* vtkTextureMapToPlane vtkTextureMapToSphere
|
|
* vtkTransformTexture vtkThresholdTextureCoords
|
|
*/
|
|
|
|
#ifndef vtkTextureMapToCylinder_h
|
|
#define vtkTextureMapToCylinder_h
|
|
|
|
#include "vtkDataSetAlgorithm.h"
|
|
#include "vtkFiltersTextureModule.h" // For export macro
|
|
|
|
class VTKFILTERSTEXTURE_EXPORT vtkTextureMapToCylinder : public vtkDataSetAlgorithm
|
|
{
|
|
public:
|
|
vtkTypeMacro(vtkTextureMapToCylinder, vtkDataSetAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
/**
|
|
* Create object with cylinder axis parallel to z-axis (points (0,0,-0.5)
|
|
* and (0,0,0.5)). The PreventSeam ivar is set to true. The cylinder is
|
|
* automatically generated.
|
|
*/
|
|
static vtkTextureMapToCylinder* New();
|
|
|
|
//@{
|
|
/**
|
|
* Specify the first point defining the cylinder axis,
|
|
*/
|
|
vtkSetVector3Macro(Point1, double);
|
|
vtkGetVectorMacro(Point1, double, 3);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Specify the second point defining the cylinder axis,
|
|
*/
|
|
vtkSetVector3Macro(Point2, double);
|
|
vtkGetVectorMacro(Point2, double, 3);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Turn on/off automatic cylinder generation. This means it automatically
|
|
* finds the cylinder center and axis.
|
|
*/
|
|
vtkSetMacro(AutomaticCylinderGeneration, vtkTypeBool);
|
|
vtkGetMacro(AutomaticCylinderGeneration, vtkTypeBool);
|
|
vtkBooleanMacro(AutomaticCylinderGeneration, vtkTypeBool);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Control how the texture coordinates are generated. If PreventSeam is
|
|
* set, the s-coordinate ranges from 0->1 and 1->0 corresponding to the
|
|
* angle variation from 0->180 and 180->0. Otherwise, the s-coordinate
|
|
* ranges from 0->1 from 0->360 degrees.
|
|
*/
|
|
vtkSetMacro(PreventSeam, vtkTypeBool);
|
|
vtkGetMacro(PreventSeam, vtkTypeBool);
|
|
vtkBooleanMacro(PreventSeam, vtkTypeBool);
|
|
//@}
|
|
|
|
protected:
|
|
vtkTextureMapToCylinder();
|
|
~vtkTextureMapToCylinder() override {}
|
|
|
|
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
|
|
|
double Point1[3];
|
|
double Point2[3];
|
|
vtkTypeBool AutomaticCylinderGeneration;
|
|
vtkTypeBool PreventSeam;
|
|
|
|
private:
|
|
vtkTextureMapToCylinder(const vtkTextureMapToCylinder&) = delete;
|
|
void operator=(const vtkTextureMapToCylinder&) = delete;
|
|
};
|
|
|
|
#endif
|