No.2ベストアンサー
- 回答日時:
ちょっとしたサンプルを作ってみました。
N組読み込む所は省略
----------------------------------------------------------------
abstract class Triangle {
public static double yogen(double a, double b, double C){
return Math.sqrt(a*a+b*b-2*a*b*Math.cos(C));
}
public static double heron(double a, double b, double c){
double s = (a + b + c)/2.0;
return Math.sqrt(s*(s-a)*(s-b)*(s-c));
}
public static double areaBy_abC(double a, double b, double C){
return a*b*Math.sin(C)/2.0;
}
protected double a, b, c;
protected double A, B, C;
public double get_a(){ return a; }
public double get_b(){ return b; }
public double get_c(){ return c; }
public double getAngle_A(){ return A; }
public double getAngle_B(){ return B; }
public double getAngle_C(){ return C; }
abstract public double area();
}
class Triangle_ab_C extends Triangle {
//2辺とその挟む角がわかっている三角形
public Triangle_ab_C(double a, double b, double C){
this.a = a;
this.b = b;
this.C = C;
this.c = yogen(a, b, C);
A = Math.acos((b*b+c*c-a*a)/2.0/b/c);
B = Math.PI - A - C;
}
public double area(){
return areaBy_abC(a, b, C);
}
}
class Triangle_abc extends Triangle {
//3辺がわかっている三角形
public Triangle_abc(double a, double b, double c){
this.a = a;
this.b = b;
this.c = c;
A = Math.acos((b*b+c*c-a*a)/2.0/b/c);
B = Math.acos((a*a+c*c-b*b)/2.0/a/c);
C = Math.PI - A - B;
}
public double area(){
return heron(a, b, c);
}
}
class Triangle_a_BC extends Triangle {
//1辺とその両端の角がわかっている三角形
public Triangle_a_BC(double a, double B, double C){
this.a = a;
this.B = B;
this.C = C;
this.A = Math.PI - B - C;
this.b = a*Math.sin(B)/Math.sin(A);
this.c = a*Math.sin(C)/Math.sin(A);
}
public double area(){
return heron(a, b, c);
}
}
class Sample {
public static void main(String args[] ) {
Triangle[] triangles = {
// 正三角形をそれぞれのクラスで作成
new Triangle_ab_C(10, 10, Math.toRadians(60)),
new Triangle_abc(10, 10, 10),
new Triangle_a_BC(10, Math.toRadians(60), Math.toRadians(60)),
};
for(Triangle tri : triangles){
System.out.printf("a=%f,b=%f,c=%f%n",
tri.get_a(),tri.get_b(),tri.get_c());
System.out.printf("∠A=%f,∠B=%f,∠C=%f%n",
tri.getAngle_A(),tri.getAngle_B(),tri.getAngle_C());
System.out.printf("S=%f%n", tri.area());
}
}
}
No.1
- 回答日時:
数学の問題として”三角形の2つの角と爽辺が分かている場合、三角形の面積、角度、三角形の長さを計算するのはどうするのか。
”を解決してからjavaとしての解決法を質問すべきじゃないですか?お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 【数学の図形の名称と面積の計算方法】正三角形と扇形があります。正三角形の2辺を伸ばす 9 2023/02/06 23:30
- その他(プログラミング・Web制作) 3Dモデルにおける法線の計算について(Python,OpenGL) 1 2023/04/25 23:46
- 数学 下の三角形の表面積の求め方を教えて下さい。 円と扇形に分けて考える時、扇形の角度を求めてから解きたい 9 2022/04/14 15:26
- 数学 数学の質問です。 円に内接する四角形ABCD において, AB=2, BC = 1, CD = 3, 3 2023/04/18 18:28
- 数学 数学の得意な方教えて下さい。 図で四角形ABCDは平行四辺形で、△ABEと面積が等しい三角形をすべて 2 2022/05/07 16:25
- 数学 角度当てクイズVol.225の解き方おしえてください 1 2023/06/23 17:45
- 数学 画像の中学2年生の数学の問題について教えていただきたいです。 三角形ADCが二等辺三角形であることと 2 2023/01/29 16:14
- 数学 三角形の面積を求めよ 斜辺が11cm、底辺が14cmの二等辺三角形で 昨日解答をしてもらいましたが、 3 2023/03/11 22:03
- 数学 三角形ABCの辺BCを4 : 3に内分する点をTとし、点Tを接点として辺BCに接する円が点Aで直線A 3 2023/02/12 21:03
- 数学 数学 1 2023/04/10 17:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
べき乗
-
面積や角度を出力するプログラム
-
doubleとintの違い
-
実数からの小数部の取得
-
0dの意味を教えてください
-
Javaで何パーセント%かを表示...
-
分を表す数値(int型)を、小数...
-
演算子を使わない演算
-
C言語のポインターに関する警告
-
オブジェクトの中のプロパティ...
-
ダブルクォーテーションのrepla...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
javaで質問です。 文字列2023/2...
-
Visual Basic でのコードをASCI...
-
[JAVA]try 内の変数を外で!?
-
JSPやサーブレットでSystem.out...
-
ORA-01858: 数値を指定する箇所...
-
パソコンキーボードで時分秒を...
-
System.err. printlnとSystem.o...
-
getStringの値がNULLの時の処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実数からの小数部の取得
-
0dの意味を教えてください
-
Javaで何パーセント%かを表示...
-
べき乗
-
doubleとintの違い
-
分を表す数値(int型)を、小数...
-
乱数のdouble型について
-
double型変数値の整数部分のみ...
-
Double.parseDoubleの使い方
-
最大値と最小値の求め方
-
Javaによる利率計算の実装方法
-
double型の足し算について
-
Javaで計算
-
Java math.powメソッド
-
面積や角度を出力するプログラム
-
演算子 ^ は double,double に...
-
java のfor文について質問です。
-
JAVAのプログラムで、2乗計算...
-
掛け算演算を使わない掛け算
-
四捨五入をするメソッドを実装...
おすすめ情報