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++
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
|