protected override Intersection[] GetBaseIntersections(Ray ray) { var leftIntersections = left.GetIntersections(ray); var rightIntersections = right.GetIntersections(ray); var allIntersections = SharedUtils.JoinArrays(leftIntersections, rightIntersections); if (allIntersections == null) { return(null); } Array.Sort(allIntersections, (a, b) => { if (a.t != b.t) { return(Comparer <double> .Default.Compare(a.t, b.t)); } return(Comparer <IFigure> .Default.Compare(a.figure, b.figure)); }); return(FilterIntersections(allIntersections)); }
protected override Intersection[] GetBaseIntersections(Ray ray) { return(SharedUtils.JoinArrays(GetConeIntersections(ray), GetCapsIntersections(ray))); }