C# :: Aufgabe #390 :: Lösung #3
4 Lösungen

#390
Schnittpunkt zweier Geraden endlicher Länge
Fortgeschrittener - C#
von hollst
- 20.04.2021 um 10:25 Uhr
In der unendlich ausgedehnten euklidischen 2D-Eben wähle man zufällig vier unterschiedliche Punkte P1, P2, P3 und P4. Gedanklich verbinde man P1 und P2 mit einer geraden Linie L12 sowie P3 und P4 mit einer geraden Linie L34.
Man schreibe eine Funktion, die als Rückgabewert ausgibt, ob sich L12 und L34 schneiden in Abhändigkeit von den Anfangs-/Endpunkten P1 ... P4.
Viel Spaß!
Man schreibe eine Funktion, die als Rückgabewert ausgibt, ob sich L12 und L34 schneiden in Abhändigkeit von den Anfangs-/Endpunkten P1 ... P4.
Viel Spaß!
#3

von Waldgeist (2310 Punkte)
- 03.05.2021 um 13:51 Uhr
Hallo hier meine Lösung
C#-Code
C#-Code
C#-Code

namespace Schnittpunkte_2_Geraden_aus_Punkten_Aufgabe_390 { internal class Punkt { public float X { get; set; } public float Y { get; set; } } }

namespace Schnittpunkte_2_Geraden_aus_Punkten_Aufgabe_390 { internal class Strecke { public Punkt Startpunkt = new Punkt(); public Punkt Endpunkt = new Punkt(); public float Steigung; public float b; } }

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Schnittpunkte_2_Geraden_aus_Punkten_Aufgabe_390 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Strecke S1 = new Strecke(); Strecke S2 = new Strecke(); Punkt Schnittpunkt = new Punkt(); S1.Startpunkt.X = float.Parse(tbpunkt1_x.Text); S1.Startpunkt.Y = float.Parse(tbpunkt1_y.Text); S1.Endpunkt.X = float.Parse(tbpunkt2_x.Text); S1.Endpunkt.Y = float.Parse(tbpunkt2_y.Text); S1.Steigung = (S1.Endpunkt.Y - S1.Startpunkt.Y) / (S1.Endpunkt.X - S1.Startpunkt.X); S1.b = S1.Endpunkt.Y - S1.Steigung * S1.Endpunkt.X; tb_s1_steigung.Text = S1.Steigung.ToString(); tb_s1_b.Text = S1.b.ToString(); string gleichung; gleichung = "f(x) = " + S1.Steigung.ToString() +"x + "+ S1.b.ToString(); tb_s1_gleichung.Text = gleichung; S2.Startpunkt.X = float.Parse(tbpunkt3_x.Text); S2.Startpunkt.Y = float.Parse(tbpunkt3_y.Text); S2.Endpunkt.X = float.Parse(tbpunkt4_x.Text); S2.Endpunkt.Y = float.Parse(tbpunkt4_y.Text); S2.Steigung = (S2.Endpunkt.Y - S2.Startpunkt.Y) / (S2.Endpunkt.X - S2.Startpunkt.X); S2.b = S2.Endpunkt.Y - S2.Steigung * S2.Endpunkt.X; tb_s2_steigung.Text = S2.Steigung.ToString(); tb_s2_b.Text = S2.b.ToString(); string gleichung2; gleichung2 = "f(x) = " + S2.Steigung.ToString() + "x + " + S2.b.ToString(); tb_s2_gleichung.Text = gleichung2; if (S1.Steigung == S2.Steigung) { MessageBox.Show("Ihre Strecken / Geraden verlaufen paralell.\nEs gibt keinen Schnittpunkt."); } else { Schnittpunkt.X = (S2.b - S1.b) / (S1.Steigung - S2.Steigung); Schnittpunkt.Y = S1.Steigung * Schnittpunkt.X + S1.b; tb_schnittpunkt_x.Text = Schnittpunkt.X.ToString(); tb_schnittpunkt_y.Text = Schnittpunkt.Y.ToString(); } if ( ((S1.Startpunkt.X <= Schnittpunkt.X)&&(Schnittpunkt.X<=S1.Endpunkt.X)) && ((S2.Startpunkt.X <= Schnittpunkt.X)&& (Schnittpunkt.X <= S2.Endpunkt.X))) { tb_ergebnis.Text = "Die beideen Strecken schneiden sich!"; } else { tb_ergebnis.Text = "Die beiden Strecken scheiden sich nicht !!"; } } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1