From 3143f02f27e92c9d3475485e706bce8ffd73b6b3 Mon Sep 17 00:00:00 2001 From: Antonio Ospite Date: Wed, 27 Jun 2018 15:23:47 +0200 Subject: [PATCH] trihexaflexagon: improve get_angle_in_plan_relative_to_hexagon() Instead of doing some arcane calculation, do what the function is meant to do: calculate an angle relative to another angle.. This also makes the code more robust in the case the calculation of the other angles should change for some reason. Leave the explicit formula in the comment as documentation. --- src/flexagon/trihexaflexagon.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/flexagon/trihexaflexagon.py b/src/flexagon/trihexaflexagon.py index faf4d90..7bd4f72 100755 --- a/src/flexagon/trihexaflexagon.py +++ b/src/flexagon/trihexaflexagon.py @@ -44,12 +44,22 @@ class Triangle(object): def get_angle_in_plan_relative_to_hexagon(self): """"Get the angle of the triangle in the plan relative to the rotation of the same triangle in the hexagon.""" - # The meaning of the formula regarding the index is the following: + # The explicit formula for this angle would be: + # + # pi + pi / 6 + (((self.index + 1) % 6) // 2) * pi * 2 / 3 + # + # The meaning of the part regarding the index is the following: # - rotate the indices by 1 # - group by 2 (because couples of triangles move together in the # plan) # - multiply the group by a rotation factor - return pi + pi / 6 + (((self.index + 1) % 6) // 2) * pi * 2 / 3 + # + # The explicit formula shows clearly that triangles move in groups of + # 2 in the plan. + # + # However, use an implicit form for robustness, so that if the other + # angle functions change this one can be left untouched. + return self.get_angle_in_hexagon() - self.get_angle_in_plan() def get_angle_in_hexagon(self): """Get the angle of the triangle in the hexagons. -- 2.1.4