예제 #1
0
        private void drawSingleDreieck(int i)
        {
            Polygon polygon = new Polygon();

            polygon.StrokeThickness = 3;
            polygon.Stroke          = System.Windows.Media.Brushes.Red;
            cDreiecke Dreieck = meineDreiecke[i];

            System.Windows.Point tempPoint1 = new System.Windows.Point(Dreieck.AX, Dreieck.AY);
            System.Windows.Point tempPoint2 = new System.Windows.Point(Dreieck.BX, Dreieck.BY);
            System.Windows.Point tempPoint3 = new System.Windows.Point(Dreieck.CX, Dreieck.CY);
            polygon.Points = new PointCollection()
            {
                tempPoint1, tempPoint2, tempPoint3
            };
            //Canvas.SetZIndex(polygon, 2);
            CanvasDr.Children.Add(polygon);
        }
예제 #2
0
        public bool istGleich(cDreiecke tempDreieck)
        {
            PointF tempDreieckP1 = new PointF(tempDreieck.AX, tempDreieck.AY);
            PointF tempDreieckP2 = new PointF(tempDreieck.BX, tempDreieck.BY);
            PointF tempDreieckP3 = new PointF(tempDreieck.CX, tempDreieck.CY);
            PointF dreieckP1     = new PointF(AX, AY);
            PointF dreieckP2     = new PointF(BX, BY);
            PointF dreieckP3     = new PointF(CX, CY);

            if (dreieckP1 == tempDreieckP1 || dreieckP1 == tempDreieckP2 || dreieckP1 == tempDreieckP3)
            {
                if (dreieckP2 == tempDreieckP2 || dreieckP2 == tempDreieckP1 || dreieckP2 == tempDreieckP3)
                {
                    if (dreieckP3 == tempDreieckP3 || dreieckP3 == tempDreieckP2 || dreieckP3 == tempDreieckP1)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
예제 #3
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);
                                }
                            }
                        }
                    }
                }
            }
        }