CPointの要素がN点ありまして、
その点を使って線(折れ線グラフ)を引いてます。
例えばこんな感じ
CPoint pt[N];
ptにデータセット
dc.Polyline(pt,N);
ここで任意のxに対するyを求める関数とかが
VCにありますでしょうか?
xはN点のptに無いxを指定したいです。
環境ですが、
Vc.net2003を使ってます。
私なら、そんな関数を探す前に作ってしまいます。
Polylineって、ただの折れ線なんだから
pt[i].x < x < pt[i+1].x という2つの点がわかれば
そこから x に対する y が求まります。
これぐらいは、すぐですし。
レスありがとうございます。
自分数学(算数?)にがてなんです。
紙の上でさえ難儀してますので
プログラムで書くのは難しいです。
とりあえず存在するかどうか教えてください。
> とりあえず存在するかどうか教えてください。
私の知る限り、ありません。
ところで、これは参考になりますか?
http://www2.edu.ipa.go.jp/gz/e1math/e1ichi/e1ich3/e1hot3.mpg
ありがとうございました。
何とか作ってみます。
解決チェックはついていますが、ちょっと待ってください。
たとえば、ぐるぐる巻きのPolylineを描いたとしたら
x に対する y が複数できてしまいます。
どの y を求めたいのかを予め決めておかないと・・
ひょっとして最小二乗法かなんかで近似直線 y = ax + b の a, b を求めろってことか?
reshiaさん
xはx-1<x<x+1前提です。
επιστημηさん
いいえ、単純にy = ax + bで
xに対するyを求めることをしたいだけです。
これを複数の点とxを与えたらyを求めてくれる
関数ないかなと思い質問しました。
なんか変だから訂正
>>xはx-1<x<x+1前提です。
xはx[i-1]<x[i]<x[i+1]前提です。
> 単純にy = ax + bで xに対するyを求めることをしたいだけです。
> これを複数の点とxを与えたらyを求めてくれる関数ないかなと思い質問しました。
C++なら transform てのがありますが。
#include <iostream>
#include <algorithm>
int f(int x) {
return 2 * x - 3;
}
int main() {
int x[5] = { -2, -1, 0, 1, 2 };
int y[5];
std::transform(x, x+5, y, &f); // x[0]..x[4] を f(x)に与え、結果をy[]に格納
for ( int i = 0; i < 5; ++i ) {
std::cout << f( << x[i] << ) = << y[i] << std::endl;
}
return 0;
}
/* 実行結果
f(-2) = -7
f(-1) = -5
f(0) = -3
f(1) = -1
f(2) = 1
*/
> 単純にy = ax + bで xに対するyを求めることをしたいだけです。
> これを複数の点とxを与えたらyを求めてくれる関数ないかなと思い質問しました。
え? 複数の点(x,yの組)から a, b を求めるの? どうやって? 最小二乗法じゃないの?
それとも a, b はわかっているの?
自分のやりたいことを書きますと
以下のx,y座標M点(例では5点)で折れ線グラフを書いてます。(xは時間、yは温度)
POINT pt[] = {
{0, 28}
{2, 33}
{4, 111}
{8, 80}
{10, 90}
};
条件としてpt[n-1]<pt[n]<[n+1]とします。
x=5のときのyが知りたいので
(4, 111)と(8, 80)の2点間の直線(a,b)を求めて
y = ax + bでyを求めると思いますが、
これを以下のように出来る関数とかないかなあと思いました。
y = func(pt, 5, x)
> これを以下のように出来る関数とかないかなあと思いました。
> y = func(pt, 5, x)
作りましょう。
えと、
int func(POINT* pt, int N, int x) {
1. 与えたxを挟むpt[t]とpt[t+1]を探し、
2. その2点を通る直線の式 y = ax +b の a, b を求め、
3. それに基づいてyを求める
}
ですか?
そのまんまやないの。なにがわからんですか?
書いてることはわかりますが、
プログラムにするのが難しく。
こういう関数が用意されてないかなあと思って質問しました。
多分、普通の人ははちょちょいのちょいで出来るんでしょうが…
もうちょっと勉強してきます。m(__)m