Форум: "Игры";
Текущий архив: 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.006 c