![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Простейшая линейная интерполяция... [Delphi]
Кефир87 © (2005-05-11 17:46:00)Я уже третий день бъюсь... Вроде все просто... Я даже формулу знаю... Но вот никак ничего подставить в нее не могу...
Задача:
Дан полигон у которого все четыре точки заданны координатами x,y,z. Дана некая точка... скажем M заданная координатами x,z... Так вот как для нее интерполировать y...
Это у меня карта высот 8)
Кефир87 (2005-05-12 17:39:00) [1]
> Asteroid
Спасибо! Я все понял. Все получилось 8)
Asteroid (2005-05-11 18:16:00) [2]Попробую поточнее нарисовать (если не собьется):
0...a..1 +-->
. . . | x
. . . v
. . . z
....y...
. . .
2...b..3
Asteroid (2005-05-11 18:10:00) [3]Пусть точки заданы как
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 );
Вот и все...
Кефир87 (2005-05-11 18:08:00) [4]Я хотел сделать так... По формуле
x-x1 x-x0
f(x) = ----- * y0 + ------ * y1
x0-x1 x1-x0
Для одной стороны... потом для другой... А потом интерполировать между результатами предидущих действий... Не получилось... Надоело думать!