C: Fläche eines Dreiecks im Raum berechnen
Thursday, 18 June 2009
Aufgabenstellung:
Der Benutzer soll 3 Punkte (bestehend aus je 3 Koordinaten) eingeben können und bekommt anschließend die Fläche dieses Dreiecks im Raum. Dies ist eine Erweiterung der Aufgabe Länge einer Strecke im Raum berechnen.
Benötigte Formeln:


/** * Headerdatei fuer Palindrom * Funktiondeklarierung * * Rainer Hihn */ #include#include /* * functions */ struct point readPoint(); float distance(struct point point1, struct point point2); float areaTrinagle(struct point point1, struct point point2, struct point point3); /* * structs */ struct point { float rX; float rY; float rZ; };
/**
* Funktionen von 'Laenge einer Strecke im Raum'
*
* Rainer Hihn
*/
#include "strecke.h"
/**
* x-, y- und z-Koordianten einlesen
*/
struct point readPoint()
{
struct point userPoint;
printf("Bitte x-Koordinate eingeben \n");
scanf("%62f", &userPoint.rX);
printf("Bitte y-Koordinate eingeben \n");
scanf("%62f", &userPoint.rY);
printf("Bitte z-Koordinate eingeben \n");
scanf("%62f", &userPoint.rZ);
return userPoint;
}
/**
* Distanz zwischen 2 Punkten berechnen
*/
float distance(struct point point1, struct point point2)
{
float rNewX = 0;
float rNewY = 0;
float rNewZ = 0;
float rDistance = 0;
rNewX = point1.rX - point2.rX;
rNewY = point1.rY - point2.rY;
rNewZ = point1.rZ - point2.rZ;
rDistance = sqrt((rNewX * rNewX) + (rNewY * rNewY) + (rNewZ * rNewZ));
return rDistance;
}
/**
* Flaeche eines Dreicks berechnen
* die Seitenlaengen werden mittles distance()
* berechnet
*/
float areaTrinagle(struct point point1, struct point point2, struct point point3)
{
float rA = 0; /* Seitenlaenge A */
float rB = 0; /* Seitenlaenge A */
float rC = 0; /* Seitenlaenge A */
float rS = 0; /* halber Umfang */
rA = distance(point1, point2);
rB = distance(point2, point3);
rC = distance(point3, point1);
rS = (rA + rB + rC)/2;
return sqrt(rS * (rS - rA) * (rS - rB) * (rS - rC));
}
/***********************
* Laenge einer Strecke im Raum
*
* Rainer Hihn
*/
#include "strecke.h"
int main(void)
{
/**
* Variablendeklaration
*/
struct point firstPoint;
struct point secondPoint;
struct point thirdPoint;
printf("Entfernung berechnen \n");
/**
* einlesen der 3 Punkte
*/
firstPoint = readPoint();
secondPoint = readPoint();
thirdPoint = readPoint();
printf("Die Flaeche des Dreiecks betraegt %f \n", areaTrinagle(firstPoint, secondPoint, thirdPoint));
return 0;
}