Я пытаюсь создать программу, в которой создаются три случайные точки в круге и приводят к созданию вписанного треугольника. Однако углы я получаю все облажалисьТри случайных точки по кругу
Вот мой код:
public static void main(String[] args) {
double r = 40.0;
double angle1 = Math.random()* (2 * Math.PI);
double angle2 = Math.random()* (2 * Math.PI);
double angle3 = Math.random()* (2 * Math.PI);
double x_1 = r * Math.cos(angle1);
double y_1 = r * Math.sin(angle1);
double x_2 = r * Math.cos(angle2);
double y_2 = r * Math.sin(angle2);
double x_3 = r * Math.cos(angle3);
double y_3 = r * Math.sin(angle3);
System.out.println("The coordinates of the three points are:
(" + x_1 + ", " + y_1 + ")
(" + x_2 + ", " + y_2 + ")
(" + x_3 + ", " + y_3 + ")");
//Get length of each side
double distanceFrom1To2 = Math.sqrt(Math.pow(x_2 - x_1, 2) +
Math.pow(y_2 - y_1, 2));
double distanceFrom2To3 = Math.sqrt(Math.pow(x_3 - x_2, 2) +
Math.pow(y_3 - y_2, 2));
double distanceFrom3To1 = Math.sqrt(Math.pow(x_1 - x_3, 2) +
Math.pow(y_1 - y_3, 2));
//Get angles ***
double triangleAngle1 = Math.atan(distanceFrom1To2/distanceFrom2To3);
double triangleAngle2 = Math.atan(distanceFrom2To3/distanceFrom3To1);
double triangleAngle3 = Math.atan(distanceFrom3To1/distanceFrom1To2);
System.out.println("The three angles are " + triangleAngle1 + " " +
triangleAngle2 + " " + triangleAngle3);
System.out.println(triangleAngle1 + triangleAngle2 + triangleAngle3);
}
Я точно знаю, что средства получения углов привинчены вверх. Вот пример запуска моей программы:
The coordinates of the three points are: (5.224534224725408,
-39.65733528787168) (-29.696946087404676, 26.79722733944279)
(32.70889681040468, -23.02451018906371)
The three angles are 0.7545364726122026 1.18830825410364
0.40435068059871415
Total angle sum: 2.347195407314557
Углы все складываются гораздо больше, чем Pi/2 радиан. Я рассмотрел закон синусов, но вы должны знать, по крайней мере, один угол для этого ...
Вы должны использовать ['atan2'] (https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#atan2 (double,% 20double)) вместо' atan' за ваши углы. Я предполагаю, что это Java, вы должны пометить свои вопросы языком, но совет не зависит от какого языка. –