実現したいこと
以下に示すプログラムをmul()メソッドを用いたものに変更したい。
※自分はEx02とvectorクラスを別々のファイルに分割して実行しています。
前提
①vector型オブジェクトをパラメータとして、自分自身とそのパラメータとの内積を計算し、戻り値とするメソッド。
②vector型オブジェクトをパラメータとして、自分自身とパラメータの2つのベクトルのなす角度を求めるメソッド。InProdメソッドを用いて作成すること。2つのベクトルa,bがなす角度θは、
θ=〖cos〗^(-1) ((a・b)/√((a・a)*(b・b)))
で、計算できる。a・b は、ベクトルaとベクトルbの内積である。
③double型オブジェクトをパラメータとして、自分自身とその値との積を計算し、vector型のオブジェクトを戻り値とするメソッド(自分自身を書き変えてはいけない)
④ベクトル (1, 1, 0)とベクトル (1. 0. 1) とがなす角を求め、「度」単位で出力するプログラム。
分からないこと
mul()メソッドについて分からないことは2つで、
①どこから呼び出せば良いのかが分からない。
②returnにvector型が用いられているものの、何をどう返せばよいかが分からない。
”vector型のオブジェクトを戻り値とするメソッド(自分自身を書き変えてはいけない)”という条件がいまいち呑み込めません。
内積を計算するうえでmulを用いるのかな?と考えたものの、すべてInProd()内で解決してしまっているので題意を満たす意味としてもmul()を用いたものしたいと考えています。
該当のソースコード
java
1//Ex02クラス 2public class Ex02 { 3 public static void main (String[] args){ 4 vector a = new vector(1,0,1); 5 vector b = new vector(1,1,0); 6 double theta = a.angle(b); 7 System.out.println(theta); 8 } 9} 10 11//vectorクラス 12public class vector{ 13 14 private double a, b, c; 15 16 public vector(double p1, double p2, double p3){ 17 a = p1; 18 b = p2; 19 c = p3; 20 } 21 22 public double InProd(vector v){ //aとbの内積 23 return (this.a * v.a) + (this.b * v.b) + (this.c) * v.c; 24 } 25 public double angle(vector v){ 26 double theta; 27 theta = this.InProd(v)/Math.sqrt(this.InProd(this)*v.InProd(v)); 28 theta = Math.acos(theta); 29 theta = theta * 180.0 / Math.PI; 30 return theta; 31 } 32 //public vector mul(double a) { ③ } 33}

回答2件
あなたの回答
tips
プレビュー