C# :: Aufgabe #261 :: Lösung #5
5 Lösungen
#261
Alle Winkel von einem Dreieck ausrechnen...
Fortgeschrittener - C#
von maxi72501
- 06.05.2019 um 15:01 Uhr
Gegeben sind alle Koordinaten. Die Punkte A und B gibt der Benutzer ein und die C Koordinate ist der Koordinaten Ursprung (0, 0).
Anhand der Seiten soll der Flächeninhalt und alle Winkel berechnet werden.
Anhand der Seiten soll der Flächeninhalt und alle Winkel berechnet werden.
#5
von luckyman81 (550 Punkte)
- 16.04.2020 um 22:28 Uhr
using System;
namespace CS_Aufgabe_261_Dreiecksberechnung
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("xA eingeben: ");
double xA = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("yA eingeben: ");
double yA = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("xB eingeben: ");
double xB = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("yB eingeben: ");
double yB = Convert.ToDouble(Console.ReadLine());
Triangle tri = new Triangle(xA, yA, xB, yB, 0.0, 0.0);
var sides = tri.CalculateSidesFromCoordinates();
Console.WriteLine($"Seitenlaengen a={sides.Item1:0.0000}, b={sides.Item2:0.0000}, c={sides.Item3:0.0000}");
var angles = tri.CalculateAnglesFromCosineRule();
Console.WriteLine($"Winkel alp={angles.Item1 * 180.0 / Math.PI:0.0000}, bet={angles.Item2 * 180.0 / Math.PI:0.0000}, gam={angles.Item3 * 180.0 / Math.PI:0.0000}");
Console.WriteLine($"Winkelsumme: {(angles.Item1+ angles.Item2 + angles.Item3) *180.0 / Math.PI}");
Console.WriteLine($"Flaeche A={tri.CalculateArea():0.0000}");
}
}
internal class Triangle
{
public double XA { get; private set; }
public double YA { get; private set; }
public double XB { get; private set; }
public double YB { get; private set; }
public double XC { get; private set; }
public double YC { get; private set; }
public int Sides { get; private set; }
public Triangle(double xA, double yA, double xB, double yB, double xC, double yC)
{
XA = xA;
YA = yA;
XB = xB;
YB = yB;
XC = xC;
YC = yC;
}
public (double,double,double) CalculateSidesFromCoordinates()
{
double sideA = Math.Sqrt(Math.Pow(YC - YB, 2.0) + Math.Pow(XC - XB, 2.0));
double sideB = Math.Sqrt(Math.Pow(YC - YA, 2.0) + Math.Pow(XC - XA, 2.0));
double sideC = Math.Sqrt(Math.Pow(YB - YA, 2.0) + Math.Pow(XB - XA, 2.0));
return (sideA, sideB, sideC);
}
public (double, double, double) CalculateAnglesFromCosineRule() {
var sides = CalculateSidesFromCoordinates();
double alpha = Math.Acos((
Math.Pow(sides.Item2, 2.0) + Math.Pow(sides.Item3, 2.0) - Math.Pow(sides.Item1, 2.0)) / (2.0 * sides.Item2 * sides.Item3));
double beta = Math.Acos((
Math.Pow(sides.Item1, 2.0) + Math.Pow(sides.Item3, 2.0) - Math.Pow(sides.Item2, 2.0)) / (2.0 * sides.Item1 * sides.Item3));
double gamma = Math.Acos((
Math.Pow(sides.Item1, 2.0) + Math.Pow(sides.Item2, 2.0) - Math.Pow(sides.Item3, 2.0)) / (2.0 * sides.Item1 * sides.Item2));
return (alpha, beta, gamma);
}
public double CalculateArea()
{
// ~Wikipedia/Trapezformel
return 0.5 * (XA * (YB - YC) + XB * (YC - YA) + XC * (YA - YB));
}
}
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
