'A parameterized point on the curve.
Parameters
parameter : str or Symbol, optional
Default value is \'t\';
the Curve\'s parameter is selected with None or self.parameter
otherwise the provided symbol is used.
Returns
arbitrary_point : Point
Raises
ValueError
When `parameter` already appears in the functions.
See Also
sympy.geometry.point.Point
Examples
>>> from sympy import Symbol
>>> from sympy.abc import s
>>> from sympy.geometry import Curve
>>> C = Curve([2*s, s**2], (s, 0, 2))
>>> C.arbitrary_point()
Point2D(2*t, t**2)
>>> C.arbitrary_point(C.parameter)
Point2D(2*s, s**2)
>>> C.arbitrary_point(None)
Point2D(2*s, s**2)
>>> C.arbitrary_point(Symbol(\'a\'))
Point2D(2*a, a**2)'

def arbitrary_point(self, parameter='t'):

    if (parameter is None):
        return Point(*self.functions)
    tnew = _symbol(parameter, self.parameter)
    t = self.parameter
    if ((tnew.name != t.name) and (tnew.name in (f.name for f in self.free_symbols))):
        raise ValueError(('Symbol    %s    already    appears    in    object    and    cannot    be    used    as    a    parameter.' % tnew.name))
    return Point(*[w.subs(t, tnew) for w in self.functions])
