From: Ian Jackson Date: Sun, 26 Nov 2017 16:24:48 +0000 (+0000) Subject: helixish: bugfixes X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=ae1f9f73aa20e59f39ff011d0e0eb1d35d2fa653;p=moebius3.git helixish: bugfixes Signed-off-by: Ian Jackson --- diff --git a/helixish.py b/helixish.py index d1f9ff6..c5c30d7 100644 --- a/helixish.py +++ b/helixish.py @@ -8,6 +8,8 @@ import sys from moedebug import dbg from moenp import * +from math import atan2 + import symbolic def augment(v): return np.append(v, 1) @@ -43,11 +45,11 @@ class HelixishCurve(): dPQplane_normal += [0, 0, 1E5] dPQplane_normal = unit_v(dPQplane_normal) - dPQplane_basis = np.column_stack(np.cross(dp, dPQplane_normal), - dp, - dPQplane_normal, - p); - dPQplane_basis = np.vstack(dPQplane_basis, [0,0,0,1]) + dPQplane_basis = np.column_stack((np.cross(dp, dPQplane_normal), + dp, + dPQplane_normal, + p)); + dPQplane_basis = np.vstack((dPQplane_basis, [0,0,0,1])) dPQplane_into = np.linalg.inv(dPQplane_basis) dp_plane = unaugment(dPQplane_into * augment0(dp)) @@ -58,9 +60,9 @@ class HelixishCurve(): # two circular arcs of equal maximum possible radius # algorithm courtesy of Simon Tatham (`Railway problem', # pers.comm. to ijackson@chiark 23.1.2004) - railway_angleoffset = atan2(*q_plane[0:1]) + railway_angleoffset = atan2(*q_plane[0:2]) railway_theta = tau/4 - railway_angleoffset - railway_phi = atan2(*dq_plane[0:1]) - railway_angleoffset + railway_phi = atan2(*dq_plane[0:2]) - railway_angleoffset railway_cos_theta = cos(railway_theta) railway_cos_phi = cos(railway_phi) if railway_cos_theta**2 + railway_cos_phi**2 > 1E6: