(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


Anmelden zum Antworten