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.
