Форум: "Игры";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
ВнизПростейшая линейная интерполяция... Найти похожие ветки
← →
Кефир87 (2005-05-11 17:46) [0]Я уже третий день бъюсь... Вроде все просто... Я даже формулу знаю... Но вот никак ничего подставить в нее не могу...
Задача:
Дан полигон у которого все четыре точки заданны координатами x,y,z. Дана некая точка... скажем M заданная координатами x,z... Так вот как для нее интерполировать y...
Это у меня карта высот 8)
← →
Кефир87 (2005-05-11 18:08) [1]Я хотел сделать так... По формуле
x-x1 x-x0
f(x) = ----- * y0 + ------ * y1
x0-x1 x1-x0
Для одной стороны... потом для другой... А потом интерполировать между результатами предидущих действий... Не получилось... Надоело думать!
← →
Asteroid © (2005-05-11 18:10) [2]Пусть точки заданы как
0...1
. .
2...3
function Lerp( a, b, t: Single ): Single;
begin
Result := ( 1 - t ) * a + t * b;
end;
Сначала интерполируем y по координате x:
tx := ( x - x0 ) / ( x1 - x0 ); // x1 - x0 - это шаг сетки по x
ya := Lerp( y0, y1, tx );
yb := Lerp( y2, y3, tx );
А теперь полученные ya и yb по z:
tz := ( z - z0 ) / ( z2 - z0 ); // z2 - z0 - шаг сетки по z
y := Lerp( ya, yb, tz );
Вот и все...
← →
Asteroid © (2005-05-11 18:16) [3]Попробую поточнее нарисовать (если не собьется):
0...a..1 +-->
. . . | x
. . . v
. . . z
....y...
. . .
2...b..3
← →
Кефир87 (2005-05-12 17:39) [4]
> Asteroid
Спасибо! Я все понял. Все получилось 8)
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c