public Tuple <double, double> Angle_point() { double x1 = A.GetPoint().X - B.GetPoint().X, x2 = C.GetPoint().X - B.GetPoint().X; double y1 = A.GetPoint().Y - B.GetPoint().Y, y2 = C.GetPoint().Y - B.GetPoint().Y; var d1 = Math.Sqrt(x1 * x1 + y1 * y1); var d2 = Math.Sqrt(x2 * x2 + y2 * y2); var anl = Math.Acos((x1 * x2 + y1 * y2) / (d1 * d2)) * 180 / Math.PI; return(Tuple.Create(anl, (x1 * x2 + y1 * y2) / (d1 * d2))); }
private IEnumerable <int> FindTouchedList(PointListItem self) { var res = new List <int>(); if (self == null) { return(res); } var nbs = m_OrigItems.OrderBy(x => x.GetDistance(self.GetPoint())).Take(4).ToList(); foreach (var itm in nbs) { if (self.IsTouched(itm)) { res.Add(itm.Id()); } } return(res); }
public bool IsTouched(PointListItem a) { return(GetDistance(a.GetPoint()) - (m_Radius + a.GetRadius()) < 5); }