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); }
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); } } } } } } }
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; } } } }