public double GetDistTo(IParticle2D particle) { double deltX = X - particle.X; double deltY = Y - particle.Y; return(Math.Sqrt(deltX * deltX + deltY * deltY)); }
/// <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()); }
public Vector2D GetNormalToMe(IParticle2D fromMe) { return(GetNormalToMe(fromMe.Vec2D)); }
/// <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)); }
/// <summary> /// Вычисляет индекс ячейки (строку) в сетке CellNet, подходящей для частицы /// </summary> /// <param name="particle"></param> /// <returns></returns> int GetHashYInd(IParticle2D particle) { return((int)Floor((particle.Y - ymin) / hmax)); }
/// <summary> /// Вычисляет индекс ячейки (колонку) в сетке CellNet, подходящей для частицы /// </summary> /// <param name="particle"></param> /// <returns></returns> int GetHashXInd(IParticle2D particle) { return((int)Floor((particle.X - xmin) / hmax)); }