<<
>>

Пример реализации

Следующий пример кода соединяет различные суждения в функцию стоимости грани для реализации теста:

DWORD SearchGraph::EdgeCost(

// Вычисление функции стоимости

CellRef &crDst, // Выход: ячейка адресат для грани

CellRef crSrc, // Вход: ячейка источник

EdgeDir ed // Вход: направление грани

)

{

// Переход по индексу на ячейку адресат

crDst = crSrc + crWalkEdgeDelta[ed]; // 2d индекс + опреатор

// Модификатор для определения края карты, возвращает бесконечность

// если адресат вне графа

if (IsCellRefValid(crDst)) return infinity;

CellAttr &caSrc = AttributesFor(crSrc);

CellAttr &caDst = AttributesFor(crDst);

DWORD dwCost;

// Применение модификатора дороги

if ((caSrc.cRoadType != noroad) && (caDst.cRoadType != noroad)) {

dwCost = dwRoadEdgeCost[ed&1][caSrc.cRoadType];

} else {

// иначе применение модификатора наклона

if (abs(caSrc.wHeight-caDst.wHeight)

> dwMaxHeightDiff[ed&1])

return infinity;

// иначе вычисление просто стоимости местности

dwCost = dwTerrainHalfEdgeCost[ed&1][caSrc.cTerrainType] +

dwTerrainHalfEdgeCost[ed&1][caDst.cTerrainType];

}

// Применение модификатора врага

if (!caDst.bHaveVisCalc) { // ленивое определение видимости

// Использование DDA трассировки алг.

caDst.bVisible = IsObserved(crDst);

caDst.bHaveVisCalc = true;

}

if (caDst.bVisible) {

dwCost += dwVisibilityCost;

if (dwCost > MAXCOST) dwCost = MAXCOST;

}

// Все

return dwCost;

}

Правила if else данного кода, исполняемые при вызове EdgeCost(), очень короткие. Реальное замедление быстродействия происходит при вызове IsObserved(), то есть определение, может ли враг обнаружить нас в ячейке адресата или нет. Таким образом, если вражеское детектирование не нужно, мы можем сохранить много времени при вычислении.

6

<< | >>
Источник: F. Markus Jonsson. Поиск оптимального пути для транспортных средств на оцифрованых картах реальной местности. 1998

Еще по теме Пример реализации:

  1. Ляпы диамата в ленинских примерах реализации ЗАКОНА
  2. С.В. Гудилова, Д.В. Дозорова (Ульяновск) Реализация закона речевой экономии на примере универбации
  3. Пример подготовки данных и выполнение первой задачи РГКР № 1 (листинг реализации в математическом пакете Maple)
  4. 7.5. Основные риски при реализации государственных программ на примере программы «Повышение безопасности дорожного движения в 2006- 2012годах»
  5. 56. Реализация и применение права. Непосредственная и правоприменительная реализация.
  6. В.              Учебные примеры Пример 1. Окна из Билефельда для Англии71
  7. С.              Учебные примеры Пример 1. Мазут для топливной системы отца
  8. В. Учебные примеры Пример 1. Международное картельное право: Фирма «Ланд- техник» в Дании23
  9. В.              Учебные примеры Пример 1. Итальянский управляющий. конкурсной массой вчиняет иск в Германии
  10.   2. Это доказывается на примере воспринимаемых чувствами вещей, а также на примере самих одушевленных существ  
  11. Б. Учебные пример Пример 1. Автомашина «феррари» и ее ипотека в Германии16
  12. В.              Учебные примеры Пример 1. Бразильский наследственный случай
  13. В.              Учебные пример Пример 1. «Винтер ЛТД» в Дюссельдорфе30