summaryrefslogtreecommitdiff
path: root/host/simu/utils/trans_matrix.py
diff options
context:
space:
mode:
Diffstat (limited to 'host/simu/utils/trans_matrix.py')
-rw-r--r--host/simu/utils/trans_matrix.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/host/simu/utils/trans_matrix.py b/host/simu/utils/trans_matrix.py
index 99ffe707..12bc7b35 100644
--- a/host/simu/utils/trans_matrix.py
+++ b/host/simu/utils/trans_matrix.py
@@ -47,6 +47,7 @@ class TransMatrix:
self.matrix = m
else:
self.matrix = self.IDENTITY
+ self.stack = [ ]
def identity (self):
"""Set to identity.
@@ -163,6 +164,25 @@ class TransMatrix:
vl = sqrt (v[0] ** 2 + v[1] ** 2)
return vl
+ def push (self):
+ """Save the current value to be poped later.
+
+ >>> a = TransMatrix ()
+ >>> a.translate ((2, 3)); a
+ ((1, 0), (0, 1), (2, 3))
+ >>> a.push ()
+ >>> a.scale (2); a
+ ((2, 0), (0, 2), (4, 6))
+ >>> a.pop ()
+ >>> a
+ ((1, 0), (0, 1), (2, 3))
+ """
+ self.stack.append (self.matrix)
+
+ def pop (self):
+ """Restore saved value, see push."""
+ self.matrix = self.stack.pop ()
+
def __repr__ (self):
return self.matrix.__repr__ ()