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.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
1.8 KiB

/**
* 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));
}
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;
}