Just for lulz.
Ну, если принципиально не хочется генерировать рандомные точки наугад, можно попробовать еще такую наркоманию.
1) Генерируем рандомную точку в пределах описывающего квадрата Xmax, Ymax.
2) Если эта точка в многоугольнике - задача решена.
3) Иначе, берем фиксированную точку, 100% находящуюся внутри многоугольника, желательно как можно дальше от всех сторон. Можно определить ее заранее один раз.
4) Проводим прямую из фиксированной точки в рандомную и находим точки пересечения со сторонами многоугольника. Находим расстояние от нашей рандомной точки до ближайшей точки пересечения (т.е. до "входа" в многоугольник, если двигаться по прямой через фиксированную точку) и до следующей за ней (т.е. до "выхода"). После этого генерируем рандомную точку в этом диапазоне.
Задача становится детерменированной - 2 вызова рандома и немного расчетов. Хотя я сам думаю, что это треш.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
|