def point(self, t, segments=None):
<EOL>if len(self._elements) == <NUM_LIT:0>:<EOL><INDENT>raise PathError("<STR_LIT>")<EOL><DEDENT>if self._segments is None:<EOL><INDENT>self._segments = self._get_length(segmented=True, precision=<NUM_LIT:10>)<EOL><DEDENT>i, t, closeto = self._locate(t, segments=self._segments)<EOL>x0, y0 = self[i].x, self[i].y<EOL>p1 = self[i + <NUM_LIT:1>]<EOL>if p1.cmd == CLOSE:<EOL><INDENT>x, y = self._linepoint(t, x0, y0, closeto.x, closeto.y)<EOL>return PathElement(LINETO, x, y)<EOL><DEDENT>elif p1.cmd in (LINETO, MOVETO):<EOL><INDENT>x1, y1 = p1.x, p1.y<EOL>x, y = self._linepoint(t, x0, y0, x1, y1)<EOL>return PathElement(LINETO, x, y)<EOL><DEDENT>elif p1.cmd == CURVETO:<EOL><INDENT>x3, y3, x1, y1, x2, y2 = p1.x, p1.y, p1.ctrl1.x, p1.ctrl1.y, p1.ctrl2.x, p1.ctrl2.y<EOL>x, y, c1x, c1y, c2x, c2y = self._curvepoint(t, x0, y0, x1, y1, x2, y2, x3, y3)<EOL>return PathElement(CURVETO, c1x, c1y, c2x, c2y, x, y)<EOL><DEDENT>else:<EOL><INDENT>raise PathError("<STR_LIT>" % (p1.cmd, p1))<EOL><DEDENT>
Returns the PathElement at time t (0.0-1.0) on the path.

Returns coordinates for point at t on the path.
Gets the length of the path, based on the length of each curve and line in the path.
Determines in what segment t falls. Gets the point on that segment.
When you supply the list of segment lengths yourself, as returned from length(path, segmented=True),
point() works about thirty times faster in a for-loop since it doesn't need to recalculate
the length during each iteration.