Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Закрытая тема
 
Опции темы
Старый 21.12.2007, 19:48   #1
jimon
 
Сообщений: n/a
случайная точка внутри кривосторонего треугольника

собсно вот :


надо равномерное распределение полученых точек
ps. кривая сторона может быть и не гиперболой .. просто кривая
по форме идентична той что на рисунке
 
Старый 21.12.2007, 19:51   #2
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: случайная точка внутри кривосторонего треугольника

Надо знать уравнение гиперболы. Если же оно неизвестно, как вариант, можно заполнить нужную область какими-то данными (одним цветом). Затем построить апроксимирующую кривую - можно просто прямую, чтобы получился треугольник. И проверять цвет в полученной точке. Если не попал, выбираешь новую точку.
Если уравнение задано, должно быть понятно, как делать.
(Offline)
 
Старый 21.12.2007, 20:33   #3
jimon
 
Сообщений: n/a
Re: случайная точка внутри кривосторонего треугольника

хм, ладно можно значит немного упростить случай
разбить параболу на прямые линии и проводить расчет с етой
областью

.................
в общем разобрался : (если кривая заданна f(x) )

x = rand(x0,x1)
y = rand(f(x-x0)+y0,y1)

осталось подобрать такую кривую
 
Старый 21.12.2007, 21:23   #4
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: случайная точка внутри кривосторонего треугольника

f(x) = -a/x не катит типа?)
(Offline)
 
Старый 21.12.2007, 21:55   #5
jimon
 
Сообщений: n/a
Re: случайная точка внутри кривосторонего треугольника

alcoSHoLiK
не катит типа
 
Старый 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)
 
Старый 21.12.2007, 22:14   #7
jimon
 
Сообщений: n/a
Re: случайная точка внутри кривосторонего треугольника

вот примерно то что мне надо
Graphics 800,600,0,0

Global x0# = 200
Global y0# = 100
Global x1# = 400
Global y1# = 300

Function f(x#)
If x < (x1-x0)/1.5 Then 
	Return x - x/2
Else
	Return x - ((x1-x0)-x)
End If
End Function


While Not (KeyHit(key_escape) Or AppTerminate())

SetColor 255,255,255
DrawLine  x1,y0,x1,y1
DrawLine  x0,y1,x1,y1

SetColor 128,128,128
For x# = x0 To x1

DrawRect x,-f(x-x0)+y1,1,1

Next

x# = Rand(x0,x1)
y# = Rand(-f(x-x0)+y1,y1)

SetColor 255,0,0
DrawRect x,y,1,1

Flip

Wend
всем спасибо, все свободны
 
Старый 22.12.2007, 00:30   #8
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: случайная точка внутри кривосторонего треугольника

ИМХО сначала следует вычислить случайную точку в пределах прямоугольника (0,высота фигуры, 0, -ширина фигуры), а затем проверить, принадлежит ли она этому эмм, треугольнику, и только если принадлежит, то рисовать её - хоть это и не слишком-то рационально, но зато поможет избавиться от скопления точек в левой части фигуры.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Старый 22.12.2007, 00:49   #9
jimon
 
Сообщений: n/a
Re: случайная точка внутри кривосторонего треугольника

ABTOMAT
это тупо, перечитай тему
 
Закрытая тема


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменные, процедуры и функции внутри большого проекта Skythrone Прочие вопросы 1 30.10.2008 11:22
Случайная расстановка кубиков Fant 3D-программирование 8 29.12.2005 11:09


Часовой пояс GMT +4, время: 14:20.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com