Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

определение расстояния до объекта


Andy Eremin ©   (2003-02-27 07:35:00) 

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


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

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

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 содержится список указателей на различные объекты.


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

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

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


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

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


Mirovodin   (2003-02-27 14:13:00) [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 13:23:00) [5]

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


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


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


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


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

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

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

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо