Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.28;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
7-92280
Darkwolf
2003-06-13 01:02
2003.08.28
Работа с LPT


6-92158
Hogo
2003-06-03 12:17
2003.08.28
Объект на основе TIdConnectionIntercept


14-92227
Yegor
2003-08-09 21:57
2003.08.28
Screen Mate


14-92226
Cosmic
2003-08-09 17:04
2003.08.28
Свой SMTP-сервер


3-91978
stud
2003-08-01 12:49
2003.08.28
вопрос по qreport