(gelöst): Berechnung einer Sekante
-
Hallo Zusammen,
ich bin nicht ganz der Mathetype und habe aber ein kleines Problem beim Zeichnen
eines Objekte in meiner Anwendung.Hierbei weiss ich nicht wie ich die beiden Sekanten innerhalb eines Kreise berechne.
Von dem Kreis ist der Radius und die Position bekannt.
So sollte es ungefähr aussehen.
Danke für die Hilfe.
Je einfacher desto besser, da ich einiger solcher Symbole auf dem Bildschirm schnell zeichnen muss.
Gruss
-
Ein Kreis hat unendlich viele Sekanten.
Falls du genau die beiden meinst, die du da gemalt hast, könntest du folgendes machen:
Für den Einheitskreis gilt
x2+y2=1 Da setzt du dann dein x ein und kannst das passende Y ausrechnen. Machst du 4mal, für anfangs- und endpunkte beider Sekanten.
Hat der Kreis dann einen anderen Radius kannst du mit einer zentrischen Streckung von Miitelpunkt aus die Punkte für die längeren Sekanten brechnen.
-
Hi,
habe mich für eine andere Lösung entschieden,
Koordinaten von Polar -> Kartesisch und dann zum Kreismittelpunkt hinzu addiert.
hier der Code:
{ int a1,b1,c1,d1; int a2,b2,c2,d2; int dy,dx; float r, c; r=m_width/2; c=M_PI/180.0; a1=(int) r * sin( 130.0 * c ); b1=(int) r * cos( 130.0 * c ); c1=(int) r * sin( 20.0*c ); d1=(int) r * cos( 20.0*c ); a2=(int) r * sin( 230.0*c ); b2=(int) r * cos( 230.0*c ); c2=(int) r * sin( 340.0*c ); d2=(int) r * cos( 340.0*c ); dx=m_XPos+r; dy=m_YPos+r; setColor(painter); painter->drawEllipse(m_XPos,m_YPos,m_width,m_height); painter->drawLine(dx+a1,dy+b1,dx+c1,dy+d1); painter->drawLine(dx+a2,dy+b2,dx+c2,dy+d2); painter->setPen(Qt::black); painter->setBrush(Qt::white); painter->drawText(m_XPos+m_width,m_YPos+m_height/4,m_Label ); }
Fertig sieht das dann so aus:
Gruss