2次元ベクトルOAと2次元ベクトルOBの足し算をコンピュータを使って実行してみます
ソーラー「またまたですが
xy座標上に次の3つの点があるとします
O(0,0)
A(2,1)
B(1.2)
O(0,0)からA(2,1)へ線を引っ張った場合
x軸に対し30度の角度で線が伸びていきます
線分OAの長さは
三平方の定理より
(2²+1²)の2分の1乗となります
このように
x軸に対し30度の角度で伸び
長さが
(2²+1²)の2分の1乗
イコール
√5
の
線分を
2次元ベクトル
(2,1)で表すことにします
O(0,0)からB(1,2)へ線を引っ張った場合
x軸に対し60度の角度で線が伸びていきます
線分OBの長さは
三平方の定理より
(1²+2²)の2分の1乗
イコール
√5
となります
このように
x軸に対し60度の角度で伸び
長さが
√5の線分を
2次元ベクトル
(1,2)で表すことにします
このとき
2次元ベクトル
と
2次元ベクトル
の向きは同じではありませんが
2次元ベクトル
と
2次元ベクトル
の足し算というものを実行してみたいと思います
このときも
2次元ベクトル
と
2次元ベクトル
の足し算は
が足し合わされ
このベクトル(3,3)を
2次元ベクトル
もちろん
このベクトル(3,3)は
ベクトルなので
方向と長さを持った線分です
このときの
2次元ベクトル
三平方の定理により
(3²+3²)の2分の1乗
イコール
3√2
になります」
マックス「
2次元ベクトル
と
2次元ベクトル
の向きは同じでないが
2次元ベクトル
と
2次元ベクトル
の足し算が実行できたというわけだ」
ソーラー「
今の
2次元ベクトル
と
2次元ベクトル
の足し算を
クラスを用いてプログラム上で行ってみたいと思います」
マックス「おっなんだか 本格的になってきたな」
ソーラー「といっても簡単です
まずは次のようなクラスVectorを用意します
👇
class Vector {
public:
int x;
public:
int y;
};
👆
このクラスVectorは2つのデータを管理することができるので
このクラスVectorを用いて
2次元ベクトル
と
2次元ベクトル
を取り扱ってみたいと思います
そのプログラムはこちらです
👇
#include <iostream>
using namespace std;
class Vector {
public:
int x;
public:
int y;
};
int main() {
Vector a;
a.x = 2;
a.y = 1;
Vector b;
b.x = 1;
b.y = 2;
cout << a.x << "\n";
cout << a.y << "\n";
cout << "ベクトルvector_OAの長さは"<<sqrt(a.x*a.x + a.y*a.y)<<"です"<< "\n";
cout << b.x << "\n";
cout << b.y << "\n";
cout << "ベクトルvector_OBの長さは" << sqrt(a.x*a.x + a.y*a.y) << "です" << "\n";
return 0;
}
プログラムの実行結果
2
1
ベクトルvector_OAの長さは2.23607です
1
2
ベクトルvector_OBの長さは2.23607です
ソーラー「このプログラムでは
2次元ベクトル
と
2次元ベクトル
のデータを
Vector a;
a.x = 2;
a.y = 1;
Vector b;
b.x = 1;
b.y = 2;
を実行することにより
メモリに格納し
cout << a.x << "\n";
cout << a.y << "\n";
cout << "ベクトルvector_OAの長さは"<<sqrt(a.x*a.x + a.y*a.y)<<"です"<< "\n";
cout << b.x << "\n";
cout << b.y << "\n";
cout << "ベクトルvector_OBの長さは" << sqrt(a.x*a.x + a.y*a.y) << "です" << "\n";
を実行することにより
2
1
ベクトルvector_OAの長さは2.23607です
1
2
ベクトルvector_OBの長さは2.23607です
を
コマンドプロンプト画面に表示しています
さて
いよいよ
2次元ベクトル
と
2次元ベクトル
の足し算を
コンピュータを使って実行してみたいと思います
みなさんなら
どのようにプログラムを構成して
2次元ベクトル
と
2次元ベクトル
の足し算を実行されますか?」
int(イント)「はい、はいっっ🌞
Vector a;
a.x = 2;
a.y = 1;
Vector b;
b.x = 1;
b.y = 2;
を実行した後
Vector c;
c.x=a.x +b.x;
c.y=a.y+b.y;
を実行したらいいのかっな~
次のプログラムでいいのかな
👇
#include <iostream>
using namespace std;
class Vector {
public:
int x;
public:
int y;
};
int main() {
Vector a;
a.x = 2;
a.y = 1;
Vector b;
b.x = 1;
b.y = 2;
Vector c;
c.x = a.x + b.x;
c.y = a.y + b.y;
cout <<c.x<<"\n";
cout <<c.y<<"\n";
return 0;
}
プログラムの実行結果
3
3
int(イント)「このプログラムでは
2次元ベクトル
と
2次元ベクトル
のデータを
Vector a;
a.x = 2;
a.y = 1;
Vector b;
b.x = 1;
b.y = 2;
を実行することにより
メモリに格納しています
次に
Vector c;
を実行して
Vector型のオブジェクトcを作製しています
Vector型のオブジェクトcのメンバ変数
c.x
c.y
は
2次元ベクトル
次に
Vector型のオブジェクトcのメンバ変数
c.x
c.y
に
c.x = a.x + b.x;
c.y = a.y + b.y;
と
a.x + b.x
a.y + b.y
を代入しています
2次元ベクトル
と
2次元ベクトル
の足し算とは
2次元ベクトル
の第1項
と
2次元ベクトル
の第1項
2次元ベクトル
の第2項
と
2次元ベクトル
の第2項
をたしあわせることなので
a.x + b.x
a.y + b.y
で
2次元ベクトル
と
2次元ベクトル
の足し算
を表現できたことになるわけですね
Vector型のオブジェクトcのメンバ変数
c.x
c.y
に
a.x + b.x
a.y + b.y
を代入しておいたので
cout <<c.x<< "\n";
cout <<c.y<< "\n";
を実行すれば
2次元ベクトル
と
2次元ベクトル
の足し算の結果として
プログラムの実行結果
3
3
が表示されることになります
Vector型のオブジェクトcのメンバ変数
c.x
c.y
は
2次元ベクトル
Vector型のオブジェクトcのメンバ変数
c.x
c.y
に
Vector型のオブジェクトaのメンバ変数
a.x
a.y
と
Vector型のオブジェクトbのメンバ変数
b.x
b.y
を足し合わせた
a.x + b.x
a.y + b.y
が代入された状態で
cout <<c.x<< "\n";
cout <<c.y<< "\n";
を実行すれば
2次元ベクトル
と
2次元ベクトル
を
足し合わせた
2次元ベクトル
コマンドプロンプト画面に表示したことになります
どう? こんな感じかしら」
マックス「おお、やるな
int(イント)
いい感じで
コンピュータを使って
2次元ベクトル
と
2次元ベクトル
の足し算が実行できてるじゃないか」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます