У меня есть полигон (Hex для настольной игры) в Silverlight, что-то вроде;
public class GridHex : IGridShape
{
.....
public IList<Point> Points { get; protected set; }
public bool Intersects(Point point) { ... }
}
Я бы хотел сказать
if(myHex.Intersects(clickedPoint)) { ... }
Однако я не уверен, какой алгоритм использовать в методе Intersects - в настоящее время я использую внутреннюю «ограничивающую рамку» внутри каждого шестиугольника, чтобы определить, находится ли в нем точка, но для ее расчета необходим алгоритм из? Я знаю координаты для 6 точек каждого шестиугольника.
Я думал, что смогу создать полигон Silverlight и провести какое-нибудь тестирование на попадание? Конечно, это будет довольно интенсивно использовать память (я бы итерировал большое количество гексов, чтобы увидеть, в какой гекс попадает щелчок мыши ...), поэтому может быть лучше использовать математическую формулу для определения, находится ли точка в пределах Хекс ....