クラスを用いてベクトルを管理してみよう😊対象を数値データで表してしまえば😊 コンピュータは そのデータをメモリに格納して取り扱うことができます

ソーラー「


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次元ベクトルOAと名づけ


(2,1)で表すことにします



O(0,0)からB(1,2)へ線を引っ張った場合


x軸に対し60度の角度で線が伸びていきます


線分OBの長さは


三平方の定理より


(1²+2²)の2分の1乗


イコール


√5


となります


このように


x軸に対し60度の角度で伸び


長さが


√5の線分を


2次元ベクトルOBと名づけ


(1,2)で表すことにします


このとき


2次元ベクトルOA



2次元ベクトルOB


の向きは同じではありませんが



2次元ベクトルOA



2次元ベクトルOB


の足し算というものを実行してみたいと思います


このときも


2次元ベクトルOA(2,1)

2次元ベクトルOB(1,2)


の足し算は


OAOBであらわされます


OA(2💖,1)の第1項とOB(1💖,2)の第1項


OA(2,1💖)の第2項とOB(1,2💖)の第2項


が足し合わされ


OAOB=(3,3)となります


このベクトル(3,3)を


2次元ベクトルOCと名づけます


もちろん


このベクトル(3,3)はベクトルなので


方向と長さを持った線分です


このときの


2次元ベクトルOCの長さは


三平方の定理により


(3²+3²)の2分の1乗


イコール


3√2


になります」


マックス「


2次元ベクトルOA



2次元ベクトルOB


の向きは同じでないが


2次元ベクトルOA



2次元ベクトルOB


の足し算が実行できたというわけだ」


ソーラー「


今の


2次元ベクトルOA



2次元ベクトルOB


の足し算を


クラスを用いてプログラム上で行ってみたいと思います」


マックス「おっなんだか 本格的になってきたな」


ソーラー「といっても簡単です


まずは次のような


2つの数値データを取り扱うオブジェクトを生成することのできる


クラスVector(ベクトル)を用意します

👇

class Vector {


public:


int x;


public:


int y;


};


このクラスVectorは2つの数値データを管理することができるので


このクラスVectorを用いて


2次元ベクトルOA(2,1)



2次元ベクトルOB(1,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です


int(イント)「


2次元ベクトルOA(2,1)



2次元ベクトルOB(1,2)


の長さももとめているんだ」



ソーラー「えへっおまけです


このプログラムでは



2次元ベクトルOA(2,1)



2次元ベクトルOB(1,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です



コマンドプロンプト画面に表示しています


ここで


sqrt(a.x*a.x + a.y*a.y)のsqrtをはじめて見られた方もいるんじゃないかな?


このsqrtはsqrtにつづく()内のデータを2分の1乗にする働きがあります


ですから


sqrt(2)は


2の2分の1乗

イコール

√2



sqrt(3)は


3の2分の1乗

イコール

√3


を表すことになります


そのことを示すプログラムは以下のようになります


#include <iostream>


using namespace std;


class Vector {


public:


int x;


public:


int y;


};



int main() {


cout << sqrt(2) << "です" << "\n";



cout << sqrt(3) << "です" << "\n";


return 0;

}


ビルド実行結果


1.41421です

1.73205です



てんC「


2次元ベクトルOA(2,1)



2次元ベクトルOB(1,2)


のデータを


メモリに格納できました


ということは


2次元ベクトルOA(2,1)



2次元ベクトルOB(1,2)


これらのデータを


コンピュータを使ってとりあつかうことができますね


それも


2次元ベクトルOA



2次元ベクトルOB



         2つの数値データで



あらわすことができるからこそなのですね」



ソーラー「そうなんです


        😊対象を数値データで表してしまえば😊


コンピュータは


そのデータをメモリに格納してとりあつかうことができるようになるというわけなんです」





  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

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

カクヨムで可能な読書体験をくわしく知る