From b0ef2ecc8467319f27fd5de45c0bc9906013147b Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 28 Apr 2011 22:08:31 +0200 Subject: host/simu: add transformation matrix push/pop --- host/simu/utils/trans_matrix.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'host/simu/utils') 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__ () -- cgit v1.2.3