Exemplo n.º 1
0
        public void DrawCurve()
        {
            int width  = Form.PicBoxGraph.Width;
            int height = Form.PicBoxGraph.Height;

            if (width <= 0 || height <= 0)
            {
                return;
            }

            Bitmap image = new Bitmap(width, height);

            if (!ShouldCurveBeDrawed)
            {
                Form.PicBoxGraph.Image = image;
                return;
            }

            coordinateSystem = new CoordinateSystem(ellipticCurve.Xmin, ellipticCurve.Xmax, ellipticCurve.Ymin, ellipticCurve.Ymax, image);

            coordinateSystem.Draw(Form.EqualAspectRatioIsChecked);

            ellipticCurve.Draw(coordinateSystem);
            coordinateSystem.SetSelection(mouseSelectedPoint);

            if (Form.IsAdditionTabActive)
            {
                if (summand1 != summand2)
                {
                    coordinateSystem.SetSummand1(summand1);
                    coordinateSystem.SetSummand2(summand2);
                }
                else
                {
                    coordinateSystem.SetDoubling(summand1);
                }
                coordinateSystem.SetAdditionResult(additionResult);

                if (ellipticCurve is EllipticCurveR)
                {
                    EllipticCurveR tmp = (EllipticCurveR)ellipticCurve;
                    if (summand1 != summand2)
                    {
                        tmp.DrawAddition(summand1, summand2, coordinateSystem);
                    }
                    else
                    {
                        tmp.DrawDoubling(summand1, coordinateSystem);
                    }
                }
            }
            else
            {
                // Draw Multiplication
                if (factor != multiplicationResult)
                {
                    coordinateSystem.SetFactor(factor);
                }
                coordinateSystem.SetMultiplicationResult(Form.NumericUpDownNValue, multiplicationResult);
            }
            Form.PicBoxGraph.Image = image;
        }