+1 Daumen
198 Aufrufe

Aufgabe:

Wie kann man äussere Tangenten zweier Kreise berechnen?


Problem/Ansatz:

Tangenten müssen immer im richtigen Winkel sein, egal wie die Kreise liegen.

von

Hallo Anna,

bist Du bereits mit den Grundlagen der Vektorrechnung vertraut?`

Wäre es für Dich verständlich, wenn \(m\) (ein Vektor) der Mittelpunkt des Kreises ist, \(r\) (eine Zahl) der Radius und \((x-m)^2 = r^2\) die Gleichung für alle Punkte \(x\) ist, die auf dem Kreis liegen? Evt. schreibst Du das auch so: \((\vec x - \vec m)^2=r^2\)

3 Antworten

+1 Daumen
 
Beste Antwort

Hallo Anna,

Angenommen, die Mittelpunkte der beiden Kreise sind \(m_1\) und \(m_2\) und die zugehörigen Radien \(r_1\) und \(r_2\), wobei \(r_2 \ge r_1\) . Das Ziel ist es, zunächst ein Paar Einheitsvektoren \(n_{a,b}\) (rot) zu berechen, die vom Mittelpunkt der Kreise zu den Berührpunkten \(q_{1,2}\) der Tangente \(t_a\) und den Berührpunkten \(q_{1,2}'\) der Tangente \(t_b\) (braun) zeigen. Es gilt $$q_{1,2} = m_{1,2} + r_{1,2} \cdot n_a, \quad q_{1,2}' = m_{1,2} + r_{1,2} \cdot n_b, \quad |n_{a,b}|=1$$

blob.png  

Berechne dazu die Vektoren \(d\) und \(d^\perp\), sowie den Wert \(e\) wie folgt:$$\eqalign{ d &= \frac{m_1-m_2}{|m_1-m_2|}, \quad e = \frac{r_2-r_1}{|m_1-m_2|} }$$jetzt sollte \(e\ge 0\) sein. Falls nicht, so multipliziere bitte \(d\) und \(e\) mit \(-1\). Dann ist noch \(d^\perp\):$$d ^\perp = \begin{pmatrix} -d_y\\d_x \end{pmatrix}$$Daraus lassen sich die beiden Normalenvektoren \(n_{a,b}\) berechnen:$$n_{a,b} = ed \pm \sqrt{1-e^2}\, d^\perp$$und damit kannst Du nun einfach z.B. \(q_1\) berechnen:$$q_1 = m_1 + r_1 \cdot n_a$$und die zugehörige Tangente \(t_a\) ist dann$$\eqalign{ &t_a: \space n_a \cdot x &=  n_a \cdot q_1 \\ &t_a: \space x &= q_1 + \lambda \cdot n_a^\perp, \quad n_a^\perp = \begin{pmatrix} -n_{ay}\\n_{ax} \end{pmatrix}}$$einmal in Normal- und einmal in Punkt-Richtungsform.

In obigen Bild ist (rechne es ruhig mal nach)$$m_1= \begin{pmatrix}6\\ 1\end{pmatrix}, \quad r_1 = \sqrt{13} \\ m_2 = \begin{pmatrix}14\\ 2\end{pmatrix}, \quad r_2 = 2\sqrt{13} \\ d = \frac 1{\sqrt{65}} \begin{pmatrix}-8\\ -1\end{pmatrix} , \quad e = \frac{1}{\sqrt 5} \\ n_a = \frac{1}{5 \sqrt{13}} \begin{pmatrix}-6\\ -17\end{pmatrix}, \quad n_b = \frac 1{\sqrt{13}}\begin{pmatrix}-2\\ 3\end{pmatrix} \\ q_1 = \begin{pmatrix}4.8\\ -2.4\end{pmatrix}, \quad q_1' = \begin{pmatrix}4\\ 4\end{pmatrix}$$

Falls Du mehr darüber wissen möchtest oder Fragen hast, so melde Dich bitte.


Nachtrag: alles zusammen gefasst lautet die Formel für die Vektoren \(n_{a,b}\) $$\eqalign{ \Delta m &= m_1 - m_2, \quad \Delta m^\perp = \begin{pmatrix} -\Delta m_y\\ \Delta m_x \end{pmatrix} \\ \Delta r &= r_2-r_1 \\ n_{a,b} &=  \frac {\Delta r\Delta m\pm \sqrt{(\Delta m)^2 - (\Delta r)^2} (\Delta m)^\perp}{(\Delta m)^2} \\ &= \frac 1{(\Delta m)^2} \begin{pmatrix} \Delta m & (\Delta m)^\perp \end{pmatrix} \begin{pmatrix} \Delta r\\ \pm \sqrt{(\Delta m)^2 - (\Delta r)^2} \end{pmatrix} }$$Die letzte Zeile zeigt die Formel in Matrixschreibweise, was praktisch ist, wenn man z.B. ein Tabellenkalkulationsprogramm benutzt oder in einem Programm.

von 27 k

Könntest Du mir verraten, was für eine Formatierung das ist, die Du nutzt?

Kann es so schlecht entziffern.

##hat sich erledigt##wird jetzt normal angezeigt##

Könntest Du mir verraten, was für eine Formatierung das ist, die Du nutzt?

Das ist die Standardformatierung hier plus die LaTeX-Funktion - siehe auch den LaTeX-Assistenten.

Kann es so schlecht entziffern.

Oh!? - was siehst Du denn? LaTeX liefert normalerweise ein sehr gutes Schriftbild - oder siehst Du nur den 'Source-Code'? Was für einen Browser benutzt Du?

Was siehst Du hier?: $$\int_a^b x^2\, \text dx + \sum_{k=0}^n k^2$$Sehen solltest Du dies:

blob.png

Chrome oder Firefox sollten problemlos alles anzeigen

Was passiert, wenn r1<r2?

Spielt es eine Rolle?

Was passiert, wenn r1<r2?

Ich ahne, dass Du was programmierst ... ;-)

Wenn \(r_1 \lt r_2\) ist, wird der Wert von \(e\) negativ. Deshalb habe ich oben in meiner Antwort bereits geschrieben, dass dann die Gleichung, bzw, die Werte von \(e\) und \(d\) mit \(-1\) zu multiplizieren sind. Was aber wiederum unnötig ist, da sich das in der Folgerechnung wieder aufhebt.

Wenn Du es programmierst, so nutze besser die geschlossene Form für die Vektoren \(n_{a,b}\). Ich habe das noch an meine Antwort angehängt (s.o.).

Wichtig ist nur, dass Du \(\Delta r\) und \(\Delta m\) richtig rechnest (s.o.); einmal steht der Index 1 vorn und einmal der Index 2. Dann spielen die Größenverhältnisse von \(r_{1,2}\) keine Rolle mehr.

Welche Programmiersprache?

Javascript.


=1−2|1−2|

diese Formel berechne ich so:

dx = m1x-m2x/ Abstand:m1m2

dy = m1y-m2y/ Abstand:m1m2


Passt das?

Passt das?

Ja, wenn das '/' einen Kommentar einleitet und der Rest der Zeile ignoriert wird. Ansonsten empfehle ich bei sowas eine eigene Klasse zu verwenden, die einen (mathematischen) Vektor implementiert. Weiß aber nicht, ab Javascript das kann.

Also Punkt q1 ist korrekt.

Leider kann ich die Tangente nicht berechnen, weil ich nicht weiß was λ ist.

Leider kann ich die Tangente nicht berechnen, weil ich nicht weiß was λ ist.


für jeden Wert λ ergibt sich genau ein Punkt der Tangente. Da man unendlich viele Werte für λ einsetzen kann hat man hier eine Gerade die aus unendlich vielen Punkten besteht.

Irgendwie passt es nicht. Die Punkte sind zwar auf den Kreisen, aber die Tangenten sind keine Tangenten.

let distance =(Math.sqrt(Math.pow(arrayCircle.x()-minCircle.x(), 2) + Math.pow(arrayCircle.y()-minCircle.y(), 2)));
l

Das ist die Berechnung. Passt leider nicht. Die Linien schneiden die Kreise.

//Abstand m1m2

let dx = (arrayCircle.x()-minCircle.x())/distance;
let dy = (arrayCircle.y()-minCircle.y())/distance;

let dTangentx= -dy;
let dTangenty=dx;
//e berechnen
let e = (arrayCircle.radius()-minCircle.radius())/distance;
//Normalvektoren berechnen
let naX = e*dx+Math.sqrt(1-Math.pow(e,2))*dTangentx;
let naY = e*dy+Math.sqrt(1-Math.pow(e,2))*dTangenty;
let nbX = e*dx-Math.sqrt(1-Math.pow(e,2))*dTangentx;
let nbY = e*dy-Math.sqrt(1-Math.pow(e,2))*dTangenty;
//Berührpunkte berechnen
let qx1 = arrayCircle.x()+(arrayCircle.radius()*naX);
let qy1 = arrayCircle.y()+(arrayCircle.radius()*naY);
let qx2 = minCircle.x()+(minCircle.radius()*naX);
let qy2 = minCircle.y()+(minCircle.radius()*naY);

//Punkte der Tangente
let tangentPoints =[qx1,qy1,qx2,qy2];

es ist kein offensichtlicher Fehler zu sehen. Wo laufen die 'Tangenten'? Vielleicht durch den Mittelpunkt oder vielleicht so:

blob.png

?

PS.: ich fände es gut, wenn Du mehr Feedback gibst.

Leider Vom Berührpunkt aus schneiden sie einen Kreis und gehen zum nächsten Berührpunkt.

Leider Vom Berührpunkt aus schneiden sie einen Kreis und gehen zum nächsten Berührpunkt.

nach dieser Beschreibung sind entweder drei Kreise pro Tangente involviert oder die Tangenten sind keine Geraden ??

Zeige bitte mal den Code, der das \(\Delta r\) berechnet.

Die roten Tangenten sind die, die gezeichnet werden. Die blauen, wie sie sein sollten.





blob.jpeg

let e = (arrayCircle.radius()-minCircle.radius())/distance;

hier ist der Fehler. Ich glaub' ich habe es inzwischen dreimal geschrieben!! Es muss heißen:

let e = (minCircle.radius()-arrayCircle.radius())/distance;

STIMMT!!!!!!DANKE!!!!!!!

0 Daumen

Zeichne eine Gerade g durch die Mittelpunkte der zwei Kreise.

Zeichne die zwei Senkrechten s1 und s2 zu g durch die Mittelpunkte der zwei Kreise.

Schnittpunkt von s1 mit einem Kreis sei p1. Schnittpunkt von s2 mit dem anderen Kreis sei p2. p1 und p2 müssen auf der gleichen Seite von g liegen.

Zeichne die Gerade h durch p1 und p2 ein.

Haben die Kreise den gleichen Radius, dann ist h Tangente an beiden Kreisen.

Haben die Kreise unterschiedlichen Radius, dann sei m der Schnittpunkt von h und g.

Konstruiere die Tangete des einen Kreises durch m. Diese ist auch Tangente des anderen Kreises.

Wie kann man auf einfachste Weise äussere Tangenten zweier Kreise berechnen?

Ich kenne nicht alle Wege, die äussere Tangenten zweier Kreise berechnen. Ich kann deshalb nicht beurteilen, ob mein Weg der einfachste ist.

von 55 k 🚀

Das soll nicht zeichnerisch sondern rechnerisch gelöst werden.

Ich bin davon ausgegangen, dass du die Konstruktion in eine Rechnung übersetzen kannst.

0 Daumen

Ich nehme im Folgenden an, dass die Radien der Kreise r1 und r2 sowie der Abstand m der Mittelpunkte gegeben sind. Lege das so in ein Koordinatensystem:

blob.png

Der größere Kreis sei K1 mit dem Mittelpunkt (0|0) und dem Radius r1, der kleinere Kreis sei K2 mit dem Mittelpunkt M(m|0) und dem Radius r2. Ein Kreis K3 um (0|0) habe den Radius d=r1 - r2. Dann wird c bestimmt mittels c2+d2=m2. Die Kreise (x-m)2+y2=c2 und x2+y2=d2 schneiden sich in P(u|v). Die Gerade mit der Steigung v/u durch den Punkt (m|0) schneidet K2 in Q.  Die Gerade mit der Steigung v/u durch den Punkt (0|0) schneidet K1 in R. Die Gerade QR ist dann Tangente.

von 82 k 🚀

Danke für die Antwort, die Tangenten sollen für verschiedene Kreise berechnet werden. Auch für Kreise, die nicht im Mittelpunkt des Koordinatensystem liegen. Ich habe zwar einen Rechenweg, aber die Tangenten haben nicht die richtigen Winkel.

Ich probiere diesen Ansatz.

Von zwei gegebenen Kreisen lässt sich immer einer so legen, dass sein Mittelpunkt der Ursprung des Koordinatensystems ist und der zweite lässt sich dann so legen, dass sein Mittelpunkt auf der x-Achse liegt.

Was soll hier als gegeben angesehen werden? War meine Annahme richtig, dass die Radien der Kreise r1 und r2 sowie der Abstand m der Mittelpunkte gegeben sind?  

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community