Skip to content

Commit 7b4c795

Browse files
authored
Merge pull request #1360 from compas-dev/fix-transformations
Fix transformations
2 parents b7111f2 + 4ba6b5e commit 7b4c795

File tree

4 files changed

+20
-35
lines changed

4 files changed

+20
-35
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3434

3535
* Changed `compas_ghpython/utilities/drawing.py` to remove `System` dependency.
3636
* Fixed bug in `compas.geometry.ic_numpy`, which was caused by returning only the last transformation of the iteration process.
37+
* Changed `compas.geometry.Geometry.scaled` to use `compas.geometry.Geometry.scale` on a copy.
38+
* Changed `compas.geometry.Geometry.translated` to use `compas.geometry.Geometry.translate` on a copy.
39+
* Changed `compas.geometry.Geometry.rotated` to use `compas.geometry.Geometry.rotate` on a copy.
3740
* Changed `VolMesh._plane` back to point to a cell for every triplet of vertices.
3841
* Fixed `VolMesh.add_halfface`, `VolMesh.add_cell`, `VolMesh.vertex_halffaces`, `VolMesh.vertex_cells`, `VolMesh.edge_halffaces`, `VolMesh.halfface_cell`, `VolMesh.halfface_opposite_cell`, `VolMesh.halfface_opposite_halfface`, `VolMesh.cell_neighbors`.
3942
* Changed ordering of `Volmesh.edges()` to be deterministic.

src/compas/data/conftest.py

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/compas/geometry/_core/_algebra.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1496,13 +1496,6 @@ def decompose_matrix(M):
14961496
for j in range(4):
14971497
Mt[i][j] /= Mt[3][3]
14981498

1499-
translation = [M[0][3], M[1][3], M[2][3]]
1500-
1501-
# scale, shear, angles
1502-
scale = [0.0, 0.0, 0.0]
1503-
shear = [0.0, 0.0, 0.0]
1504-
angles = [0.0, 0.0, 0.0]
1505-
15061499
# copy Mt[:3, :3] into row
15071500
row = [
15081501
[0, 0, 0],
@@ -1513,6 +1506,14 @@ def decompose_matrix(M):
15131506
for j in range(3):
15141507
row[i][j] = Mt[i][j]
15151508

1509+
# translation
1510+
translation = [M[0][3], M[1][3], M[2][3]]
1511+
1512+
# scale, shear, angles
1513+
scale = [0.0, 0.0, 0.0]
1514+
shear = [0.0, 0.0, 0.0]
1515+
angles = [0.0, 0.0, 0.0]
1516+
15161517
scale[0] = norm_vector(row[0])
15171518
for i in range(3):
15181519
row[0][i] /= scale[0] # type: ignore

src/compas/geometry/geometry.py

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -169,15 +169,9 @@ def scaled(self, x, y=None, z=None): # type: (...) -> G
169169
transformed
170170
171171
"""
172-
from compas.geometry import Scale
173-
174-
if y is None:
175-
y = x
176-
177-
if z is None:
178-
z = x
179-
180-
return self.transformed(Scale.from_factors([x, y, z]))
172+
geometry = self.copy() # type: Geometry
173+
geometry.scale(x=x, y=y, z=z)
174+
return geometry # type: ignore
181175

182176
def translate(self, vector):
183177
"""Translate the geometry.
@@ -224,9 +218,9 @@ def translated(self, vector): # type: (...) -> G
224218
transformed
225219
226220
"""
227-
from compas.geometry import Translation
228-
229-
return self.transformed(Translation.from_vector(vector))
221+
geometry = self.copy() # type: Geometry
222+
geometry.translate(vector)
223+
return geometry # type: ignore
230224

231225
def rotate(self, angle, axis=None, point=None):
232226
"""Rotate the geometry.
@@ -288,9 +282,6 @@ def rotated(self, angle, axis=None, point=None): # type: (...) -> G
288282
transformed
289283
290284
"""
291-
from compas.geometry import Rotation
292-
293-
if axis is None:
294-
axis = [0.0, 0.0, 1.0]
295-
296-
return self.transformed(Rotation.from_axis_and_angle(axis, angle, point))
285+
geometry = self.copy() # type: Geometry
286+
geometry.rotate(angle=angle, axis=axis, point=point)
287+
return geometry # type: ignore

0 commit comments

Comments
 (0)