Gerade durch 2 Punkte verbinden
-
Hallo leute,
habe folgendes problem:
ich bekomme werte von einem sensor. ich bekomme einmal die x- und y-werte.
hierbei nehme ich die ersten 10 und die letzten 10 y-werte und bilde jeweils sozusagen für den Anfang und das Ende einen Mittelwert. Somit habe ich die höhe, an der die gerade liegen soll bzw. mit den punnkten sie verbinden wird. Nun möchte ich die 2Punkte verbinden, so dass die mir eine Gerade ergibt. wie könnte ich dies in c++ realisieren?
Also:
x-wert y-wert
17.04(Anfang) 160.234-15.98(Ende) 159.56
damit man s sich besser vorstellen kann. nun, wie schon geschrieben, will ich mir eine gerade von 17.04 (160.234) bis -15.98(159.56) ziehen. geht das überhaupt?
-
Hallo
Wo stellst du die Daten dar? In der Konsole? In einem MFC-SDI?
chrische
-
Hallo,
Ich würde hier eher eine lineare Regression vorschlagen. Das hat aber primär nichts mit C++ zu tun.
-
also, die daten ziehe ich mir mit hilfe eines pointers aus einem feld, dass aus double-variablen besteht. die anwendung läuft auf einer mfc-applikation und soll im hintergrund ablaufen. es gibt keine anzeige oder ein display, wo dies gezeigt angezeigt wird.
-
PiotreD schrieb:
es gibt keine anzeige oder ein display, wo dies gezeigt angezeigt wird.
Was soll denn sonst mit dieser Geraden passieren?
-
Du willst eine Gerade, aber nichts darstellen? Was willst du dann? Die Steigung, etc.?
-
ich will diese gerade dann als "offset" setzen. also, dass sie den wert "0" annimmt und alles dann was über ihr ist, ist dann entsprechend -wert und sozusagen drüber ist dann +wert.
anschließend will ich einfach von zwischen den punkten integrieren.
-
Du willst wissen, ob bestimmte Punkte oberhalb oder unterhalb einer Geraden liegen, die durch zwei Punkte beschreiben ist?
-
Hallo
Wenn es dir um die Steigung geht, kannst du die mit den Koordinaten der zwei Punkte berechnen.
chrische
-
PiotreD schrieb:
ich will diese gerade dann als "offset" setzen. also, dass sie den wert "0" annimmt und alles dann was über ihr ist, ist dann entsprechend -wert und sozusagen drüber ist dann +wert.
Ganz klar wird das damit auch noch nicht, aber versuch's mal mit einer Zwei-Punkte-Geradengleichung.
-
also sowas sieht schon gut aus. gibts aber sowas nicht ähnlich in c++ geschrieben??
-
Hallo
Steigung:
float get_m(point& p1, point& p2) { float temp1, temp2; temp1 = p2[1] - p1[1]; temp2 = p2[0] - p1[0]; assert(temp2); return temp1 / temp2; }
Brauchst du nur noch eine Klasse point oder du nimmst CPoint, aber dann must du den Code anpassen.
-
Wozu willst du dir denn alles vorkauen lassen? Die paar Formeln kannst du doch auch direkt ins Programm einsetzen
//Steigung: m = (y2-y1)/(x2-x2); //Achsenabschnitt: b = y1 - m*x1
-
wofür steht eigentlich der achsenabschnitt??
ich kann doch einfach den ersten wert als startwert nehmen..
-
Für so eine Frage verdienst du eigentlich, nachträglich das Abi aberkannt zu bekommen
Der Achsenabschnitt ist der Schnitt der Geraden mit der y-Achse. Damit kannst du einen beliebigen Geradenpunkt berechnen mit 'y=m*x+b;' bzw. 'x=(y-b)/m;' (je nachdem, welche Koordinate dur vorgegeben hast).
-
Hallo
Eine Funktion ist immer so aufgebaut (2 Dimensionen):
y = m (Anstieg) * x + n (Stelle an die y Achse geschnitten wird also x = 0 ist)
So nun kannst du dir die Frage ja wohl beantworten.
chrische
-
jaja, ist ja gut..
also ist das sozusagen mein "offset" gegenüber der x-achse.wie eine geradengleichung aufgebaut ist war ja kein problem.danke für eure hilfe..