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.

115 lines
3.8 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkTextureMapToSphere.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 vtkTextureMapToSphere
* @brief generate texture coordinates by mapping points to sphere
*
* vtkTextureMapToSphere is a filter that generates 2D texture coordinates by
* mapping input dataset points onto a sphere. The sphere can either be user
* specified or generated automatically. (The sphere is generated
* automatically by computing the center (i.e., averaged coordinates) of the
* sphere.) Note that the generated texture coordinates range between
* (0,1). The s-coordinate lies in the angular direction around the z-axis,
* measured counter-clockwise from the x-axis. The t-coordinate lies in the
* angular direction measured down from the north pole towards the south
* pole.
*
* 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
* The resulting texture coordinates will lie between (0,1), and the texture
* coordinates are determined with respect to the modeler's x-y-z coordinate
* system. Use the class vtkTransformTextureCoords to linearly scale and
* shift the origin of the texture coordinates (if necessary).
*
* @sa
* vtkTextureMapToPlane vtkTextureMapToCylinder
* vtkTransformTexture vtkThresholdTextureCoords
*/
#ifndef vtkTextureMapToSphere_h
#define vtkTextureMapToSphere_h
#include "vtkDataSetAlgorithm.h"
#include "vtkFiltersTextureModule.h" // For export macro
class vtkDataSet;
class VTKFILTERSTEXTURE_EXPORT vtkTextureMapToSphere : public vtkDataSetAlgorithm
{
public:
vtkTypeMacro(vtkTextureMapToSphere, vtkDataSetAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Create object with Center (0,0,0) and the PreventSeam ivar is set to
* true. The sphere center is automatically computed.
*/
static vtkTextureMapToSphere* New();
//@{
/**
* Specify a point defining the center of the sphere.
*/
vtkSetVector3Macro(Center, double);
vtkGetVectorMacro(Center, double, 3);
//@}
//@{
/**
* Turn on/off automatic sphere generation. This means it automatically
* finds the sphere center.
*/
vtkSetMacro(AutomaticSphereGeneration, vtkTypeBool);
vtkGetMacro(AutomaticSphereGeneration, vtkTypeBool);
vtkBooleanMacro(AutomaticSphereGeneration, 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
* theta angle variation between 0->180 and 180->0 degrees. Otherwise, the
* s-coordinate ranges from 0->1 between 0->360 degrees.
*/
vtkSetMacro(PreventSeam, vtkTypeBool);
vtkGetMacro(PreventSeam, vtkTypeBool);
vtkBooleanMacro(PreventSeam, vtkTypeBool);
//@}
/*
* Computes the center point of the data set if AutomaticSphereGeneration is set to true.
*/
virtual void ComputeCenter(vtkDataSet* input);
protected:
vtkTextureMapToSphere();
~vtkTextureMapToSphere() override {}
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
double Center[3];
vtkTypeBool AutomaticSphereGeneration;
vtkTypeBool PreventSeam;
private:
vtkTextureMapToSphere(const vtkTextureMapToSphere&) = delete;
void operator=(const vtkTextureMapToSphere&) = delete;
};
#endif