私が持っている質問は数学の詳細です! fromImage(Bitmap)を使用してピクチャボックスに描画したい曲線のポイントを表す値のペアがあります。私の画像ボックスのサイズは 500x500 です。また、左上隅のポイントが (0,0) で、右下隅のポイントが (500,500) であることもわかっています。明らかに、原点は (250,250) である必要があります。どうすれば自分の値をこの形式に変換できるのでしょうか?
私が持っているサンプルポイントは次のようなものです:
Voltage: -0.175 Current: -9.930625E-06
Voltage: -0.171875 Current: -9.53375E-06
Voltage: -0.16875 Current: -9.136875E-06
Voltage: -0.16875 Current: -8.74E-06
Voltage: -0.165625 Current: -8.343125E-06
Voltage: -0.1625 Current: -7.94625E-06
Voltage: -0.1625 Current: -7.549375E-06
Voltage: -0.159375 Current: -7.152188E-06
Voltage: -0.15625 Current: -6.755312E-06
X 軸に電圧値、Y 軸に電流値があることがわかります。それらを少し良くするには、それらをより大きな数で乗算し、逆数または何かを乗算する必要があることを知っています。しかし、ピクチャボックスでそれらを表現する方法がまだわかりません。これらのポイントは通常、第 3 象限から始まり、第 1 象限で終わります。手伝ってください!
私のX軸の最小値と最大値は-2Vと+2Vであり、Y軸の場合は-10uAから+10uA(つまり10 * 10 ^ -6)になることを追加するだけです
編集
私がやろうとしているのは、これらのような曲線を持つことです。そのため、これらのポイントは Graphics.DrawCurve で使用されます。
更新 これは私のコードがどのように見えるかです:
g.DrawLine(penAxis, 250, 0, 250, 500); // Y AXIS
g.DrawLine(penAxis, 0, 250, 500, 250); // X AXIS
PointF[] p = new PointF[pinData.GetLength(0)]; //pinData is AboutBoxForm double[,] array
for (int i = 0; i < pinData.GetLength(0); i++)
{
p[i] = new PointF(250 * ((1 + (float)pinData[i, 0]) / 2), 250 * ((1 + (float)pinData[i, 1] )/ 10));
}
Pen pengraph = new Pen(pinColor, 2.0F);
g.DrawCurve(pengraph, p);
進行状況の更新
さて、私の曲線の下のコードを使用すると、次のようになります。
g.DrawLine(penAxis, 250, 0, 250, 500); // Y AXIS
g.DrawLine(penAxis, 0, 250, 500, 250); // X AXIS
PointF[] p = new PointF[pinData.GetLength(0)]; //pinData is AboutBoxForm double[,] array
for (int i = 0; i < pinData.GetLength(0); i++)
{
p[i] = new PointF(250 * (1 - ((float)pinData[i, 1] *100000) / 10), 250 * (1 + (((float)pinData[i, 0]))/ 2));
}
Pen pengraph = new Pen(pinColor, 2.0F);
g.DrawCurve(pengraph, p);
今、問題はそれをスケーリングしていると思います。解決する 10^6 を掛ける必要がありましたが、^5 で掛けましたが、問題ありません!!! 皆さんありがとう。