Abstand von einem Punkt zu einer Geraden



  • Kannst oder möchtest du meine Frage nicht beantworten?

    Durch aufmerksames Lesen könntest du bemerken, was er kann und welhe latente Kenntnisse auf dem Gebiet vorhanden sind. Optimizer als 8 Klässler zu behandeln ist schlimmer als ihm Code zu geben, da du ihn ja nicht als dümmer machen musst, als er ist.


  • Mod

    ich kann auf deine fehlerhafte fragestellung nur so antworten wie du es oben mit der katzenfrage vorgemacht hast.

    Durch aufmerksames Lesen könntest du bemerken, was er kann und wüstest dass google für ihn kein abwegiges mittel ist. Optimizer als Dau zu behandeln ist schlimmer als ihm eine simple Lösung zu bieten, da du ihn ja nicht dümmer machen musst, als er deiner meinung nach ist.

    und bloss weil er eine frage im forum gestellt hat, ist er übrigens keinesfalls dumm, hör mit deiner überheblichkeit mal auf.

    rapso->greets();

    da Optimiser seine lösung hat, ende der thread hier für mich mit Bohr : "Wir betreiben die Wissenschaft nicht [nur] für uns selbst, sondern [auch], um sie anderen einfach zu erklären"



  • Schon klar, wenn die Argumente ausgehen, wird eben alles umgedreht...



  • Woah Leute, jetzt beruhigt euch doch mal wieder...

    Ich habe eine Antwort bekommen, die genau die Vorgehensweise enthält, die ich mit dem Skalarprodukt angestrebt habe (Lot fällen, durch den Punkt gehen lassen, und die Länge bestimmen).
    Ich habe mich über die Antwort gefreut und dass das mit dem m nicht funktioniert, ist mir erst später aufgefallen. Trotzdem ist mir eine Antwort, die vielleicht noch nicht perfekt ist, allemal lieber als keine Antwort, sondern nur ein relativ unverständlicher Kommentar wie "lass es gut sein" 🙄

    Ein bisschen überheblich bist du schon, TGGC, wir hatten da auch mal unseren kleinen Disput. Ich will jetzt nicht wieder anfangen, aber wenn du nicht vorhast, eine Antwort zu geben, oder eine gegebene Antwort zu verbessern, dann schreib halt einfach gar nichts dazu. Spätestens bei deinem zweiten Posting hättest du begründen können, was an rapsos Antwort nicht passt.

    Ich hab mich als FOSler vielleicht auch ein bisschen dumm angestellt, dieses mathematische Problem zu lösen, aber ich glaube, es gibt in diesem Forum noch wesentlich dümmere Fragen.



  • Wenn man so unglaublich schlau wie ich bin, kann man doch auch so richtig überheblich sein. Dann wirft man den Leute einfach so'n google Link hin http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q=distance+point+line+2d&meta= und hofft das sie es mit der Maus bis zum ersten Link schaffen. Kritik von prallt quasi ungelesen ab und Smilies spart man im entscheidenten Moment ein.



  • Wenn man im "entscheidenden Moment" nichts konstruktives beitragen kann/will, dann kann man auch einfach nichts sagen. Scroll nochmal ganz nach oben (evtl. musst du auch auf die erste Seite des Flame Wars wechseln) und schau dir deinen ersten und zweiten Beitrag an.
    Vielleicht wirst du mit Hilfe deiner Genialität feststellen, dass diese nicht zur Lösung des Problems beigetragen haben. Aber du musst halt einfach immer deinen Senf dazu geben.



  • Durch eine der vielen meiner heldenhaftene Person innewohnenden gottgleichen Fähigkeiten ist mir der Hinweis auf google natürlich bereits ohne Benutzung des Mausrades bewusst. Und hey, ohne Senf schmeckt's ja nicht.



  • Gerade hat Richtungsvektor v und Punktvektor u.
    Punkt hat Punktvektor p.
    Dann ist der Abstand |w|:

    |w| = | u + [((p-u)*v)/(v*v)]*v-p |

    Das ganze resultiert aus der Orthogonalitätsbedingung v1 ort. zu w1 ->v1*w1=0
    Das Produkt zweier Vektoren ist in diesem Fall jeweils das Skalarprodukt, also eine Zahl (kein Vektor). Also bitte nicht mit Kreuzprodukt verwechseln !

    Gruß

    E-the-Real



  • Wiederum zu umständlich! Schau mal die Seite aus google an, dort wird für 2D auch davon abgeraten.



  • Hi,

    Hm, ich weiß ja nicht ob ihr schon lösungen habt oder so.
    Aber ich poste einfach mal meinen Weg.

    Punkt: x
    Gerade: p

    1.) Hilfeben Normalenvector des Richtungsvectors der Geraden.
    2.) d(abstand zu 0 ) mit hilfe des Punktes x bestimmen.
    3.) Gerade p mit Hilfsebene schneiden.
    4.) Den Abstand zwischen punkt x und Schnittpunkt von hilfsebene und gerade p.

    So das wars 🙂

    Cu



  • Oh mann...



  • // dist_Point_to_Line(): get the distance of a point to a line.
    //    Input:  a Point P and a Line L (in any dimension)
    //    Return: the shortest distance from P to L
    float dist_Point_to_Line(Point P, Line L)
    {
        Vector v = L.P1 - L.P0;
        Vector w = P - L.P0;
    
        double c1 = dot(w,v);
        double c2 = dot(v,v);
        double b = c1 / c2;
    
        Point Pb = L.P0 + b * v;
        return d(P, Pb);
    }
    

    😃



  • Es kommt noch besser: Eigentlich brauch ich ja den Abstand von nem Punkt zu einer Strecke. Ich hab mir halt gedacht, des krieg ich dann auch noch hin, ich frag mal nach Gerade. Im Moment hab ich folgendes:

    #define dot(u,v)   ((u).x * (v).x + (u).y * (v).y)
    	#define norm(v)    sqrt(dot(v,v))		// norm = length of vector
    	#define dis(u,v)     norm(u-v)     // distance = norm of difference
    	[PointFloat::]inline double GetDistanceToSegment(const PointFloat &rStartPoint, const PointFloat &rEndPoint)
    	{	
    		PointFloat v = rEndPoint - rStartPoint;
    		PointFloat w = *this - rStartPoint;
    
    		double c1 = dot(w,v);
    		if (c1 <= 0)
    			return dis(*this, rStartPoint);
    
    		double c2 = dot(v,v);
    		if (c2 <= c1)
    		   return dis(*this, rEndPoint);
    
    		double b = c1 / c2;
    		PointFloat Pb;
    		Pb.x = rStartPoint.x + b * v.x;
    		Pb.y = rStartPoint.y + b * v.y;
    		return dis(*this, Pb);
    	}
    

    Ich müsste es eigentlich nur noch testen, aber ich bin grad zu sehr mit DirectX Graphics beschäftigt, deshalb hab ich noch nichts gesagt 😃
    Man sollte nicht immer alles gleichzeitig machen 🙄



  • Ich glaub ihr habt den (C) Hinweis vergessen. 😉


Anmelden zum Antworten