private void RecordState() { BaseMathEntity item1 = null; BaseMathEntity item2 = null; BaseMathEntity item3 = null; foreach (Control c in pnlA.Controls) { item1 = c.Tag as BaseMathEntity; if (item1 != null) { break; } } foreach (Control c in pnlB.Controls) { item2 = c.Tag as BaseMathEntity; if (item2 != null) { break; } } foreach (Control c in pnlResult.Controls) { item3 = c.Tag as BaseMathEntity; if (item3 != null) { break; } } AritmeticsService.AddState(item1, item2, item3); }
public static void CopyEntity(BaseMathEntity entity) { if (entity == null) { return; } CopiedEntity = entity.Clone(); }
public static BaseMathEntity Round(BaseMathEntity input) { if (AppSettings.PrecisionDecimals < 0) { return(input); } input.Round((uint)AppSettings.PrecisionDecimals); return(input); }
public static void AddState(BaseMathEntity item1, BaseMathEntity item2, BaseMathEntity item3) { while (State.Count >= 10) { State.RemoveAt(State.Count - 1); } if (State.Count == 0) { State.Add(new Tuple <BaseMathEntity, BaseMathEntity, BaseMathEntity>(item1, item2, item3)); } else { State.Insert(0, new Tuple <BaseMathEntity, BaseMathEntity, BaseMathEntity>(item1, item2, item3)); } }
public static BaseMathEntity CalculateVector(VectorOperation operation, BaseMathEntity a, BaseMathEntity b) { switch (operation.Operation) { case VectorOperationEnum.Add: return(Round(a.Add(b))); case VectorOperationEnum.Subtract: return(Round(a.Subtract(b))); case VectorOperationEnum.Multiply: return(Round(a.Multiply(b))); case VectorOperationEnum.MatrixMupltiply: return(Round(a.MatrixMultiply(b))); } return(null); }
private void determinatToolStripMenuItem_Click(object sender, EventArgs e) { Control ctrl = cntxMenu.SourceControl; var ac = ctrl.Parent.Tag as AritmeticControl; if (ac != null) { BaseMathEntity conj = null; try { conj = AritmeticsService.Determinant(ac.Entity); } catch (Exception ex) { MessageBox.Show(this, ex.Message, "Normalize", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Control container = null; if (ctrl == pnlA || ctrl.Parent == pnlA) { container = pnlA; ClearA(); } else if (ctrl == pnlB || ctrl.Parent == pnlB) { container = pnlB; ClearB(); } else if (ctrl == pnlResult || ctrl.Parent == pnlResult) { container = pnlResult; ClearResult(); } var acC = CreateAritmeticControl(conj, container); acC.Grid.Focus(); ArrangeControls(); RecordState(); } }
private AritmeticControl CreateAritmeticControl(BaseMathEntity entity, Control container) { AritmeticControl ac = null; if (entity is Number) { ac = new NumberControl((Number)entity, container); } else if (entity is Vector) { ac = new VectorControl((Vector)entity, container); } else if (entity is Matrix) { ac = new MatrixControl((Matrix)entity, container); } if (ac != null) { ac.Grid.ContextMenuStrip = cntxMenu; } return(ac); }
public static BaseMathEntity Determinant(BaseMathEntity a) { return(Round(a.Determinanta())); }
public static BaseMathEntity Normalize(BaseMathEntity a) { return(Round(a.Normalize())); }
public static BaseMathEntity Conjugate(BaseMathEntity a) { return(Round(a.Conjugate())); }
private void CalculateVector() { AritmeticControl ac = null; AritmeticControl bc = null; if (pnlA.Controls.Count != 0) { ac = pnlA.Tag as AritmeticControl; } if (pnlB.Controls.Count != 0) { bc = pnlB.Tag as AritmeticControl; } if (ac == null) { MessageBox.Show(this, "Variable A not defined!", "Calculate", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (bc == null) { MessageBox.Show(this, "Variable B not defined!", "Calculate", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } BaseMathEntity result = null; try { result = AritmeticsService.CalculateVector((VectorOperation)ddiOperation.SelectedItem.Tag, ac.Entity, bc.Entity); } catch (Exception ex) { MessageBox.Show(this, ex.Message, "Calculate", MessageBoxButtons.OK, MessageBoxIcon.Warning); } if (result == null) { return; } if (cb_rbresult_A.Checked) { ClearA(); CreateAritmeticControl(result, pnlA); } else if (cb_rbresult_B.Checked) { ClearB(); CreateAritmeticControl(result, pnlB); } else { ClearResult(); CreateAritmeticControl(result, pnlResult); } ArrangeControls(); RecordState(); }
/// <summary> /// /// </summary> /// <param name="parent"></param> /// <param name="aritmeticObject"></param> public AritmeticControl(Control parent, BaseMathEntity aritmeticObject) { _aritmeticObject = aritmeticObject; _parentContainer = parent; _parentContainer.Tag = this; }