Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }