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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 12.12.2007, 16:58   #1
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Геометрия в Blitz3D

Я в геометрии вовсем дурак, а учебника под рукой нет (да и не было никогда ). Так вот: есть квадрат размером, например, 30x30. В него вписан круг. Нужно, чтобы бейсик выдавал случайным образом координаты, которые находятся внутри этого круга (т.е. X и Y)
(Offline)
 
Ответить с цитированием
Старый 12.12.2007, 17:08   #2
jimon
 
Сообщений: n/a
Re: Геометрия в Blitz3D

r = 30
x = rand(0,r)
y = (rand(0,1)*2-1)* sqr((r*r)/4 - x*x)
 
Ответить с цитированием
Старый 12.12.2007, 17:15   #3
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: Геометрия в Blitz3D

jimon, ты не мог бы немного ояснить сиё действо (мне самому интересно стало)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

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

(Offline)
 
Ответить с цитированием
Старый 12.12.2007, 17:22   #4
jimon
 
Сообщений: n/a
Re: Геометрия в Blitz3D

уравнение круга X*X + Y*Y = R*R
получаем X по диаметру - тоесть от -R до R,или от 0 до 30 в нашем случае

выражаем Y из уравнения круга
|Y| = sqr ( R*R - X*X)
снимаем модуль с помощью случайности

Y = (rand(0,1)*2-1) * sqr( R*R - X*X )
( rand(0,1)*2-1 всегда возращает 1 или -1 )

* да кстати корень забыл, ужо исправил
 
Ответить с цитированием
Старый 12.12.2007, 17:36   #5
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Геометрия в Blitz3D

Сообщение от jimon
r = 30
x = rand(0,r)
y = (rand(0,1)*2-1)* sqr((r*r)/4 - x*x)
r=20
x=Rand(0,r)
y=(Rand(0,1)*2-1)*Sqr((r*r)/4-x*x)

Не работает. Попробуй в цикле посмотреть, что за цифры он выдает. SeeRnd я делал.
(Offline)
 
Ответить с цитированием
Старый 12.12.2007, 17:57   #6
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Геометрия в Blitz3D

Можно просто параметризировать круг.
t = fixed
x = R * cos(t)
y = R * sin(t)

//////////////////////////////////////////////
Graphics 400, 400, 0, 2

Const R = 30
Const N = 1000


For i = 0 To N
	t = Rand(0, 360)
	Plot 200 + (Rand(0, R) * Cos(t)), 200 + (Rand(0, R) * Sin(t))
Next

WaitKey()

End
(Offline)
 
Ответить с цитированием
Старый 12.12.2007, 18:01   #7
jimon
 
Сообщений: n/a
Re: Геометрия в Blitz3D

вот исправленый вариант

d = 30
x = Rand(0,d)
y = Sqr((d*d)/4 - (x-d/2)*(x-d/2))*(Rand(0,1)*2-1)+d/2
теперь провереный

ps. вариант Шолика лутче подходит имхо
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Геометрия HolyDel Алгоритмика 17 30.11.2011 15:10
нужна помощь,геометрия. kortesfil 3D-программирование 3 25.09.2007 08:46
!Геометрия! Очень нужна помощь! c0mrad Болтовня 6 12.05.2007 22:34
Геометрия alcoSHoLiK Загадки 9 05.12.2006 19:04
Неэвклидовая геометрия alcoSHoLiK Математика 0 14.07.2006 00:57


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


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