2013-05-20 3 views
1

Как в теме. У меня есть карта высот, и я хочу рассчитать точную высоту на одном квадрате карты высот. Каждый квадрат имеет 4 высоты, по одному для каждого угла.Расчет высоты на карте высот

Например:

0---4 4---4 
----- ----- 
--A-- --A-- 
----- ----- 
0---0 0---0 

В обоих случаях точка А должна быть на высоте 2.

8---4 4---4 0---8 
----- ----- ----- 
--B-- --B-- --B-- 
----- ----- ----- 
0---0 4---4 8---0 

В каждом случае точка B должна быть на высоте 4.

8---4 8---8 
----- ----- 
--C-- --C-- 
----- ----- 
4---8 4---8 

В обоих случаях точка C должна быть на высоте 6.

Я считаю, что правильная формула для любой точки в середине (например, A, B, C) является (псевдокод):

00 = bottom left corner height 
10 = bottom right corner height 
01 = top left corner height 
11 = top right corner height 

height = (Math.min(00, 10, 01, 11)+Math.max(00, 10, 01, 11))/2; 

Как я могу вычислить эту высоту для любой точки в любом месте?

+0

Если верхний левый 2 для второй карты, то какова должна быть высота A? –

+0

В этом случае высота будет равна 2. – Mac70

+2

Итак, линия из верхнего левого угла в A в случае @ Ziyao была бы плоской? Это не имеет смысла - для получения алгоритма необходима более конкретная информация. Существует несколько способов экстраполяции информации о высоте между четырьмя определенными точками. – torquestomp

ответ

0

Я думаю, что проблему можно решить с помощью билинейной интерполяции между угловыми точками каждого квадрата.

Смежные вопросы