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

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

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

Математика Методы математического моделлирования, программирование математических концепций, роль математики в создании игр

Ответ
 
Опции темы
Старый 23.02.2007, 16:09   #1
Phoenix
Оператор ЭВМ
 
Регистрация: 31.12.2006
Сообщений: 41
Написано 0 полезных сообщений
(для 0 пользователей)
Формулы виграх

пишу я на Дарк бейсике , но формулы беруться практически одни и теже ..
Я вот тут застрял , хочу написать игрушку в стиле "кримслонда" даже нашёл формулу на Дельфи


Нахождение угла между осью OY и точкой
  • x1,y1 - координаты, допустим, курсора мыши.
  • x2,y2 - координаты точки относительно которой нужно найти угол (например координаты игрока в Crimsonland).
  • На выходе получаем угол в градусах.
function getAng(x1, y1, x2, y2: integer): double;
var
hyp, kat1, kat2: single;
begin
hyp := sqrt(sqr(y1 - y2) + sqr(x1 - x2)); //посчитаем гипотенузу
kat1 := x2 - x1; //посчитаем катет 1
kat2 := y1 - y2; //посчитаем катет 2
if kat2 >= 0 then
begin
if hyp <> 0 then result := radtodeg(arcsin(kat1 / hyp)) //чтобы избежать деления на 0
end
else
if hyp <> 0 then result := 180 - radtodeg(arcsin(kat1 / hyp)); //чтобы избежать деления на 0
if result > 90 then result := result - 90 else result := 270 + result; //Смещаем начало круга на 90 градусов (поскольку
//не совпадает со стандатной системой)
end;

Вроди бы немного принцип понял , но переведя код в бейсик , работает как попало , что здесь может быть не так , помогите

Вот мой код бейсика......
x=100
y=120
aaa:

cls
set cursor 8,8 : print "Угол ",res#

mx=mousex()
my=mousey()
hyp# = sqrt(sqrt(my-y)+sqrt(mx-x))
kat1# = x-mx
kat2# = my-y
if kat2# >= 0 then if hyp# <> 0 then res# =(asin(kat1#/hyp#))*180/3.14: goto bbb:
if hyp# <> 0 then res# = 180 - (asin(kat1#/hyp#))*180/3.14
bbb:
if res# > 90 then res# = res# - 90
if res# < 90 then res# = 270 + res#
goto aaa


Буду очень благодарен за помощ
(Offline)
 
Ответить с цитированием
Старый 23.02.2007, 16:23   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Формулы виграх

а функции арктангенса в ДБ нет?
(Offline)
 
Ответить с цитированием
Старый 23.02.2007, 16:41   #3
Phoenix
Оператор ЭВМ
 
Регистрация: 31.12.2006
Сообщений: 41
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Формулы виграх

есть !
ATAN()
Эта команда возвращает арктангенс числа. Возвращаемое значение является вещественным числом.
(Offline)
 
Ответить с цитированием
Старый 23.02.2007, 17:46   #4
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Формулы виграх

На рисунке показано, как найти угол между двумя точками - A и C. Для этого строим воображаемый прямоугольный треугольник. Определяемся, какой угол нам нужно найти - альфа или бета.

Зная координаты точек A и C, мы можем найти стороны треугольника AB и BC. Затем, чтобы найти угол альфа, нужно взять арктангенс от выражения
BC / AB
Для угла бета соответственно
AB / BC
(Offline)
 
Ответить с цитированием
Старый 23.02.2007, 18:55   #5
Phoenix
Оператор ЭВМ
 
Регистрация: 31.12.2006
Сообщений: 41
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Формулы виграх

Сообщение от alcoSHoLiK
На рисунке показано, как найти угол между двумя точками - A и C. Для этого строим воображаемый прямоугольный треугольник. Определяемся, какой угол нам нужно найти - альфа или бета.
Огромное спасибо за понятие как оно должно работать , но хотелось бы разобраться в своём коде на бейсике , в алгебре я не селён и знаю что многое потерял , со временем наверстаю если апокалипсис не настанет
(Offline)
 
Ответить с цитированием
Старый 24.02.2007, 00:01   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Формулы виграх

Да нужно было мне тоже однажды найти такую формулу. Нашёл. =)
Но: она находит угол из 2 значений nx и ny. Тоесть у меня была стрела, которая двигалась в определённом направлении, и зная на сколько она сдвигалась каждый цикл, или промежуток времени, я вычислял угол:

[blitz]If ny>0
tmp=90
Else
tmp=270
EndIf
Angle=tmp+ATan(nx/ny)[/blitz]
Надеюсь без ошибок, там было или nx/ny или ny/nx. Ну сам посмотришь.
(Offline)
 
Ответить с цитированием
Старый 24.02.2007, 00:16   #7
Тарас Шевченко
Знающий
 
Регистрация: 17.08.2006
Сообщений: 246
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Формулы виграх

Phoenix а тебе не кажется, что это мягко не для дарка раздел.
(Offline)
 
Ответить с цитированием
Старый 24.02.2007, 13:50   #8
Phoenix
Оператор ЭВМ
 
Регистрация: 31.12.2006
Сообщений: 41
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Формулы в играх

Сообщение от Тарас Шевченко
Phoenix а тебе не кажется, что это мягко не для дарка раздел.
Blitz и DarkBasic по кодингу почти одинаковы , да и вообще как ты заметитл выше приведённые примеры были написаны на паскале ... В этой теме имеется формула , и неважно в какой язык ты её переведёшь , переведи в Блитз , мне даже легше разобраться будет .. конечно если помочь хочешь....
Реально я заметил что есть раздел для формул , но заметил я это пожже , если админ или модератор перенесут тему , буду только блогодарен.

MoKaДа нужно было мне тоже однажды найти такую формулу. Нашёл. =)
Но: она находит угол из 2 значений nx и ny. Тоесть у меня была стрела, которая двигалась в определённом направлении, и зная на сколько она сдвигалась каждый цикл, или промежуток времени, я вычислял угол:

Код If ny>0
tmp=90
Else
tmp=270
EndIf
Angle=tmp+ATan(nx/ny)


Надеюсь без ошибок, там было или nx/ny или ny/nx. Ну сам посмотришь.
Спасибо , щас гляну , пожже отпишусь...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Любопытные формулы impersonalis Алгоритмика 31 22.05.2010 15:51
Формулы в ТурбоПаскале Trazzy Математика 13 13.10.2009 02:00
Упрощение формулы) Unodeya 3D-программирование 3 07.06.2009 00:20


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


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