Qt 4.8.7のWindows 10でMathGL 2.3.5.1(http://mathgl.sourceforge.net/doc_en/Main.html)を使用しています。C++/MathGL:ベクトルフィールドの誤解
MathGLのベクトルフィールドを使用する際に問題があります。https://sourceforge.net/projects/mathgl/files/mathgl/mathgl%202.3.5/ の下にファイル名mathgl-2.3.5.eng.pdfを持つMathGLのドキュメントがあります。「4.15ベクトルフィールド」セクションでは、メソッド "Vect"の使い方を説明しています。もちろん、「2.8ベクトルフィールドサンプル」の節にはベクトルフィールドの例があります。
まず、ベクトルフィールドの私の理解は、ポイント(私の場合は常に2Dである)と(数学的に)ベクトルがあるということです。したがって、点P1(1,1)とベクトルV1(1,1)の組み合わせは、点P1(1,1)で始まり、単純ベクトル加算である点P2(2,2)で終わることを意味する:P2 = P1 + V1。
今すぐMathGLに戻ってください。私はこの方法について話しています: void Vect(const mglDataA & x、const mglDataA & y、const mglDataA & ax、const mglDataA & ay、const char * sch = ""、const char * opt = "");私が正しく次にパラメータを理解していれば
は
- xは
- yは
- Axがx方向の単位を表し、Y単位で矢印の開始を表し、X単位の矢印の開始を表します(数学的に) ベクターため
- AYは(数学的に) ベクター
だから、コーディングを始めましょう。
int sample(mglGraph *gr)
{
long cols=2;
long rows=2;
mglData x; x.Create(cols, rows);
x.a[0] = 1.0; x.a[1] = 0.0; x.a[2] = 0.0; x.a[3] = 0.0;
mglData y; y.Create(cols, rows);
y.a[0] = 1.0; y.a[1] = 0.0; y.a[2] = 0.0; y.a[3] = 0.0;
mglData ax; ax.Create(cols, rows);
ax.a[0] = 1.0; ax.a[1] = 0.0; ax.a[2] = 0.0; ax.a[3] = 0.0;
mglData ay; ay.Create(cols, rows);
ay.a[0] = 1.0; ay.a[1] = 0.0; ay.a[2] = 0.0; ay.a[3] = 0.0;
gr->Title("Vector field P1(1,1) V1(1,1)");
gr->SetRanges(0, 3, 0, 3);
gr->Vect(x, y, ax, ay, "<");
gr->Box();
gr->Axis();
gr->Grid("xy", "h:");
return 0;
}
私は書くことができないという意味で、X、Y、斧とyのための「列ベクトル」を作成することはできませんまず第一に:
long cols=1;
long rows=2;
mglData x; x.Create(cols, rows); x.a[0] = 1.0; x.a[1] = 0.0;
mglData y; y.Create(cols, rows); y.a[0] = 1.0; y.a[1] = 0.0;
mglData ax; ax.Create(cols, rows); ax.a[0] = 1.0; ax.a[1] = 0.0;
mglData ay; ay.Create(cols, rows); ay.a[0] = 1.0; ay.a[1] = 0.0;
その後GR-> VECT(X、 y、ax、ay、 "<");
MathGL message - Vect: data dimension(s) is too small
このコードでは、ポイントP1を設定しています。x.a [0] = 1.0; y.a [0] = 1.0;となる。 ベクトルV1は、ax.a [0] = 1.0;で表される必要があります。 ay.a [0] = 1.0;となる。
結果のグラフには、P1(1,1)に矢印の魔法の開始が表示されますが、P2(2,2)では終了しません。
誰がこの問題を解決できますか?
挨拶、
トーマス
い 長いCOLS = 2; 長い行= 1; 作品ですか? –
cols = 2;行= 1;あまりにも動作しません:-( –