Loading...
Searching...
No Matches
transform.h
Go to the documentation of this file.
1//
2// Copyright 2016 Pixar
3//
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
5// with the following modification; you may not use this file except in
6// compliance with the Apache License and the following modification to it:
7// Section 6. Trademarks. is deleted and replaced with:
8//
9// 6. Trademarks. This License does not grant permission to use the trade
10// names, trademarks, service marks, or product names of the Licensor
11// and its affiliates, except as required to comply with Section 4(c) of
12// the License and to reproduce the content of the NOTICE file.
13//
14// You may obtain a copy of the Apache License at
15//
16// http://www.apache.org/licenses/LICENSE-2.0
17//
18// Unless required by applicable law or agreed to in writing, software
19// distributed under the Apache License with the above modification is
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21// KIND, either express or implied. See the Apache License for the specific
22// language governing permissions and limitations under the Apache License.
23//
24#ifndef PXR_BASE_GF_TRANSFORM_H
25#define PXR_BASE_GF_TRANSFORM_H
26
29
30#include "pxr/pxr.h"
32#include "pxr/base/gf/vec3d.h"
33#include "pxr/base/gf/api.h"
34
35#include <iosfwd>
36
37PXR_NAMESPACE_OPEN_SCOPE
38
39class GfMatrix4d;
40
70
71 public:
72
77 }
78
81 GfTransform(const GfVec3d &scale,
82 const GfRotation &pivotOrientation,
83 const GfRotation &rotation,
84 const GfVec3d &pivotPosition,
85 const GfVec3d &translation) {
86 Set(scale, pivotOrientation, rotation, pivotPosition, translation);
87 }
88
91 GfTransform(const GfVec3d &translation,
92 const GfRotation &rotation,
93 const GfVec3d &scale,
94 const GfVec3d &pivotPosition,
95 const GfRotation &pivotOrientation) {
96 Set(translation, rotation, scale, pivotPosition, pivotOrientation);
97 }
98
102 SetIdentity();
103 SetMatrix(m);
104 }
105
108 GF_API
109 GfTransform & Set(const GfVec3d &scale,
110 const GfRotation &pivotOrientation,
111 const GfRotation &rotation,
112 const GfVec3d &pivotPosition,
113 const GfVec3d &translation);
114
117 GfTransform & Set(const GfVec3d &translation,
118 const GfRotation &rotation,
119 const GfVec3d &scale,
120 const GfVec3d &pivotPosition,
121 const GfRotation &pivotOrientation) {
122 return Set(scale, pivotOrientation, rotation,
123 pivotPosition, translation);
124 }
125
129 GF_API
131
133 GF_API
135
137 void SetScale(const GfVec3d &scale) {
138 _scale = scale;
139 }
140
142 void SetPivotOrientation(const GfRotation &pivotOrient) {
143 _pivotOrientation = pivotOrient;
144 }
145
147 void SetScaleOrientation(const GfRotation &pivotOrient) {
148 SetPivotOrientation(pivotOrient);
149 }
150
152 void SetRotation(const GfRotation &rotation) {
153 _rotation = rotation;
154 }
155
157 void SetPivotPosition(const GfVec3d &pivPos) {
158 _pivotPosition = pivPos;
159 }
160
162 void SetCenter(const GfVec3d &pivPos) {
163 SetPivotPosition(pivPos);
164 }
165
167 void SetTranslation(const GfVec3d &translation) {
168 _translation = translation;
169 }
170
172 const GfVec3d & GetScale() const {
173 return _scale;
174 }
175
178 return _pivotOrientation;
179 }
180
183 return GetPivotOrientation();
184 }
185
187 const GfRotation & GetRotation() const {
188 return _rotation;
189 }
190
192 const GfVec3d & GetPivotPosition() const {
193 return _pivotPosition;
194 }
195
197 const GfVec3d & GetCenter() const {
198 return GetPivotPosition();
199 }
200
202 const GfVec3d & GetTranslation() const {
203 return _translation;
204 }
205
207 GF_API
209
212 GF_API
213 bool operator ==(const GfTransform &xf) const;
214
217 bool operator !=(const GfTransform &xf) const {
218 return ! (*this == xf);
219 }
220
222 GF_API
224
227 const GfTransform &xf2) {
228 GfTransform xf = xf1;
229 return xf *= xf2;
230 }
231
232 private:
234 GfVec3d _translation;
236 GfRotation _rotation;
238 GfVec3d _scale;
240 GfRotation _pivotOrientation;
242 GfVec3d _pivotPosition;
243};
244
248GF_API std::ostream& operator<<(std::ostream&, const GfTransform&);
249
250PXR_NAMESPACE_CLOSE_SCOPE
251
252#endif // PXR_BASE_GF_TRANSFORM_H
Stores a 4x4 matrix of double elements.
Definition: matrix4d.h:88
Basic type: 3-space rotation specification.
Definition: rotation.h:54
Basic type: Compound linear transformation.
Definition: transform.h:69
GfTransform(const GfVec3d &translation, const GfRotation &rotation, const GfVec3d &scale, const GfVec3d &pivotPosition, const GfRotation &pivotOrientation)
This constructor initializes the transformation from all component values.
Definition: transform.h:91
GF_API GfTransform & SetMatrix(const GfMatrix4d &m)
Sets the transform components to implement the transformation represented by matrix m ,...
void SetTranslation(const GfVec3d &translation)
Sets the translation component, leaving all others untouched.
Definition: transform.h:167
const GfRotation & GetPivotOrientation() const
Returns the pivot orientation component.
Definition: transform.h:177
GfTransform(const GfVec3d &scale, const GfRotation &pivotOrientation, const GfRotation &rotation, const GfVec3d &pivotPosition, const GfVec3d &translation)
This constructor initializes the transformation from all component values.
Definition: transform.h:81
GF_API GfTransform & operator*=(const GfTransform &xf)
Post-multiplies transform xf into this transform.
GF_API GfTransform & SetIdentity()
Sets the transformation to the identity transformation.
GfTransform & Set(const GfVec3d &translation, const GfRotation &rotation, const GfVec3d &scale, const GfVec3d &pivotPosition, const GfRotation &pivotOrientation)
Sets the transformation from all component values.
Definition: transform.h:117
void SetScale(const GfVec3d &scale)
Sets the scale component, leaving all others untouched.
Definition: transform.h:137
void SetCenter(const GfVec3d &pivPos)
Sets the pivot position component, leaving all others untouched.
Definition: transform.h:162
GF_API bool operator==(const GfTransform &xf) const
Component-wise transform equality test.
friend GfTransform operator*(const GfTransform &xf1, const GfTransform &xf2)
Returns the product of transforms xf1 and xf2.
Definition: transform.h:226
const GfVec3d & GetCenter() const
Returns the pivot position component.
Definition: transform.h:197
const GfRotation & GetRotation() const
Returns the rotation component.
Definition: transform.h:187
GF_API GfTransform & Set(const GfVec3d &scale, const GfRotation &pivotOrientation, const GfRotation &rotation, const GfVec3d &pivotPosition, const GfVec3d &translation)
Sets the transformation from all component values.
const GfRotation & GetScaleOrientation() const
Returns the scale orientation component.
Definition: transform.h:182
void SetScaleOrientation(const GfRotation &pivotOrient)
Sets the pivot orientation component, leaving all others untouched.
Definition: transform.h:147
void SetRotation(const GfRotation &rotation)
Sets the rotation component, leaving all others untouched.
Definition: transform.h:152
GfTransform(const GfMatrix4d &m)
This constructor initializes the transformation with a matrix.
Definition: transform.h:101
bool operator!=(const GfTransform &xf) const
Component-wise transform inequality test.
Definition: transform.h:217
const GfVec3d & GetPivotPosition() const
Returns the pivot position component.
Definition: transform.h:192
const GfVec3d & GetTranslation() const
Returns the translation component.
Definition: transform.h:202
GfTransform()
The default constructor sets the component values to the identity transformation.
Definition: transform.h:75
GF_API GfMatrix4d GetMatrix() const
Returns a GfMatrix4d that implements the cumulative transformation.
const GfVec3d & GetScale() const
Returns the scale component.
Definition: transform.h:172
void SetPivotPosition(const GfVec3d &pivPos)
Sets the pivot position component, leaving all others untouched.
Definition: transform.h:157
void SetPivotOrientation(const GfRotation &pivotOrient)
Sets the pivot orientation component, leaving all others untouched.
Definition: transform.h:142
Basic type for a vector of 3 double components.
Definition: vec3d.h:63
GF_API std::ostream & operator<<(std::ostream &, const GfBBox3d &)
Output a GfBBox3d using the format [(range) matrix zeroArea].