3

私が持っている質問は数学の詳細です! 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 で掛けましたが、問題ありません!!! 皆さんありがとう。

4

2 に答える 2

1

画面に合わせてスケーリングする場合は、各電圧と電流の値に50を掛けます。

あなたのすべてのポイントはthird quadrant;にあります。(0, 0)画面上で原点を選択し、すべてのnegative x-axisポイントをポジティブにすることができますy-axis

スケーリングが必要ない場合は、倍率を 1 のままにします。

于 2011-03-20T12:49:50.940 に答える