예제 #1
0
        public void ChangeVectorToSelectedPoint(Point point)
        {
            BigInteger tempVectorX   = new BigInteger(Math.Round((point.X - y_line.X1) / PixelsPerPoint / scalingFactorX));
            BigInteger tempVectorY   = new BigInteger(Math.Round((x_line.Y1 - point.Y) / PixelsPerPoint / scalingFactorY));
            VectorND   tempNewVector = new VectorND(new[] { tempVectorX, tempVectorY });

            //Bevor geändert werden kann, muss auf lineare Unabhängigkeit geprüft werden
            LatticeND tempLattice = selectedPointTag == 1 ? new LatticeND(new[] { tempNewVector, Lattice.Vectors[1] }, false) : new LatticeND(new[] { Lattice.Vectors[0], tempNewVector }, false);

            if (tempLattice.Determinant == 0)
            {
                return;
            }

            Lattice = tempLattice;
            Lattice.GaussianReduce();

            NotifyPropertyChanged("Lattice");
            AddCoordinateLinesAndBasisVectorsToCanvas();
            UpdateCanvas();
        }