Kreis, der Dreieck aufspannst berechnen über Vektoren und in Programmiersprache C?

Hallo zusammen,

ich würde gerne den Flächeninhalt eines Kreises bestimmen. Der Kreis wird durch ein Dreieck aufgespannt, welches wiederum durch 3 Vektoren aufgespannt wird. Die Werte der Vektoren sind dabei egal, es geht nur um das Konzept. Das ganze soll dabei in der Programmiersprache C codiert und berechnet werden. Könnt ihr mir erklären, wie ihr vorgehen würdet? 1 zu 1 erklärt für Dumme 😅. Das sind alle Infos die ich habe. LG und vorab danke für die Hilfe

(1 votes)
Loading...

Similar Posts

Subscribe
Notify of
3 Answers
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
PWolff
2 months ago

Erst mal erinnere ich mich daran, dass ein solcher Kreis “Umkreis” heißt.

Dann im Internet nach Formeln für die Fläche eines Umkreises suchen, und wenn ich da nichts Brauchbares finde, überlegen, womit man die Fläche außerdem berechnen kann. Zum Radius findet sich dann was im Internet.

Es gibt auch Formeln, um die benötigten Größen aus den Vektoren der Seiten zu berechnen, wie die Höhen (Zerlegung von Vektoren in parallelen und orthogonalen Anteil) oder den Flächeninhalt des Dreiecks (Heron-Formel).

Vermutlich wäre es sinnvoller, am Anfang nachzusehen, welche Teile des Dreiecks gegeben sind, weil es 3 Vektoren sind, vermutlich nicht die Seitenvektoren, sondern die Ortsvektoren der Eckpunkte. Die Seitenvektoren sind die Differenzen.

Daraus würde ich dann eine Funktion bauen, die die 3 Vektoren als Argumente entgegennimmt und den Flächeninhalt zurückgibt (oder vielleicht den Radius). Mathematische Formeln in Code umzusetzen ist “Monkeys’ Business” (außer vielleicht Vermeiden von Divisionen durch 0).

ralphdieter
2 months ago

Mein erster Ansatz wäre:

  1. Berechne die Seitenlängen a, b, c (Länge der paarweisen Vektordifferenzen).
  2. Berechne den Flächeninhalt A des Dreiecks nach Heron.
  3. Berechne den Umkreisradius r = abc/(4A).
  4. Berechne die Kreisfläche F = πr².

Wenn Du gleich a², b², c², A² und r² berechnest, reichen Dir die Grundrechenarten.

ralphdieter
2 months ago
Reply to  ralphdieter

umkreis.c:

#include <stdio.h>

#define dim 3

const double A[dim] = { 1, 0, 0 };
const double B[dim] = { 0, 1, 0 };
const double C[dim] = { 0, 0, 1 };

double sqr( double x ) { return x*x; }

double len2 ( const double x[dim], const double y[dim] )
{
    /* TODO: for (int i<0; i<dim; ++i) ... */
    return sqr(x[0]-y[0]) + sqr(x[1]-y[1]) + sqr(x[2]-y[2]);
}

int main ( int argc, char const * const argv[] )
{
    const double a2 = len2( B, C );
    const double b2 = len2( C, A );
    const double c2 = len2( A, B );
    printf( "Seitenlängen: √%.2f, √%.2f, √%.2f\n", a2, b2, c2 );

    const double A2x16 = 4*a2*b2 - sqr(a2+b2-c2);
    printf( "Dreiecksfläche: √%.2f / 4\n", A2x16 );

    const double r2 = a2*b2*c2 / A2x16;
    printf( "Umkreisradius: √%.2f\n", r2 );

    printf( "Umkreisfläche: %.2f\n", r2*3.1415926535897932 );

    return 0;
}

Ausgabe:

> gcc -Wall -std=c99 umkreis.c && ./a.out
Seitenlängen: √2.00, √2.00, √2.00
Dreiecksfläche: √12.00 / 4
Umkreisradius: √0.67
Umkreisfläche: 2.09