質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
変数

変数は、プログラミングにおいて値や文字列などのデータを保持できる仕組みを指します。自由に名前を付けることができるため、管理しやすくなるのが特徴です。プログラムで変数の宣言を行い、値を代入して利用。保持したデータが通用する範囲でローカル変数とグローバル変数に分けられます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

2回答

1397閲覧

2つのベクトルから角度を求めるプログラム

NON36142293

総合スコア1

変数

変数は、プログラミングにおいて値や文字列などのデータを保持できる仕組みを指します。自由に名前を付けることができるため、管理しやすくなるのが特徴です。プログラムで変数の宣言を行い、値を代入して利用。保持したデータが通用する範囲でローカル変数とグローバル変数に分けられます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2023/02/04 15:33

実現したいこと

以下の添付したプログラムの①から④のメソッドの中身を完成させたい。
目的としては2つの三次元ベクトルから角度を求め度の単位で出力するというもの。

前提

①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) とがなす角を求め、「度」単位で出力するプログラム。

現状一番呑み込めていないところは引数に(vector v)があるところでなんとなく数値が3つ送られていることは理解できます。その場合、aのみの内積bのみの内積の計算は何となくできそうな気がしますがaとbの内積を計算するには2つの情報がいるのにどうすればいいいのか?という感じで躓いています。

該当のソースコード

public class vector { private double a, b, c; public vector(double p1, double p2, double p3) { a=p1; b=p2; c=p3; } public double InProd(vector v){ ① } public double angle(vector v) { ② } public vector mul(double a) { ③ } } public class Ex02 { public static void main(String[] args) { ④ } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

aとbの内積を計算するには2つの情報がいるのにどうすればいい

前提に

①vector型オブジェクトをパラメータとして、自分自身とそのパラメータとの内積を計算し、戻り値とするメソッド。

とあります。
自分自身が a 、パラメータが b とすれば辻褄が合うのではないでしょうか。

投稿2023/02/04 16:06

jimbe

総合スコア12545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

aとbの内積を計算するには2つの情報がいるのにどうすればいいいのか?という感じで躓いています。

vector a = new vector(1,0,1);
vector b = new vector(1,1,0);
double prod = a.InProd(b); // b.InProd(a) でもOK

投稿2023/02/04 15:52

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NON36142293

2023/02/05 09:07 編集

回答ありがとうございます。 一旦a・bの内積を求めることはできました。しかし、mulメソッドの使い道が分かりません。 自身の内積ならa.InProd(a)で求まるのでは?と思うのですが... また、調べてはみたのですがいまいち分からん点がありましてretuenでvector型を返すというのも理解できません。
episteme

2023/02/05 10:49 編集

> mulメソッドの使い道が分かりません。 使い道がわからないと解けないのですか? 使わないといけないのですか? > retuenでvector型を返すというのも理解できません。 なにが理解できんのですか?
NON36142293

2023/02/05 11:04

抽象的ですみません。 mulについてては(a・a)*(b・b)のa・aの部分の計算を行うものだと思っています。 分からない部分のついては主に2つで 1.doubleが型の引数をどのクラスからどのように送れば良いかが分かりません。各ベクトルの要素(double型のもの)を送りたいことは分かっています。 2.returnでvector型のものを返すの理解できているのですが具体的な返し方が分かりません。おそらくベクトルの一つの要素を二乗したものを返すのだろうという見当はついています。(誤っていたらすみません。)
episteme

2023/02/05 11:21

> mulについてては(a・a)*(b・b)のa・aの部分の計算を行うものだと思っています。 なぜ? a.InProd(a) * b.InProd(b) でいいじゃん。 再度訊くけど、mul を使わなきゃいけないんですか?
NON36142293

2023/02/05 11:24

題意を満たすという意味で、設けられているメソッドを使うべきなのではないかと考えたのでmulをどうにかして使おうと考えた次第です。
episteme

2023/02/05 11:32 編集

ごめんわからん。「~はmulメソッドを用いること」なんてな文言は見当たらない。 逆に mulを使わないと、問題のどの箇所を満たさなくなるんですか?
NON36142293

2023/02/05 11:34

きちんとした質問ができず本当に申し訳ないです。 可能な限りで良いのでこのepistemeさんが考えていらっしゃるコードを教えていただけば幸いです。 自分なりに調べたりしているのですが、根本的にできない理由がいくつかありそうなので教えていただけでば助かります。
episteme

2023/02/05 12:08 編集

> きちんとした質問ができず本当に申し訳ないです。 僕の問いに答えていない。mulを使わないと、問題のどの箇所を満たさなくなるんですか? > epistemeさんが考えていらっしゃるコードを教えていただけば幸いです。 課題/宿題なんでしょ? だったらコード示すのはあなたが先。
jimbe

2023/02/06 07:45

>設けられているメソッドを使うべきなのではないかと考えた が「深読み過ぎでは?」ということでしょう。 単に vector クラスを使って(Θを求める以外に)何かをするメソッドを作れるかというだけのことかも知れません。(これも深読みに当たりますが、現に vector を返すということに躓いているんですよね?)
episteme

2023/02/06 08:00

僕も深読みと思う。 mul()を使えというのなら、1:内積を求めよ 2:角度を求めよ に先立って問われるだろうし。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問