Ejemplo n.º 1
0
        private void drawSingleSp(int i)
        {
            cPunkte Punkt = meinePunkte[i];

            foreach (cStrecken Strecke in meineStrecken)
            {
                if (Strecke.MyId == Punkt.StreckenID1 || Strecke.MyId == Punkt.StreckenID2)
                {
                    Line tempLine = new Line();
                    tempLine.Stroke          = System.Windows.Media.Brushes.LightBlue;
                    tempLine.StrokeThickness = 3;
                    tempLine.X1 = Strecke.Ep1X;
                    tempLine.Y1 = Strecke.Ep1Y;
                    tempLine.X2 = Strecke.Ep2X;
                    tempLine.Y2 = Strecke.Ep2Y;
                    CanvasSp.Children.Add(tempLine);
                }
            }

            Ellipse tempEllipse = new Ellipse();

            tempEllipse.Height = 5;
            tempEllipse.Width  = 5;
            tempEllipse.Fill   = System.Windows.Media.Brushes.DarkRed;
            double left = Punkt.SpX1 - 1.5;
            double top  = Punkt.SpY1 - 1.5;

            tempEllipse.Margin = new Thickness(left, top, 0, 0);
            CanvasSp.Children.Add(tempEllipse);
        }
Ejemplo n.º 2
0
        private void miAuswerten_Click(object sender, RoutedEventArgs e)
        {
            foreach (cStrecken strecke1 in meineStrecken)
            {
                foreach (cStrecken strecke2 in meineStrecken)
                {
                    if (strecke1.MyId != strecke2.MyId)
                    {
                        bool   line_intersect;
                        bool   segments_intersect;
                        PointF intersection;
                        PointF close_p1;
                        PointF close_p2;
                        FindIntersection(strecke1, strecke2, out line_intersect, out segments_intersect, out intersection, out close_p1, out close_p2);
                        if (segments_intersect)
                        {
                            cPunkte tempPoint = new cPunkte(intersection.X, intersection.Y, strecke1.MyId, strecke2.MyId);
                            bool    dupe      = false;
                            foreach (cPunkte point in meinePunkte)
                            {
                                if (point.SpX1 == tempPoint.SpX1 && point.SpY1 == tempPoint.SpY1)
                                {
                                    dupe = true;
                                }
                            }

                            if (!dupe)
                            {
                                meinePunkte.Add(tempPoint);
                            }
                        }
                    }
                }
            }

            foreach (cPunkte punkt1 in meinePunkte)
            {
                foreach (cPunkte punkt2 in meinePunkte)
                {
                    foreach (cPunkte punkt3 in meinePunkte)
                    {
                        if (punkt1.MyId != punkt2.MyId && punkt1.MyId != punkt3.MyId && punkt2.MyId != punkt3.MyId)
                        {
                            bool dreick;
                            FindDreiecke(punkt1, punkt2, punkt3, out dreick);
                            if (dreick)
                            {
                                cDreiecke tempDreieck = new cDreiecke(punkt1.SpX1, punkt1.SpY1, punkt2.SpX1, punkt2.SpY1, punkt3.SpX1, punkt3.SpY1);
                                bool      dupe        = false;
                                //PointF tempDreieckP1 = new PointF(tempDreieck.AX, tempDreieck.AY);
                                //PointF tempDreieckP2 = new PointF(tempDreieck.BX, tempDreieck.BY);
                                //PointF tempDreieckP3 = new PointF(tempDreieck.CX, tempDreieck.CY);
                                //foreach (cDreiecke Dreieck in meineDreiecke)
                                //{
                                //    PointF dreieckP1 = new PointF(Dreieck.AX, Dreieck.AY);
                                //    PointF dreieckP2 = new PointF(Dreieck.BX, Dreieck.BY);
                                //    PointF dreieckP3 = new PointF(Dreieck.CX, Dreieck.CY);
                                //    if (dreieckP1 == tempDreieckP1 || dreieckP1 == tempDreieckP2 || dreieckP1 == tempDreieckP3)
                                //    {
                                //        if (dreieckP2 == tempDreieckP2 || dreieckP2 == tempDreieckP1 || dreieckP2 == tempDreieckP3)
                                //        {
                                //            if (dreieckP3 == tempDreieckP3 || dreieckP3 == tempDreieckP2 || dreieckP3 == tempDreieckP1)
                                //            {
                                //                dupe = true;
                                //            }
                                //        }
                                //    }
                                //}
                                foreach (cDreiecke Dreieck in meineDreiecke)
                                {
                                    if (Dreieck.istGleich(tempDreieck))
                                    {
                                        dupe = true;
                                        break;
                                    }
                                }

                                if (!dupe)
                                {
                                    meineDreiecke.Add(tempDreieck);
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void FindDreiecke(cPunkte punkt1, cPunkte punkt2, cPunkte punkt3,
                                  out bool dreieck)
        {
            dreieck = false;
            PointF p1 = new PointF(punkt1.SpX1, punkt1.SpY1);
            PointF p2 = new PointF(punkt2.SpX1, punkt2.SpY1);
            PointF p3 = new PointF(punkt3.SpX1, punkt3.SpY1);

            if (punkt1.StreckenID1 == punkt2.StreckenID1)
            {
                if (punkt2.StreckenID2 == punkt3.StreckenID1)
                {
                    if (punkt3.StreckenID2 == punkt1.StreckenID2)
                    {
                        dreieck = true;
                    }
                }
                if (punkt2.StreckenID2 == punkt3.StreckenID2)
                {
                    if (punkt3.StreckenID1 == punkt1.StreckenID2)
                    {
                        dreieck = true;
                    }
                }
            }
            if (punkt1.StreckenID1 == punkt2.StreckenID2)
            {
                if (punkt2.StreckenID1 == punkt3.StreckenID1)
                {
                    if (punkt3.StreckenID2 == punkt1.StreckenID2)
                    {
                        dreieck = true;
                    }
                }
                if (punkt2.StreckenID1 == punkt3.StreckenID2)
                {
                    if (punkt3.StreckenID1 == punkt1.StreckenID2)
                    {
                        dreieck = true;
                    }
                }
            }

            if (punkt1.StreckenID2 == punkt2.StreckenID1)
            {
                if (punkt2.StreckenID2 == punkt3.StreckenID1)
                {
                    if (punkt3.StreckenID2 == punkt1.StreckenID1)
                    {
                        dreieck = true;
                    }
                }
                if (punkt2.StreckenID2 == punkt3.StreckenID2)
                {
                    if (punkt3.StreckenID1 == punkt1.StreckenID1)
                    {
                        dreieck = true;
                    }
                }
            }
            if (punkt1.StreckenID2 == punkt2.StreckenID2)
            {
                if (punkt2.StreckenID1 == punkt3.StreckenID1)
                {
                    if (punkt3.StreckenID2 == punkt1.StreckenID1)
                    {
                        dreieck = true;
                    }
                }
                if (punkt2.StreckenID1 == punkt3.StreckenID2)
                {
                    if (punkt3.StreckenID1 == punkt1.StreckenID1)
                    {
                        dreieck = true;
                    }
                }
            }
        }