double VectFuns::distAtTau(const Vect3& s, const Vect3& vo, const Vect3& vi, bool futureOnly) { double tau = VectFuns::tau(s,vo,vi); if (tau < 0 && futureOnly) return s.norm(); // return distance now else { Vect3 v = vo.Sub(vi); Vect3 sAtTau = s.Add(v.Scal(tau)); return sAtTau.norm(); } }
// f should be between 0 and 1 to interpolate Vect3 VectFuns::interpolate(const Vect3& v1, const Vect3& v2, double f) { Vect3 dv = v2.Sub(v1); return v1.Add(dv.Scal(f)); }