private void DistanceToCenterLine_CorrectDistanceComputed() { var r = 5; var pos = new Vector3(0, 0, 100); var primaryParticle = new PrimaryParticle(0, pos, r); var neighborPosposition = new[] { 1.0, 1.0 }; var dist = primaryParticle.GetDistanceToVerticalAxis(neighborPosposition); Assert.Equal(Math.Sqrt(2), dist); }
internal static double Get1DDistanceToNeighbor(PrimaryParticle primaryParticle, PrimaryParticle neighbor) { var distanceToCenterline = primaryParticle.GetDistanceToVerticalAxis(neighbor); var combinedRadius = neighbor.Radius + primaryParticle.Radius; // If the neighbor is close but it won't be hit during deposition return max deposition distance if (distanceToCenterline > combinedRadius) { return(primaryParticle.Position.Z - primaryParticle.Radius); } var extraHeight = Math.Sqrt(Math.Pow(combinedRadius, 2) - Math.Pow(distanceToCenterline, 2)); var distance = primaryParticle.Position.Z - neighbor.Position.Z - extraHeight; return(distance); }