From: Ian Jackson Date: Mon, 6 Nov 2017 13:31:54 +0000 (+0000) Subject: introduce MoebiusHalf.normal (nfc) X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=e0c023e2e69d09d968dc436c5c371f05f5581166;p=moebius3.git introduce MoebiusHalf.normal (nfc) Signed-off-by: Ian Jackson --- diff --git a/moebius.py b/moebius.py index 3cea68d..ae55a3a 100644 --- a/moebius.py +++ b/moebius.py @@ -114,21 +114,27 @@ class MoebiusHalf: ''' return np.array(m._beziers[iu].point_at_t(t)) - def point_offset(m, iu, t, offset): - ''' - offset by offset perpendicular to the surface - at the top (iu=t=0), in the y direction - ''' + def normal(m, iu, t): + '''at the top (iu=t=0), is +ve in the +ve y direction''' p = m.point(iu, t) if t == 0: dirn = m.edge.dirn(m._thetas[iu], extra_zeta=-tau/4) elif iu == m.nu: - return m.point_offset(0, t, offset) + return m.normal(0, t) else: vec_t = m.point(iu, t + 0.01) - p vec_u = m.point(iu+1, t) - p dirn = np.cross(vec_u, vec_t) - return p + offset * dirn / np.linalg.norm(dirn) + dirn = unit_v(dirn) + return dirn + + def point_offset(m, iu, t, offset): + ''' + offset by offset perpendicular to the surface + at the top (iu=t=0), +ve offset is in the +ve y direction + ''' + p = m.point(iu, t) + return p + offset * m.normal(iu, t) class Moebius(): def __init__(m, nv, nw):