/usr/include/vtk-6.2/vtkProp3D.h is in libvtk6-dev 6.2.0+dfsg1-10build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkProp3D.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.
=========================================================================*/
// .NAME vtkProp3D - represents an 3D object for placement in a rendered scene
// .SECTION Description
// vtkProp3D is an abstract class used to represent an entity in a rendering
// scene (i.e., vtkProp3D is a vtkProp with an associated transformation
// matrix). It handles functions related to the position, orientation and
// scaling. It combines these instance variables into one 4x4 transformation
// matrix as follows: [x y z 1] = [x y z 1] Translate(-origin) Scale(scale)
// Rot(y) Rot(x) Rot (z) Trans(origin) Trans(position). Both vtkActor and
// vtkVolume are specializations of class vtkProp. The constructor defaults
// to: origin(0,0,0) position=(0,0,0) orientation=(0,0,0), no user defined
// matrix or transform, and no texture map.
// .SECTION See Also
// vtkProp vtkActor vtkAssembly vtkVolume
#ifndef vtkProp3D_h
#define vtkProp3D_h
#include "vtkRenderingCoreModule.h" // For export macro
#include "vtkProp.h"
class vtkRenderer;
class vtkTransform;
class vtkLinearTransform;
class VTKRENDERINGCORE_EXPORT vtkProp3D : public vtkProp
{
public:
vtkTypeMacro(vtkProp3D,vtkProp);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Shallow copy of this vtkProp3D.
void ShallowCopy(vtkProp *prop);
// Description:
// Set/Get/Add the position of the Prop3D in world coordinates.
virtual void SetPosition(double x, double y, double z)
{
vtkDebugMacro(<< this->GetClassName() << " (" << this <<
"): setting Position to (" << x << "," << y << "," <<
z << ")");
if ((this->Position[0] != x)||
(this->Position[1] != y)||
(this->Position[2] != z))
{
this->Position[0] = x;
this->Position[1] = y;
this->Position[2] = z;
this->Modified();
this->IsIdentity = 0;
}
};
virtual void SetPosition(double pos[3])
{ this->SetPosition(pos[0], pos[1], pos[2]); }
vtkGetVectorMacro(Position, double, 3);
void AddPosition(double deltaPosition[3]);
void AddPosition(double deltaX, double deltaY, double deltaZ);
// Description:
// Set/Get the origin of the Prop3D. This is the point about which all
// rotations take place.
virtual void SetOrigin(double x, double y, double z)
{
vtkDebugMacro(<< this->GetClassName() << " (" << this <<
"): setting Origin to (" << x << "," << y << "," <<
z << ")");
if ((this->Origin[0] != x)||
(this->Origin[1] != y)||
(this->Origin[2] != z))
{
this->Origin[0] = x;
this->Origin[1] = y;
this->Origin[2] = z;
this->Modified();
this->IsIdentity = 0;
}
};
virtual void SetOrigin(const double pos[3])
{ this->SetOrigin(pos[0], pos[1], pos[2]); }
vtkGetVectorMacro(Origin, double, 3);
// Description:
// Set/Get the scale of the actor. Scaling in performed independently on the
// X, Y and Z axis. A scale of zero is illegal and will be replaced with one.
virtual void SetScale(double x, double y, double z)
{
vtkDebugMacro(<< this->GetClassName() << " (" << this <<
"): setting Scale to (" << x << "," << y << "," <<
z << ")");
if (this->Scale[0] != x ||
this->Scale[1] != y ||
this->Scale[2] != z )
{
this->Scale[0] = x;
this->Scale[1] = y;
this->Scale[2] = z;
this->Modified();
this->IsIdentity = 0;
}
};
virtual void SetScale(double scale[3])
{ this->SetScale(scale[0], scale[1], scale[2]); }
vtkGetVectorMacro(Scale, double, 3);
// Description:
// Method to set the scale isotropically
void SetScale(double s)
{ this->SetScale(s, s, s); }
// Description:
// In addition to the instance variables such as position and orientation,
// you can add an additional transformation for your own use. This
// transformation is concatenated with the actor's internal transformation,
// which you implicitly create through the use of SetPosition(),
// SetOrigin() and SetOrientation().
// <p>If the internal transformation
// is identity (i.e. if you don't set the Position, Origin, or
// Orientation) then the actors final transformation will be the
// UserTransform, concatenated with the UserMatrix if the UserMatrix
// is present.
void SetUserTransform(vtkLinearTransform *transform);
vtkGetObjectMacro(UserTransform, vtkLinearTransform);
// Description:
// The UserMatrix can be used in place of UserTransform.
void SetUserMatrix(vtkMatrix4x4 *matrix);
vtkMatrix4x4 *GetUserMatrix();
// Description:
// Return a reference to the Prop3D's 4x4 composite matrix.
// Get the matrix from the position, origin, scale and orientation This
// matrix is cached, so multiple GetMatrix() calls will be efficient.
virtual void GetMatrix(vtkMatrix4x4 *m);
virtual void GetMatrix(double m[16]);
// Description:
// Return a reference to the Prop3D's composite transform.
// Description:
// Get the bounds for this Prop3D as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax).
void GetBounds(double bounds[6]);
virtual double *GetBounds() = 0;
// Description:
// Get the center of the bounding box in world coordinates.
double *GetCenter();
// Description:
// Get the Prop3D's x range in world coordinates.
double *GetXRange();
// Description:
// Get the Prop3D's y range in world coordinates.
double *GetYRange();
// Description:
// Get the Prop3D's z range in world coordinates.
double *GetZRange();
// Description:
// Get the length of the diagonal of the bounding box.
double GetLength();
// Description:
// Rotate the Prop3D in degrees about the X axis using the right hand
// rule. The axis is the Prop3D's X axis, which can change as other
// rotations are performed. To rotate about the world X axis use
// RotateWXYZ (angle, 1, 0, 0). This rotation is applied before all
// others in the current transformation matrix.
void RotateX(double);
// Description:
// Rotate the Prop3D in degrees about the Y axis using the right hand
// rule. The axis is the Prop3D's Y axis, which can change as other
// rotations are performed. To rotate about the world Y axis use
// RotateWXYZ (angle, 0, 1, 0). This rotation is applied before all
// others in the current transformation matrix.
void RotateY(double);
// Description:
// Rotate the Prop3D in degrees about the Z axis using the right hand
// rule. The axis is the Prop3D's Z axis, which can change as other
// rotations are performed. To rotate about the world Z axis use
// RotateWXYZ (angle, 0, 0, 1). This rotation is applied before all
// others in the current transformation matrix.
void RotateZ(double);
// Description:
// Rotate the Prop3D in degrees about an arbitrary axis specified by
// the last three arguments. The axis is specified in world
// coordinates. To rotate an about its model axes, use RotateX,
// RotateY, RotateZ.
void RotateWXYZ(double w, double x, double y, double z);
// Description:
// Sets the orientation of the Prop3D. Orientation is specified as
// X,Y and Z rotations in that order, but they are performed as
// RotateZ, RotateX, and finally RotateY.
void SetOrientation(double x, double y, double z);
// Description:
// Sets the orientation of the Prop3D. Orientation is specified as
// X,Y and Z rotations in that order, but they are performed as
// RotateZ, RotateX, and finally RotateY.
void SetOrientation(double orientation[3]);
// Description:
// Returns the orientation of the Prop3D as s vector of X,Y and Z rotation.
// The ordering in which these rotations must be done to generate the
// same matrix is RotateZ, RotateX, and finally RotateY. See also
// SetOrientation.
double *GetOrientation();
void GetOrientation(double orentation[3]);
// Description:
// Returns the WXYZ orientation of the Prop3D.
double *GetOrientationWXYZ();
// Description:
// Add to the current orientation. See SetOrientation and
// GetOrientation for more details. This basically does a
// GetOrientation, adds the passed in arguments, and then calls
// SetOrientation.
void AddOrientation(double x, double y, double z);
// Description:
// Add to the current orientation. See SetOrientation and
// GetOrientation for more details. This basically does a
// GetOrientation, adds the passed in arguments, and then calls
// SetOrientation.
void AddOrientation(double orentation[3]);
// Description:
// This method modifies the vtkProp3D so that its transformation
// state is set to the matrix specified. The method does this by
// setting appropriate transformation-related ivars to initial
// values (i.e., not transformed), and placing the user-supplied
// matrix into the UserMatrix of this vtkProp3D. If the method is
// called again with a NULL matrix, then the original state of the
// vtkProp3D will be restored. This method is used to support
// picking and assembly structures.
void PokeMatrix(vtkMatrix4x4 *matrix);
// Description:
// Overload vtkProp's method for setting up assembly paths. See
// the documentation for vtkProp.
void InitPathTraversal();
// Description:
// Get the vtkProp3D's mtime
unsigned long int GetMTime();
// Description:
// Get the modified time of the user matrix or user transform.
unsigned long int GetUserTransformMatrixMTime();
// Description:
// Generate the matrix based on ivars
virtual void ComputeMatrix();
// Description:
// Get a pointer to an internal vtkMatrix4x4. that represents
vtkMatrix4x4 *GetMatrix()
{
this->ComputeMatrix();
return this->Matrix;
}
// Description:
// Is the matrix for this actor identity
vtkGetMacro(IsIdentity, int);
protected:
vtkProp3D();
~vtkProp3D();
vtkLinearTransform *UserTransform;
vtkMatrix4x4 *UserMatrix;
vtkMatrix4x4 *Matrix;
vtkTimeStamp MatrixMTime;
double Origin[3];
double Position[3];
double Orientation[3];
double Scale[3];
double Center[3];
vtkTransform *Transform;
double Bounds[6];
vtkProp3D *CachedProp3D; //support the PokeMatrix() method
int IsIdentity;
private:
vtkProp3D(const vtkProp3D&); // Not implemented.
void operator=(const vtkProp3D&); // Not implemented.
};
#endif
|