我在Qt 4.8.7的Windows 10下使用MathGL 2.3.5.1(http://mathgl.sourceforge.net/doc_en/Main.html)。C++/MathGL:矢量字段的誤解
我有問題要使用MathGL的矢量場。有一個MathGL文件,其文件名爲mathgl-2.3.5.eng.pdf,文件名爲 https://sourceforge.net/projects/mathgl/files/mathgl/mathgl%202.3.5/ 「4.15矢量域」部分描述了方法「Vect」的用法。當然,在「2.8矢量場樣本」一節中有一個矢量場示例。
首先,我對矢量場的理解是有點(在我的情況下它總是在2D中)和(數學)矢量。因此,點P1(1,1)和矢量V1(1,1)的組合意味着箭頭從點P1(1,1)開始並在點P2(2,2)處結束,這是簡單向量相加:P2 = P1 + V1。
現在回到MathGL。我正在談論這種方法:無效的Vect(const mglDataA & x,const mglDataA & y,const mglDataA & ax,const mglDataA & ay,const char * sch =「」,const char * opt =「」);
如果我理解參數正確地然後
- x表示沿x單位箭頭起始
- y表示的箭頭的在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,Ax和Ay「列向量」的:
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;不起作用:-( –