Kreisgleichung implementieren!
-
hallo,
ich habe eine Punktwolke und möchte aus jedem Punkt, den ich einlese, ein Kreis zeichenen mit einem Radius von 11mm!
Ich habe die Koordinaten der Punkte und wie gesagt auch die Radius.....wie kann ich die Gleichung r^2 = (x-a)2+(y-b)2
im C++ code mit dem gegebenen Parametern umwandeln!hier ist die Stelle meiner Funktion, wo ich das ein bauen möchte:
int punktanzahl = polydata->GetNumberOfPoints();
float koords[3];
for (int k = 0; k< punktanzahl; k++)
{
polydata->GetPoint(k, koords);
xkoord = koords[0];
ykoord = koords[1];//r^2 = (x-a)^2 + (y-b)^2 wobei r= 11mm und xkoord, ykoord entsprechen x,y vom Zentrum!
}
es soll einfach sein, aber haber es versucht und kamm leider nicht raus
, mein ziel es ist danach alle punkte die zu einem Kreis gehören zu merken! Hat jemand da Ahnung wie ich das erreiche!
ich bedanke mich im Voraus..
Chakhi
-
Hmm, habe zwar nicht ganz verstanden, was genau das Problem ist, aber IMHO macht es keinen Sinn, sich alle Punkte, die zu einem Kreis gehören, zu merken.
Willst du testen, ob ein Punkt innerhalb eines Kreises liegt:if((x-a)*(x-a) + (y-b)*(y-b)<r*r) //oder pow()
Das ganze dann vielleicht noch in eine Schleife packen...
Oder einen Kreis zeichnen:
Lösung dieses DGL-Systems ergibt einen Kreis! y1'=-y2 y1(0)=r y2'= y1 y2(0)=0
-
also, es ist folgendes: ich habe 3-4 Mengen von Punktwolken die ich nicht immer weiss wo sie sind, aber sie gehören zu einem Objekt, und die Punktwolken gehören auch jewils zu Kugelen die ich später regenerieren möchte!Das ganze ist nach eine sogenannte Hough-Transformation gemacht und da ist die Geschichte mit Kreiszeichnen und merken von den Punkten die einem Kreis gehören!
So bitte wenn da jemand mehr Ahnung hat, hilft mir......
Chakhi
-
Es gibt von Bresenham einen Algorithmus, mit dem man Kreise "zeichnen" kann bzw. die entsprechenden Punkte abklappern kann. Such mal danach mit Google. Also - Bresenham Circle - oder ähnliches als Suchanfrage.
Ich hoffe, dein Algorithmus soll nicht besonders schnell ablaufen. Eine Hough-Transformation dauert sehr sehr lange.
-
@Gregor:
ich muss es leider mit Hough-Algo. machen,weil die Aufgabestellung das von mir verlangt! aber wenn Du über Hough oder eine Kombination aus den beiden mehr weisst dann sag's mir bitteeeDanke
Chakhi
-
Was soll ich dir da sagen? Ich habe mal eine Hough-Transformation für Geraden (also nicht für Kreise) implementiert, ist aber schon länger her.
Das ist doch eigentlich ein ganz einfacher Algorithmus, wo ist also dein Problem?
-
mein Problem ist genau da, wo ich oben beschrieben habe!
bei mir ist Radius bekannt und ich will nur wissen wie ich die Gleichung implementiere in C++!Danke
Chakhi
-
Ich habe dir doch schon gesagt, nach welchem Algorithmus du da suchen mußt. Ist das so schwer?
-
@Gregor:
sorry ich habe Dich nicht verstanden, dachte Du meinst ich soll Bresenham statt Hough verwenden, jetzt habe ich kappiert was Du gemeint hast und werde danach suchen...
Grüße
Chakhi