#1
23.04.2021 um 21:55 UhrZeilen 38 und 40 könnten vertauscht werden.

C# :: Aufgabe #390 :: Lösung #2
using System; using static System.Console; using System.Text; Double[][] XY_Test = new Double[][] { new double[] { 0, 0 }, // P1 (x1, y1) new double[] { 1, 1 }, // P2 (x2, y2) new double[] { 1, 1 }, // P3 (x3, y3) new double[] {-10, 0 } // P4 (x4, y4) }; WriteLine(Environment.NewLine + Intersection(XY_Test)); ReadKey(); static string ToMyString(Double[][] xy) { StringBuilder sb = new(); for (var i = 0; i < xy.Length; i++) { for (var j = 0; j < xy[i].Length; j++) sb.Append($"{xy[i][j].ToString("F2"),6}"); sb.AppendLine(); } return sb.ToString(); } static bool Intersection(Double[][] xy) { WriteLine(ToMyString(xy)); Double dx0 = xy[1][0] - xy[0][0]; WriteLine($"dx0 delta x L12 {dx0}"); //delta x L12 Double dy0 = xy[1][1] - xy[0][1]; WriteLine($"dy0 delta y L12 {dy0}"); //delta y L12 Double dx1 = xy[3][0] - xy[2][0]; WriteLine($"dx1 delta x L34 {dx1}"); //delta x L34 Double dy1 = xy[3][1] - xy[2][1]; WriteLine($"dy1 delta y L34 {dy1}"); //delta y L34 Double DX = xy[2][0] - xy[0][0]; Double DY = xy[2][1] - xy[0][1]; Double det = dy0 * dx1 - dy1 * dx0; if (det == 0) return false; Double det1 = DY * dx1 - dy1 * DX; Double det2 = dy0 * DY - DX * dx0; WriteLine($"det {det} det1 {det1} det2 {det2}"); Double t1 = det1 / det; Double t2 = det2 / det; WriteLine($"t1 {t1.ToString("F2"),6} t2 {t2.ToString("F2"),6}"); return (t1 <= 1) && (t2 <= 1) && (t1 >= 0) && (t2 >= 0); }
Kommentare:
hollst
Punkte: 13980
761 Aufgaben
132 Lösungen
117 Kommentare
hollst
Punkte: 13980
761 Aufgaben
132 Lösungen
117 Kommentare
hollst
Punkte: 13980
761 Aufgaben
132 Lösungen
117 Kommentare
Double det2 = DY * dx0 - dy0 * DX;
Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.