saveAsMtx ()
{data=new dataOperations (); sfd=new SaveFileDialog () ;. DefaultExt= mtx raquo ;;. Filter= Matrix file | * .mtx raquo ;;. Clear (ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); (matrixList == null)
{. Show ( Матриці були запроваджені ) ;;
} (sfd.ShowDialog () == System.Windows.Forms.DialogResult.OK)
{. saveAllMatrixMtx (sfd.FileName); (texFont, matrixList [0] .mtx); (operationMode!=Mode.Determinant)
{(texFont, matrixList [0] .mtx, matrixList [1] .mtx);
}. SwapBuffers ();
}
} void openFile ()
{data=new dataOperations (); (); od=new OpenFileDialog () ;. Filter= Matrix file | * .mtx | Matrix textfile | * .txt raquo ;;. Clear (ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); (od.ShowDialog () == System.Windows.Forms.DialogResult.OK)
{p=od.FileName; type=Path.GetExtension (p); (type == .mtx )
{. readAllMatrixMtx (od.FileName);
} (type == .txt )
{. readAllMatrixTxt (od.FileName);
} (texFont, matrixList [0] .mtx); (operationMode!=Mode.Determinant)
{(texFont, matrixList [0] .mtx, matrixList [1] .mtx);
}. SwapBuffers ();
}
} void glControl1_MouseDown (object sender, System.Windows.Forms.MouseEventArgs e)
{mtxCalc=this;
сheck=false; worldCoords=convertScreenToWorldCoords (eX, eY) ;. Y=(resolution.Y - worldCoords.Y); (e.Button == MouseButtons.Right amp; amp; matrixList!= null)
{(matrixList.Count gt; 0 amp; amp; matrixList [0] .Contains (worldCoords, 30,13) == true)
{(operationMode)//Операції
{Mode.Invert: Mode.Transpose: Mode.Determinant: f3=new Form3 (mtxCalc) ;. ShowDialog () ;; Mode.Addition: Mode.Substraction: Mode.Multiplication: f1=new Form1 (mtxCalc) ;. ShowDialog () ;;
}
}
}
} void glControl1_Paint (object sender, PaintEventArgs e)
{(matrixList!=null)
{. Clear (ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);//очищаємо поверхню (texFont, matrixList [0] .mtx); (operationMode!=Mode.Determinant)
{(texFont, matrixList [0] .mtx, matrixList [1] .mtx);
}. SwapBuffers ();
}
} TextureFont fontSetting (GLControl glControl1)//Для налаштування поверхні опегл і шрифтів
{. Clear (ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);//очищаємо поверхность.MatrixMode (MatrixMode.Modelview) ;. LoadIdentity ();
//Налаштовуємо опенгл для текстури.InitTexturing ();
//Завантажуємо текстуру зі шрифтами
int tex=TexUtil.CreateTextureFromFile (Application.StartupPath + @ + font1.png );
//Створюємо об'єкт TextureFont з завантаженою текстури
TextureFont texFont=new TextureFont (tex); texFont;
} static Point convertScreenToWorldCoords (int x, int y)
{[] viewport=new int [4]; modelViewMatrix, projectionMatrix; .GetFloat (GetPName.ModelviewMatrix, out modelViewMatrix) ;. GetFloat (GetPName.ProjectionMatrix, out projectionMatrix) ;. GetInteger (GetPName. Viewport, viewport); mouse; .X=x; .Y=y; vector=UnProject (ref projectionMatrix, modelViewMatrix, new Size (viewport [2], viewport [3]), mouse); coords=new Point ((int ) vector.X, (int) vector.Y); coords;
} static Vector4 UnProject (ref Matrix4 projection, Matrix4 view, Size viewport, Vector2 mouse)
{vec; .X=2.0f * mouse.X/(float) viewport.Width - 1; .Y=2.0f * mouse.Y/(float) viewport.Height - 1 ;. Z=0; .W=1.0f; viewInv=Matrix4.Invert (view); projInv=Matrix4.Invert (projection) ;. Transform (ref vec, ref projInv, out vec) ;. Transform (ref vec, ref viewInv, out vec); (vec.W gt; float.Epsilon || vec.W lt; float.Epsilon)
{. X /=vec.W; .Y /=vec.W; .Z /=vec.W;
} vec;
} void drawAllMatrix (TextureFont texFont, double [,] mtx)//для малювання матриць (зворотна, визначник, транспонування)
{font=20;//розмір шріфтаm=matrixList [0] .rowCount;//Кількість рядків=new Point (200, 200); (operationMode)
{Mode.Invert: (m gt; 3)
{. X=m * 60 + 17; .Y=m * 60 + 17;