5

直線と曲線の2本の線があります。どちらにも、線を定義する任意の数のx値とy値があります。x値とy値の数は、どちらの線でも同じではありません。曲線座標と直線座標の間の点の距離を別々に取得しようとしています。http://www.scientific-solutions.ch/tech/origin/products/images/calculus_integral.gif:個別の統合を考えて、私が話していることをよりよく理解することができます。

異なる距離を追加することで、面積を取得します。私が立ち往生している部分は、ポイントの実際の同期です。たとえば、曲線座標は時間に依存するため(ポイントは一般的な速度で変化しないため)、10個のインデックスごとに直線座標と曲線座標のx値とy値を簡単に比較できます。2セットのポイントの実際の座標を同期する方法が必要です。両方の点のセットを特定の数の点に補間することを考えましたが、ここでも、湾曲した点のセットの時間依存性により、その解は無効になります。

誰かがこれを行うための良い方法を提案して、基本を概説してもらえますか?私は本当に助けに感謝します。

試行するコード(疑似):

xLine = [value1 value2 ...]
yLine = [value1 value2 ...]
xCurve = [value1 value2 ...]
yCurve = [value1 value2 ...]

xLineInterpolate = %interpolate of every 10 points of x until a certain value. same with yLineInterpolate, xCurveInterpolate and yCurveInterpolate.

次に、各配列から同じインデックスを取得し、代数を実行して距離を取得することができます。私の心配は、私の線の値が一定の割合で増加するのに対し、私の曲線の値は時々変わらない(xとyの値は異なる変化率を持っている)こともあれば、変わることもあるということです。では、そのような補間方法は間違っているでしょうか?

4

2 に答える 2

1

私が正しく理解していれば、直線と曲線の間の距離を知りたいと思います。最も簡単な方法は、直線が新しいx軸になるように座標変換を実行することです。そのフレームでは、曲線のy値はあなたが求める距離です。

この座標変換は、次のように、回転と平行移動に相当します。

% estimate coefficients for straight line
sol = [x1 ones(size(x1))] \ y1;
m = sol(1); %# slope
b = sol(2); %# y-offset at x=0

% shift curved line down by b 
% (makes the straight line go through the origin)
y2 = y2 - b;

% rotate the curved line by -atan(m)
% (makes the straight line run parallel to the x-axis)
a = -atan(m);
R = [+cos(a) -sin(a)
     +sin(a) +cos(a)];    
XY = R*[x2; y2];

% the distances are then the values of y3. 
x3 = XY(1,:);
y3 = XY(2,:);
于 2012-10-10T20:07:05.237 に答える
0

補間を使用する必要があります。ここでは、時間依存性がどのように関連しているかわかりません。おそらく、両方の曲線に直線を当てはめることを考えていますか?それは悪い考えです。

隣接する2点ごとに直線で接続されていると仮定するだけで、任意の曲線に対して単純な補間を行うことができます。これは、曲線の妥当な近似値であることが示されています。

したがって、互いに隣接している(x1、y1)と(x2、y2)を見ていて、x1とx2の間にあるx3(x1 <x2 <x3)を選択し、 y3値。

y3を見つける簡単な方法は次のとおりです。

p=(x3-x1)/(x2-x1)
y3=y1+p*(y2-y1)

pはx1とx2の間の相対位置を示し(たとえば、0.5は中央になります)、y1とy2の間の相対位置としてpを使用するという考え方です。

于 2012-10-10T01:01:24.037 に答える