sclass OnePathWithOrigin > OnePath { settable Pt origin = pt(0, 0); *() {} *(S path) { super(path); } *(Pt *origin, S path) { super(path); } *(Iterable points, bool close) { l = asList(points); origin = first(l); fromPoints(l, close); var it = iterator(points); if (empty(it)) ret; Pt firstPoint = it.next(), p = firstPoint; while (it.hasNext()) { Pt p2 = it.next(); steps.add(ptToDigit(ptMinus(p2, p))); p = p2; } if (close) steps.add(ptToDigit(ptMinus(firstPoint, p))); } toString { ret origin + " " + super.toString(); } }