Runden Sie den Winkel eines Dreiecks mit einem bestimmten Radius

Ich habe drei bekannte Punkte, die ein Dreieck definieren: A ( X A , j A ) , B ( X B , j B ) Und C ( X C , j C ) .
Wie runde ich den Winkel (ABC) eines bestimmten Radius R ?

Ich weiß, dass die Steigung von A B Rand ist: ( j A j B ) / ( X A X B ) .

Mein Kreis mit Zentrum (unbekannt) Ö : ( X Ö , j Ö ) wird eine Gleichung haben ( j A j Ö ) 2 + ( X A X Ö ) = R 2 .

Der Punkt B erfüllt auch die Kreisgleichung.

Ich kenne die Steigungen der Liniengleichungen meines Dreiecks und dass mein Kreis einen bekannten Radius hat R , Ich habe Probleme, den Mittelpunkt meines Kreises und die Punkte zu finden M , N wo sich mein Kreis mit den Kanten des Dreiecks schneidet. Die Punkte M , N sind auch die Tangentialpunkte des Kreises.

Nachdem ich ein wenig mit Mathematik gearbeitet habe, scheint es, dass ich zu viele Unbekannte für mein System habe.

Ich würde mich sehr über jede Hilfe freuen.

Mit freundlichen Grüße

Was bedeutet "um den Winkel herum"? Willst du die Kreisgleichung dieses Dreiecks finden? Mit anderen Worten, möchten Sie die Gleichung des Kreises finden, der durch alle drei Punkte geht?
Ich glaube, OP möchte einen Kreis, der durch Punkte verläuft A Und B (da die gegebene Kreisgleichung erfüllt ist durch A , und OP sagt diesen Punkt B wird es auch befriedigen). Aber ich denke, dass OP einfach einen Kreis mit Radius haben möchte R diese beiden Punkte passieren.
@JohnHughes Warum war dann C sogar in der Frage erwähnt?
Denn nicht jeder Fragesteller kann ein Problem perfekt abstrahieren. Meine beste Vermutung ist, dass OP möchte, dass der "Bogen" auf der Seite von weg ist C , und das habe ich in meiner Antwort angegeben, aber nur OP weiß es.

Antworten (2)

Die allgemeine Kreisgleichung lautet:

X 2 + j 2 + 2 G X + 2 F j + C = 0

Und alle drei Punkte werden diese Gleichung erfüllen.

Somit :

X A 2 + j A 2 + 2 G X A + 2 F j A + C = 0
X B 2 + j B 2 + 2 G X B + 2 F j B + C = 0
X C 2 + j C 2 + 2 G X C + 2 F j C + C = 0

Du hast drei Gleichungen und drei Unbekannte F , G , C . Lösen Sie sie zusammen, um die Werte zu erhalten, und setzen Sie sie in die Gleichung des Kreises ein, um seine Gleichung zu erhalten.

Ich denke, was Sie wollen, ist ein Kreisbogen, der durchläuft A B , mit Radius R , und mit der "Beule" des Bogens auf der gegenüberliegenden Seite C .

Hier ist eine Möglichkeit, das zu tun:

h = dist(A,B)/2   // compute half the distance from A to B
if (h < r) then ERROR // no radius-r circle can pass through
                      // points farther apart than 2r!
s = sqrt(r*r - h*h)   // Distance by which to offset circle
ux = Bx - Ax      // Ax denotes the x coord of point A
uy = By - Ay
w = sqrt(ux*ux + uy*uy)
ux = ux/w
uy = uy/w       // (ux, uy) is now a length-1 vector from A towards B

vx = Cx - Ax
vy = Cy - Ay
// Note that (-uy, ux) is a length 1 vector perpendicular to AB
// We check whether this points in the same halfspace as AC, 
// or the opposite one. 
dot = (-uy) * vx + ux * vy
if (dot > 0) then s = -s

Mx = (Ax + Bx)/2
My = (Ay + By)/2  // coordinates of midpoint of edge AB
Qx = Mx + s* (-uy)
Qy = My + s * ux  // Q is the center of the desired circle. 
                  // computed by offsetting the edge midpoint 
                  // by distance s along the vector (-uy, ux)