Can you submit this as a pull request? Even if it's just an inprogress
patch it's much easier to comment on a change in a pull request
because GitHub shows the diff, and Travis runs the test suite on the
change.

Aaron Meurer

On Mon, Dec 11, 2017 at 5:03 PM, Aaron Shatters
<[email protected]> wrote:
> How about this (edit if vector/point.py):
>
> def _pdict_lists(self, other, num):
>     """Creates a list of lists from self to other using _pos_dict. """
>     outlist = [[self]]
>     oldlist = [[]]
>     while outlist != oldlist:
>         oldlist = outlist[:]
>         for i, v in enumerate(outlist):
>             templist = v[-1]._pdlist[num].keys()
>             for i2, v2 in enumerate(templist):
>                 if not v.__contains__(v2):
>                     littletemplist = v + [v2]
>                     if not outlist.__contains__(littletemplist):
>                         outlist.append(littletemplist)
>     for i, v in enumerate(oldlist):
>         if v[-1] != other:
>             outlist.remove(v)
>     outlist.sort(key=len)
>     if len(outlist) != 0:
>         return outlist
>     raise ValueError('No Connecting Path found between ' + other.name +
>                      ' and ' + self.name)
>
> def _pdict_list(self, other, num):
>     """Creates a list from self to other using _pos_dict. """
>     return self._pdict_lists(other, num)[0]
>
> def pos_from(self, otherpoint, singleframe=False, frame=None,
> variables=False):
>     """Returns a Vector distance between this Point and the other Point.
>
>     Parameters
>     ==========
>
>     otherpoint : Point
>         The otherpoint we are locating this one relative to
>     singleframe : boolean
>         Expresses the resulting vector in a single frame
>     frame : ReferenceFrame
>         Expresses the resulting vector in this frame
>     variables : boolean
>         If True, the coordinate symbols(if present) in the resulting Vector
>         are re-expressed in terms the resulting frame (if singleframe is
> True
>         or frame is given)
>
>     Examples
>     ========
>
>     >>> from sympy.physics.vector import Point, ReferenceFrame
>     >>> N = ReferenceFrame('N')
>     >>> p1 = Point('p1')
>     >>> p2 = Point('p2')
>     >>> p1.set_pos(p2, 10 * N.x)
>     >>> p1.pos_from(p2)
>     10*N.x
>
>     """
>     if frame is not None:
>         _check_frame(frame)
>
>     last_error = None
>
>     plists = self._pdict_lists(otherpoint, 0)
>
>     for plist in plists:
>         outvec = Vector(0)
>         for i in range(len(plist) - 1):
>             outvec += plist[i]._pos_dict[plist[i + 1]]
>
>         # 0 Vector
>         if len(outvec.args) == 0:
>             return outvec
>
>         try:
>             if frame is not None:
>                 # Express in the given frame
>                 outvec = outvec.express(frame, variables=variables)
>             elif singleframe:
>                 # Express in a single frame
>                 outvec = outvec.express(outvec.args[0][1],
> variables=variables)
>             return outvec
>
>         except ValueError as e:
>             last_error = e
>             continue
>
>     raise last_error
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/sympy.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/24c366d0-6386-4603-abe3-47a74be36a32%40googlegroups.com.
>
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAKgW%3D6LJ0OM2CqyaGnkRcSo36Kg_zvoBgbkvmQ6GfpophtWTAA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to