Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.04;
Скачать: CL | DM;

Вниз

Простейшая линейная интерполяция...   Найти похожие ветки 

 
Кефир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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.067 c
4-1121357305
deamon_t
2005-07-14 20:08
2005.09.04
Как получить серийный номер материнки


3-1122136257
ViktorZ
2005-07-23 20:30
2005.09.04
Сдвиг номера поле по последовательности чисел


4-1121430567
been
2005-07-15 16:29
2005.09.04
значение в памяти типа x.xx


14-1123683162
Kerk
2005-08-10 18:12
2005.09.04
Абрамович предложил своим футболистам отдохнуть на Чукотке


4-1121182970
Volumer
2005-07-12 19:42
2005.09.04
Повторный запуск