-1

私は、C#の曲線に沿ってピクセルを書き込むだけの基本的なアプリケーションを作成しています。

私はこのウェブサイトに有望に見える式を見つけましたこのウェブサイトもここで同じことを話していると思います。

私が本当に理解していないのは、それをどのように実装するかです。最初のリンクでJavaScriptコードを調べてみましたが、提供する必要のあるデータがわかりません。PVC、PVI、またはPVTに関係するものは、私が理解していないものです。

私が設定しようとしている状況の例は、両方のグレード(垂直傾斜/傾斜)がちょうど5と-5であるということです。ポイント1が0、0にあり、ポイント2が100、100であるとしましょう。

誰かが数式のあいまいな変数のいくつかを説明できますか?また、数式を使用して曲線を描くにはどうすればよいですか?

4

1 に答える 1

3

一般に、2Dで曲線を描くには、1つのパラメーターを変更してから、x、yポイントのペアを収集し、そのペアをプロットします。あなたの場合、水平距離(x)を変更し、対応するy値を収集するだけで機能し、これらをプロットできます。

公式に関しては、それは非常に不明確です。基本的に、それは(不十分に定義された)専門用語の束が周りにある放物線です。これをグラフ化するには、xを0からLに変化させます(これは明らかではありませんが、とにかく、傾きが図に示されているようになるようにxを変化させる方法を計算する必要がありました。 、それは0からLであり、彼らはそう言うべきでした)。

現在C#を実行していませんが、このPythonコードを翻訳できることを願っています。

from matplotlib.pyplot import plot, show
from numpy import arange

G1 = .1 # an initial slope (grade) of 10%  (note that one never uses percentages directly in calculations, it's always %/100)
G2 = -.02 # a final slope (grade) of 2%
c = 0    # elevation (value of curve when x=0, that is, y at PVC
L = 10.   # the length of the curve in whatever unit you want to use (ft, m, mi, etc), but this basically sets your unit system
N = 1000  # I'm going to calculate and plot 100 points to illustrate this curve

x = arange(0, L, float(L)/N)  # an array of N x values from 0 to (almost) L

# calculate the curve
a = (G2-G1)/(2*L)
b = G1
y = a*x*x + b*x + c  # this is shorthand for a loop y[0]=a*x[0]*x[0] + b*...

plot(x, y)    
show()

print (y[1]-y[0])/(x[1]-x[0]), (y[-1]-y[-2])/(x[-1]-x[-2])

最後の行は、最初と最後の勾配をチェックとして出力します(Pythonでは、配列の後ろからのインデックスカウントを無視します)。これは、G1とG2に指定したものと一致します。プロットは次のようになります。

ここに画像の説明を入力してください

あなたのリクエストについて:「私が設定しようとしている例の状況は、両方のグレード(垂直傾斜/傾斜)がちょうど5と-5です。ポイント1が0、0にあり、ポイント2が100であるとしましょう。 100.」、放物線では、基本的に3つの自由パラメーター(a、b、およびcに対応)を取得します。ここでは、それを過剰に指定したと思います。

PVC、PVT、およびPVIとは何ですか?PVC:開始点。したがって、Y_PVCは開始点の高さです。PVT:終点。PVI:初期勾配G1(つまり左側の曲線の接線)でPVCから線を引き、同様にPVTから線を引く場合、それらが交差する点はPVIと呼ばれます(ただし、誰かがこの点を気にする理由は私を超えて)。

于 2012-04-13T00:25:23.537 に答える