vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Y-Positionen berechnen 
Autor: sv00010
Datum: 05.09.16 17:55

Ich muss ein zweifarbiges Vierecke zeichnen.
Meine Frage ist, wie ich die Y-Positionen herausfinde,
an welcher sich die schwarze Linie mit den rot-blauen Linien trifft.



Beitrag wurde zuletzt am 05.09.16 um 17:56:10 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Y-Positionen berechnen 
Autor: Manfred X
Datum: 05.09.16 23:16

https://de.wikipedia.org/wiki/Schnittpunkt

''' <summary>Schnittpunkt zweier Geraden</summary>
''' <param name="p1">erster Punkt auf Gerade 1</param>
''' <param name="e1">zweiter Punkt aus Gerade 1</param>
''' <param name="p2">erster Punkt auf Gerade 2</param>
''' <param name="e2">zweiter Punkt auf Gerade 2</param>
''' <returns>Schnittpunkt (oder Nothing)</returns>
Public Function Schnittpunkt(p1 As Point, e1 As Point, _
                             p2 As Point, e2 As Point) As Point
 
   Dim x1, x2, x3, x4, y1, y2, y3, y4 As Integer
 
   x1 = p1.X : x2 = e1.X : y1 = p1.Y : y2 = e1.Y
   x3 = p2.X : x4 = e2.X : y3 = p2.Y : y4 = e2.Y
 
   Dim nenner As Double = (y4 - y3) * (x2 - x1) - (y2 - y1) * (x4 - x3)
   If Math.Abs(nenner) < 0.00001 Then Return Nothing
 
   Dim xs_zähler As Double = _
      (x4 - x3) * (x2 * y1 - x1 * y2) - (x2 - x1) * (x4 * y3 - x3 * y4)
   Dim ys_zähler As Double = _
      (y1 - y2) * (x4 * y3 - x3 * y4) - (y3 - y4) * (x2 * y1 - x1 * y2)
 
   Return New Point(CInt(xs_zähler / nenner), CInt(ys_zähler / nenner))
 
End Function
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Y-Positionen berechnen 
Autor: sv00010
Datum: 14.09.16 17:22

Danke. Ich habe es heute eingebaut.

If Math.Abs(nenner) < 0.00001 Then Return Nothing
Ist dieser Code eine Abfrage auf parallele Geraden?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Y-Positionen berechnen 
Autor: Manfred X
Datum: 14.09.16 19:47

Hallo!

Es wird durch die Abfrage im Nenner ein Nullnenner (Overflow) vermieden,
der bei IEEE-Variablen nicht zu einer Ausnahme führen würde, sondern
zur Entstehung von Sonderwerten (Infinity/NaN).

Zum Nullnenner kommt es, wenn
- zwei Geraden identisch sind (auch bei unterschiedlichen
punktedefinierten Abschnitten),
- zwei Geraden in X- oder Y-Dimension (nahezu) parallel laufen,
- oder die beiden Def.-Punkte bei einer Gerade (nahezu) identisch sind.

Um zu entscheiden, ob zwei begrenzte Linien sich schneiden, muß man
zusätzlich prüfen, ob der berechnete Geraden-Schnittpunkt innerhalb
der Begrenzungen bei beiden Linienabschnitten liegt (für X und Y-Werte).

Beitrag wurde zuletzt am 14.09.16 um 20:14:58 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel