def velocity(self, pnt: Vector): r = pnt ra = self.pnta rb = self.pntb a = r - ra b = r - rb am = a.return_magnitude() bm = b.return_magnitude() vel = Vector(0.0, 0.0, 0.0) if pnt != self.pnti: axb = a**b if axb.return_magnitude() != 0.0: den = am * bm + a * b vel += axb / den * (1 / am + 1 / bm) axx = Vector(0.0, a.z, -a.y) if axx.return_magnitude() != 0.0: den = am - a.x vel += axx / den / am bxx = Vector(0.0, b.z, -b.y) if bxx.return_magnitude() != 0.0: den = bm - b.x vel -= bxx / den / bm vel = vel / fourPi return vel
def set_hinge_vector(self, hvec: Vector): if hvec.return_magnitude() != 0.0: self.uhvec = hvec.to_unit() else: self.uhvec = hvec