Показать сообщение отдельно
Старый 21.12.2007, 21:57   #6
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: случайная точка внутри кривосторонего треугольника

Навскидку, тупейший вариант- это генерировать точки до тех пор, пока одна из них не попадёт внутрь фигуры.

REPEAT
 RndX=RND(FigWidth)
 RndY=RND(FigHeight)
 FigY=RndX^2 ;тут формула, описывающая криволинейную сторону твоей фигуры
UNTIL RndY>FigY
Более логичный- это генерировать сначала точку на абсциссе, а потом, скача от нее - строить соответствующую точку на ординате.
RndX=RND(FigWidth)
FigH#=RndX^2 ; тут- формула, описывающая твою кривую "гипотенузу"
RndY=RND(FigH)
P.S. Тут для простоты считается, что фигура лежит в начале координат- исправить для произвольного расположения не сложно. Методы ессно не заработают, если фигура будет повёрнута на произвольный угол, т.е. ёё координатная система не будет совпадать с глобальной... Хотя- заработают. Нужно будет просто заюзать Sin/Cos и "повернуть" глобальные координаты найденной точки на "локальный" угол поворота фигуры.
(Offline)