Beispiel #1
0
        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);
        }
Beispiel #2
0
 public static void CopyEntity(BaseMathEntity entity)
 {
     if (entity == null)
     {
         return;
     }
     CopiedEntity = entity.Clone();
 }
Beispiel #3
0
 public static BaseMathEntity Round(BaseMathEntity input)
 {
     if (AppSettings.PrecisionDecimals < 0)
     {
         return(input);
     }
     input.Round((uint)AppSettings.PrecisionDecimals);
     return(input);
 }
Beispiel #4
0
        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));
            }
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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();
            }
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
 public static BaseMathEntity Determinant(BaseMathEntity a)
 {
     return(Round(a.Determinanta()));
 }
Beispiel #9
0
 public static BaseMathEntity Normalize(BaseMathEntity a)
 {
     return(Round(a.Normalize()));
 }
Beispiel #10
0
 public static BaseMathEntity Conjugate(BaseMathEntity a)
 {
     return(Round(a.Conjugate()));
 }
Beispiel #11
0
        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();
        }
Beispiel #12
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="parent"></param>
 /// <param name="aritmeticObject"></param>
 public AritmeticControl(Control parent, BaseMathEntity aritmeticObject)
 {
     _aritmeticObject     = aritmeticObject;
     _parentContainer     = parent;
     _parentContainer.Tag = this;
 }