Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2003.08.28;
Скачать: [xml.tar.bz2];

Вниз

определение расстояния до объекта   Найти похожие ветки 

 
Andy Eremin   (2003-02-27 07:35) [0]

Уважаемы Мастера!
Как определять расстояние между множеством порожденных объектов, нахождение ближайшего?
Маленькая тонкость: я только-только начал изучать объеное программирование, поэтому пожалуйста объясните как для "чайника".


 
Mirovodin   (2003-02-27 11:03) [1]

Раздел "АНАЛИТИЧЕСКАЯ ГЕОМЕТРИЯ". Класс эдак 6-7...

d^2= (x2-x1)^2 + (y2-y1)^2

d - дистанция
x1,y1 - координаты объекта 1
x2, y2 - координаты объекта 2

Самый ближний объект у которого min d


 
pasha676   (2003-02-27 12:15) [2]


> я только-только начал изучать объеное программирование,
> поэтому пожалуйста объясните как для "чайника".


математика она одинаковая и в "объеном" (объемном или объектном ????) программировании и у "чайников". Даже не читая учебник ты мог бы впомнить хотя бы теорему Пифагора. Квадрат гипотенузы равен сумме квадратов катетов. Из нее легко выводиться формула написанная Mirovodin.


 
Andy Eremin   (2003-02-27 13:23) [3]

2 Mirovodin
Вопрос не в том, как вычислить (хотя и за это спасибо), а как определить какой объект является с координатой x2 и y2.
Если проще выразиться: я не знаю, как произвести процесс попеременного сравнения координат множества объектов.
Раньше бы я сделал так
(d[i])^2:=(x[i]-x[j])^2+(y[i]-y[j])^2
А сейчас массива нет.
Я до сих пор не понял, почему переменные x и y нигде не определяются, но тем не менее участвуют при создании и движении объектов. Видимо, это какие-то внутренние переменные. Тогда вопрос: если есть переменные x и y, может, еще какие есть?


 
Mirovodin   (2003-02-27 14:13) [4]

Несколько не понял вопроса, объясню с самого начала.

Любой объект описывается допустим записью (или классом) :



PMyObj=^TMyObj;

TMyObj=Record
X : integer;
Y : integer;
...
end;


Записи помещаются в список, TList. Проход по всему списку олбъектов будет выглядеть примерно так :

tmpMyObj : PMyObj

For I := 0 To MyList.Count - 1 Do
begin
tmpMyObj := MyList.Items[i];
Доступ к элементу
tmpMyObj^.X
tmpMyObj^.Y
...
end;


 
Andy Eremin   (2003-02-27 15:21) [5]

2 Mirovodin
Теперь понятно.
Однако здесь Вы приводите пример с поределением x и y разных классов. А если класс один и мне нужно определить x и y всех объектов класса?


 
pasha676   (2003-02-27 16:01) [6]

Как у разных? Один класс - TMyObj. В данном примере в цикле перебираються все объекты этого класса, ну и осуществляется доступ к переменным Х и У.

Весь смысл в том, что у тебя где-то должен храниться список этих объектов. Даже не важно как он организован (TList или просто связанные списки или еще как-нибудь), главное чтоб он был. Ты пробегаешь по списку и производишь манипуляции. Если тебя смущает TList - пользуйся связанными списками - это классика, описана и в простом паскале. Но смысл тот же. TList - легче в реализации.


 
Mirovodin   (2003-02-27 16:57) [7]

Простой пример :

TGameEngine = Class (TObject)
...
private
ObjectList: TList;
...
public
( const BaseObject:TMyObj; var OutObj: TMyObj) Простой пример :

TGameEngine = Class (TObject)
...
private
ObjectList: TList;
...
public
function CalcMinDist(const BaseObject:TMyObj; var OutObj: TMyObj): integer;
end;

В классе TGameEngine содержится список указателей на различные объекты.



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2003.08.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
7-92279
3asys
2003-04-30 13:07
2003.08.28
Создание exe-файла


7-92292
StAL
2003-06-06 12:53
2003.08.28
Запись в Kernel32 под 9х


3-92019
Falendysh
2003-08-05 00:16
2003.08.28
QReport компонента


1-92104
Stalker
2003-08-15 13:21
2003.08.28
Управление приложением...


14-92207
VuDZ
2003-08-10 20:35
2003.08.28
Несколько предложений админам форума





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский