見出し画像

高校数学10分プログラミング(数学B編 2.空間のベクトル)5日目「空間ベクトルの内積を考える2」

マガジンリスト > 数学B編 2.空間のベクトル > 5日目 課題

おはようございます。

本日は、高校数学10分プログラミング(数学B編 2.空間のベクトル)の5日目です。

本日の課題は、空間ベクトルの内積を計算するプログラムを作成することです。


課題

次の2つの空間ベクトル$${ \vec{a}, \vec{b} }$$のそれぞれの大きさと内積を計算し、そのなす角を求めて、コンソールに出力するプログラムを作成してください。

$${ \vec{a} = ( 1, 1, 0 ), \ \vec{b} = ( 1, 2, -2 ) }$$


ヒント

課題は、前回(4日目)と全く同じものです。前回は空間ベクトル$${\vec{a}=(a_1,a_2,a_3)}$$を PVector クラスの変数 a として与えたときに、空間ベクトルの成分が a.x, a.y, a.z で取り出せることを利用してプログラムを作成しました。

今回は、同じ課題を PVector クラスの下記の関数を利用してプログラムを作成してください。


ベクトルの大きさを求める関数「mag」

PVectorクラスの変数 a で表したベクトルに対してその大きさを求めるときは、mag 関数を用います。

PVector a = new PVector(a1, a2, a3);
a.mag();

mag 関数は引数を取りませんが、返り値はベクトル a の大きさ(float型)となります。

2つのベクトルの内積を求める関数「dot」

PVector クラスの変数 a, b で表した2つのベクトルに対してそれらの内積を求めるときは、dot 関数を用います。

PVector a = new PVector(a1, a2, a3);
PVector b = new PVector(b1, b2, b3);
b.dot(a);

dot 関数の引数は内積を算出したいベクトル(PVector クラス)を取り、返り値は2つのベクトルの内積(float型)となります。

2つのベクトルのなす角を求める関数「angleBetween」

PVector クラスの変数 a, b で表した2つのベクトルに対してそれらのなす角を求めるときは、angleBetween 関数を用います。

PVector a = new PVector(a1, a2, a3);
PVector b = new PVector(b1, b2, b3);
PVector.angleBetween(a, b);

angleBetween 関数の引数は2つのベクトル(PVectorクラス)を取り、返り値は2つのベクトルのなす角(ラジアン、float型)となります。なお、mag 関数や dot 関数と違い「PVector.angleBetween」という形で利用することに注意してください。


プログラム

上記で解説した関数を利用して、課題の2つのベクトル$${ \vec{a}, \vec{b} }$$のそれぞれの大きさと内積を計算し、そのなす角を求めるプログラム(未完成)を示します(ソースコード1)。

// 2つの空間ベクトルの内積とそのなす角を計算する
void setup(){

  // 2つの空間ベクトル
  PVector a = new PVector(1.0, 1.0, 0.0);
  PVector b = new PVector(1.0, 2.0, -2.0);

  // 2つのベクトルの大きさ
  float magnitude_a = 
  float magnitude_b = 
  
  // 2つのベクトルの内積を計算する
  float innerproduct = 
  
  // なす角を求める
  float theta = 
  
  println( "ベクトルaの大きさ:", magnitude_a);
  println( "ベクトルbの大きさ:", magnitude_b);
  println( "ベクトルの内積:", innerproduct);
  println( "ベクトルのなす角:", theta);
  
}

ソースコード1 2つのベクトル$${ \vec{a}, \vec{b} }$$のそれぞれの大きさと内積を計算し、そのなす角を求めるプログラム(未完成)

ソースコード1の中で、ベクトル$${\vec{a}, \vec{b}}$$の大きさ、2つのベクトルの内積、2つのベクトルのなす角を計算する式を記載していません。上記の PVector クラスの3つの関数を利用してプログラムを完成させてください。

なお、 スケッチ名は「calcInnerProduct3D2」とします。


それでは、よろしくお願いします。

MK's papa

いいなと思ったら応援しよう!