プロが教える店舗&オフィスのセキュリティ対策術

表題の件,どなたか実装例をご教授頂けないでしょうか.
Rubyで実装されているサイトを見つけましたが,繰り返しの処理stepがよく分からなく悩んでいます.
<https://scrapbox.io/ashiato-note/2次元配列の線形補間>

下ので図で,y軸が0-10・x軸が0-10だった場合,
入力でx = 5, y = 5なら25が取得できるとします.
入力でx = 8, y = 9なら??の近似値を取得したいです.

10 -+-----+-----+-
-| | |-
5 -+-----25----+-
-| | |-
0 -+-----+-----+-
0 5 10

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
サンプルコード

#include <stdio.h>

//数列(分かり易い例に置き換えて頂いて構いません)
const int ar[2][3]={{10, 20, 30}, {100, 200, 300}};

int lerp_x(int x0, int y0, int x1, int y1, int y)
{
return x0 + ((x1 - x0) * (y - y0)) / (y1 - y0);
}

int lerp_y(int x0, int y0, int x1, int y1, int x)
{
return y0 + ((y1 - y0) * (x - x0)) / (x1 - x0);
}

int main()
{
 ここの実装・もしくは例があると助かります。
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

A 回答 (3件)

https://risalc.info/src/lagrange-interpolation.h …
最初の url は、1次補間
多分、2次補間以降が欲しいんだろうから、
数式通り計算すればいいだけ。

ただし、x,y どちらか片側だけでやると隙間が出来るので、
x,y 両方からやっていけばいい。
    • good
    • 1

url は、2点間傾きを調べて(線を引いた感じ)、


その時の x か、y を指定して、y か、x の値を取得したとき、
floor と、seil の値両方を取得するだけの様ですが。
で、同じときは(整数値だった場合)pos.uniq で同値になるので削除しているだけ。
    • good
    • 0
この回答へのお礼

すみません。私の認識不足でした。
傾きを知りたいのではなく、値を補間したいです。

以下のサイトも参考にしました。
http://7ujm.net/etc/senkei.html

1次元テーブルのロジックは理解できたのですが、
縦横を考慮したときに、縦・横の近似値が出てきます。
その後、その縦横の値をどのような処理すれば
最も近いデータが得られるかが分かっていません。

お礼日時:2020/03/01 06:42

この ar って何を表しているんですか? 「x = 5, y = 5なら25が取得できるとします」というのは, このプログラムでは

具体的にどこに書かれているんですか?
    • good
    • 0
この回答へのお礼

すみません。他のサイトのソフトと組み合わせようとした結果、
記載したコードになってしまっています。

以下のサイトも参考にしました。
http://7ujm.net/etc/senkei.html

お礼日時:2020/03/01 07:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!