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.

89 lines
1.8 KiB

  1. /**
  2. * Funktionen von 'Laenge einer Strecke im Raum'
  3. *
  4. * Rainer Hihn
  5. */
  6. #include "strecke.h"
  7. /**
  8. * x-, y- und z-Koordianten einlesen
  9. */
  10. struct point readPoint()
  11. {
  12. struct point userPoint;
  13. printf("Bitte x-Koordinate eingeben \n");
  14. scanf("%62f", &userPoint.rX);
  15. printf("Bitte y-Koordinate eingeben \n");
  16. scanf("%62f", &userPoint.rY);
  17. printf("Bitte z-Koordinate eingeben \n");
  18. scanf("%62f", &userPoint.rZ);
  19. return userPoint;
  20. }
  21. /**
  22. * Distanz zwischen 2 Punkten berechnen
  23. */
  24. float distance(struct point point1, struct point point2)
  25. {
  26. float rNewX = 0;
  27. float rNewY = 0;
  28. float rNewZ = 0;
  29. float rDistance = 0;
  30. rNewX = point1.rX - point2.rX;
  31. rNewY = point1.rY - point2.rY;
  32. rNewZ = point1.rZ - point2.rZ;
  33. rDistance = sqrt((rNewX * rNewX) + (rNewY * rNewY) + (rNewZ * rNewZ));
  34. return rDistance;
  35. }
  36. /**
  37. * Flaeche eines Dreicks berechnen
  38. * die Seitenlaengen werden mittles distance()
  39. * berechnet
  40. */
  41. float areaTrinagle(struct point point1, struct point point2, struct point point3)
  42. {
  43. float rA = 0; /* Seitenlaenge A */
  44. float rB = 0; /* Seitenlaenge A */
  45. float rC = 0; /* Seitenlaenge A */
  46. float rS = 0; /* halber Umfang */
  47. rA = distance(point1, point2);
  48. rB = distance(point2, point3);
  49. rC = distance(point3, point1);
  50. rS = (rA + rB + rC)/2;
  51. return sqrt(rS * (rS - rA) * (rS - rB) * (rS - rC));
  52. }
  53. int main(void)
  54. {
  55. /**
  56. * Variablendeklaration
  57. */
  58. struct point firstPoint;
  59. struct point secondPoint;
  60. struct point thirdPoint;
  61. printf("Entfernung berechnen \n");
  62. /**
  63. * einlesen der 3 Punkte
  64. */
  65. firstPoint = readPoint();
  66. secondPoint = readPoint();
  67. thirdPoint = readPoint();
  68. printf("Die Flaeche des Dreiecks betraegt %f \n", areaTrinagle(firstPoint, secondPoint, thirdPoint));
  69. return 0;
  70. }