| |
VB.NET - Ein- und UmsteigerY-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. | |
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 | |
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? | |
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. | |
| 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 |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
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
|
|