コード例 #1
0
        public double GetDistTo(IParticle2D particle)
        {
            double deltX = X - particle.X;
            double deltY = Y - particle.Y;

            return(Math.Sqrt(deltX * deltX + deltY * deltY));
        }
コード例 #2
0
        /// <summary>
        /// Показывает, находится ли точка в окрестности отрезка
        /// </summary>
        /// <param name="particle"></param>
        /// <param name="h"></param>
        /// <returns></returns>
        public bool CloseToMe(IParticle2D particle, double h)
        {
            var H = GetNormalToMe(particle);

            if (H.GetLength() > h)
            {
                return(false);
            }

            var normalGlobal = H + particle.Vec2D;
            var vHloc        = normalGlobal - p1;
            var p2loc        = p2 - p1;
            var vdelta       = p2loc.Norm * h;

            vHloc += vdelta;
            p2loc += 2 * vdelta;
            return(p2loc * vHloc > 0 && p2loc.GetLengthSquared() > vHloc.GetLengthSquared());
        }
コード例 #3
0
 public Vector2D GetNormalToMe(IParticle2D fromMe)
 {
     return(GetNormalToMe(fromMe.Vec2D));
 }
コード例 #4
0
 /// <summary>
 /// Подходит ли частица к этой ячейке?
 /// Находится ли частица в пространстве ячейки?
 /// </summary>
 /// <param name="particle"></param>
 /// <returns></returns>
 bool GoodParticle(IParticle2D particle)
 {
     return(!(particle.X < X0 || particle.X >= X1 ||
              particle.Y < Y0 || particle.Y >= Y1));
 }
コード例 #5
0
 /// <summary>
 /// Вычисляет индекс ячейки (строку) в сетке CellNet, подходящей для частицы
 /// </summary>
 /// <param name="particle"></param>
 /// <returns></returns>
 int GetHashYInd(IParticle2D particle)
 {
     return((int)Floor((particle.Y - ymin) / hmax));
 }
コード例 #6
0
 /// <summary>
 /// Вычисляет индекс ячейки (колонку) в сетке CellNet, подходящей для частицы
 /// </summary>
 /// <param name="particle"></param>
 /// <returns></returns>
 int GetHashXInd(IParticle2D particle)
 {
     return((int)Floor((particle.X - xmin) / hmax));
 }