Punkt auf Linie?
-
Geradengleichung ist eine gute idee. danke!
-
Hallo,
wäre es nicht einfacher das über die implizite Funktion der Geraden zu machen?
Dann gilt für f(x,y) > 0 -> Punkt oberhalb der Geraden. f(x,y) < 0 -> Punkt unterhalb der Geraden. Und f(x,y) = 0 -> Punkt auf der Geraden.Nur was hat das eigentlich mit Standard-C++ zu tun?
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Mathematik verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Blue-Tiger schrieb:
eine (gerade) Linie ist nichts weiter als eine lineare Funktion, so in der Art
y = a*x + b
Ähm, ja - so eine Geradengleichung ist ja mathematisch theoretisch schön und gut, aber in der Praxis gibt's dummerweise auch senkrechte Linien und dann hat man es mit mehr a zu tun als einem lieb sein kann ...
Ausserdem hat so eine praktisch vorkommende Linie nicht nur eine Steigung, sondern üblicherweise auch einen Anfang und ein Ende - im Gegensatz zur Wurst, die bekanntlich zwei Enden hat. Wenn man sich dafür interessiert ob der Punkt tatsächlich dazwischen auf der Linie liegt statt irgendwo im Universum auf einer virtuellen Verlängerung, nützt die Geradengleichung herzlich wenig.
Wenn man also den Punkt als x,y vorliegen hat und die Linie als x1, y1, x2, y2, dann ist der gute, alte Pythagoras ganz nützlich um den Abstand von x1,y1 nach x2,y2 (also die Länge der Linie) zu vergleichen mit der Summe der Abstände von x,y nach x1,y1 und x,y nach x2,y2. Wenn der Unterschied kleiner ist als eine willkürlich zu definierende Toleranzgrenze in der Größenordnung von 10 hoch minus irgendwas, liegt der Punkt auf der Linie. Wenn man die Ordinatenwerte nicht gerade in Megaparsec ausdrückt, sollte die Auflösung von float oder double allemal für eine Genauigkeit in der Größenordnung von Nanometern ausreichen. Also etwa so in der Art:
if(fabs(hypot(x2-x1,y2-y1) - hypot(x1-x,y1-y) - hypot(x2-x,y2-y)) < Toleranzgrenze) { Bescheid("Punkt auf Linie"); }
-
Nulliver schrieb:
Blue-Tiger schrieb:
eine (gerade) Linie ist nichts weiter als eine lineare Funktion, so in der Art
y = a*x + b
Ähm, ja - so eine Geradengleichung ist ja mathematisch theoretisch schön und gut, aber in der Praxis gibt's dummerweise auch senkrechte Linien und dann hat man es mit mehr a zu tun als einem lieb sein kann ...
Nö, dann ist a einfach 0.
Ausserdem hat so eine praktisch vorkommende Linie nicht nur eine Steigung, sondern üblicherweise auch einen Anfang und ein Ende - im Gegensatz zur Wurst, die bekanntlich zwei Enden hat. Wenn man sich dafür interessiert ob der Punkt tatsächlich dazwischen auf der Linie liegt statt irgendwo im Universum auf einer virtuellen Verlängerung, nützt die Geradengleichung herzlich wenig.
Dabei handelt es sich dann aber um eine Strecke. Die hat Anfang und Ende.
Eine Linie ist unbegrenzt. Wir sind hier schleißlich im Mathe-Forum
-
gegeben sei eine line in homogenen koordinaten:
l=k(a b c)^Tein punkt
x=w(x y 1)^T
liegt nun auf der linie wenn gilt:
xTl=lxT=0die parameter für für die line ergeben sich aus 2 punkten die auf dieser liegen:
l=x1*x2
(wobei * das kreutzproduct ist)
-
Taurin schrieb:
Nö, dann ist a einfach 0.
Nö, bei a=0 wäre y=b, unabhängig von x, also die Linie horizontal.
Taurin schrieb:
Eine Linie ist unbegrenzt. Wir sind hier schleißlich im Mathe-Forum
Huchja, das ist natürlich ein hartes Argument. Da hatte ich mich doch glatt von der Fragestellung blenden lassen. Weil von ±3 Pixel die Rede war, bin ich von einer auf dem Bildschirm real existierenden Linie - ähm - Strecke ausgegangen. Das war also der Grund, weshalb die Frage vom C++ Forum ins Mathe-Forum verschoben wurde. Darf man im Mathe-Forum überhaupt Code-Tags verwenden oder ist das ein Grund, den Kram ins Programmier-Forum zu verschieben
xroads42 schrieb:
ein punkt
x=w(x y 1)^T
liegt nun auf der linie wenn gilt:
xTl=lxT=0Janee, is klar - sowas lernt man heutzutage in der Schule
xroads42 schrieb:
kreutzproduct
Sowas nicht
Oh, sorry, wir sind ja hier nicht im Orthographie-Forum ...
-
Nulliver schrieb:
Taurin schrieb:
Nö, dann ist a einfach 0.
Nö, bei a=0 wäre y=b, unabhängig von x, also die Linie horizontal.
Taurin schrieb:
Eine Linie ist unbegrenzt. Wir sind hier schleißlich im Mathe-Forum
Huchja, das ist natürlich ein hartes Argument. Da hatte ich mich doch glatt von der Fragestellung blenden lassen. Weil von ±3 Pixel die Rede war, bin ich von einer auf dem Bildschirm real existierenden Linie - ähm - Strecke ausgegangen. Das war also der Grund, weshalb die Frage vom C++ Forum ins Mathe-Forum verschoben wurde. Darf man im Mathe-Forum überhaupt Code-Tags verwenden oder ist das ein Grund, den Kram ins Programmier-Forum zu verschieben
xroads42 schrieb:
ein punkt
x=w(x y 1)^T
liegt nun auf der linie wenn gilt:
xTl=lxT=0Janee, is klar - sowas lernt man heutzutage in der Schule
toller beitrag Nulliver. is toll das wir jetzt wissen, das man das in der schule lernt. bringt aber absolut nix zu den beitrag.
und außerdem wüßte ich nicht das Projektive geometrie auf den stundenplänen steht.Nulliver schrieb:
xroads42 schrieb:
kreutzproduct
Sowas nicht
Oh, sorry, wir sind ja hier nicht im Orthographie-Forum ...entschuldigung bitte das ich legastheniker bin. tut mir wirklich leid. ehrlich. tötest du mich jetzt? ich habe es ja wohl nicht verdient zu leben,wenn ich nichtmal richtig schreiben kann.
-
xroads42 schrieb:
entschuldigung bitte das ich legastheniker bin. tut mir wirklich leid. ehrlich. tötest du mich jetzt? ich habe es ja wohl nicht verdient zu leben,wenn ich nichtmal richtig schreiben kann
Einfach lächerlich! Dein Selbstmitleid in der letzten Zeit ist echt zum abgewöhnen!
Sorry, dass es Offtopic war, aber das musste mal gesagt werden!
-
Griffin schrieb:
xroads42 schrieb:
entschuldigung bitte das ich legastheniker bin. tut mir wirklich leid. ehrlich. tötest du mich jetzt? ich habe es ja wohl nicht verdient zu leben,wenn ich nichtmal richtig schreiben kann
Einfach lächerlich! Dein Selbstmitleid in der letzten Zeit ist echt zum abgewöhnen!
Sorry, dass es Offtopic war, aber das musste mal gesagt werden!
du kannst doch nur lügen!
tja, ich habe diese gesellschaft wohl net verdient.
spasti
-
Nulliver schrieb:
Taurin schrieb:
Nö, dann ist a einfach 0.
Nö, bei a=0 wäre y=b, unabhängig von x, also die Linie horizontal.
Ok, Asche auf mein Haupt.
Taurin schrieb:
Eine Linie ist unbegrenzt. Wir sind hier schleißlich im Mathe-Forum
Huchja, das ist natürlich ein hartes Argument. Da hatte ich mich doch glatt von der Fragestellung blenden lassen. Weil von ±3 Pixel die Rede war, bin ich von einer auf dem Bildschirm real existierenden Linie - ähm - Strecke ausgegangen. Das war also der Grund, weshalb die Frage vom C++ Forum ins Mathe-Forum verschoben wurde. Darf man im Mathe-Forum überhaupt Code-Tags verwenden oder ist das ein Grund, den Kram ins Programmier-Forum zu verschieben
Naja, manche Programme haben auch Scrollbalken, mit denen man auch links und
rechts neben den Bildschirm gucken kann :p
-
Ich kann ja noch mal was produktives in den Thread schmeißen.
Sei <.,.> das Skalarprodukt im R^2. Stehe n € R^2 senkrecht auf der Geraden und habe den Betrag 1. Sei a € R^2. Dann beschreibt die Gleichung <n, x - a> = 0 eine gerade und heißt Hess'sche Normalform der Geraden. Sei p € R^2 ein Punkt. |<n, p - a>| ist dann der kürzeste Abstand zwischen p und der Geraden.
Das Skalarprodukt von (x1 x2) und (y1 y2) berechnet sich aus x1 * y1 + x2 * y2.
-
für das mit dem dazwischenliegen;
wenn du dir die Punkt-Richtungs-Gleichung der Graden ansiehst.
gebildet aus Anfangs und End-Punkt.
X=P0+b*(P1-P0) so läuft das Parameter b von 0 bis 1 innerhalb der Grade
-
Eine Linie ist unbegrenzt. Wir sind hier schleißlich im Mathe-Forum
Bist du dir da sicher? Also eine gerade ist unbegrenzt, eine Strecke ist begrenzt. Aber von einer Linie hab ich im zusammenhang mit Mathe noch nie was gehöhrt.
-
d = ein Ortsvektor (der Punkt)
Liegt die Geradengleichung in Normalenform (bzw. Hesseform) vor, kann man leicht überprüfen, ob der Punkt darauf liegt:
g: n * (x - a) = 0
lediglich den zu untersuchenden Ortsvektor anstelle des Vektors x einfügen, ausmultiplizieren und prüfen, ob die Gleichung aufgeht. Wenn ja, liegt der Punkt auf der Geraden
Bei der Parameterform ( g: x = a + λu ) setzt man anstelle von x d ein. Man muss jetzt λ rausfinden, was in ein lineares Gleichungssystem führt. Im R² sind das lediglich zwei Gleichungen. Beide müssen nach λ aufgelöst werden. Wenn für beide Gleichungen der selbe Wert für λ rauskommt, liegt der Punkt auf der Geraden.