#pragma once
//2次元のベクトルを表すcVec2クラスを作る
//プライベートメンバ
//メンバ変数
//実数で(x, y)座標 メンバ変数らしく宣言
//パブリックメンバ:
//コンストラクタを
//引数なし
//x, yを引数でもち、座標を初期化するもの
//メンバ関数(戻り値と引数は考えて)
//セッター、ゲッター
//メンバをプリントする printVec
//ベクトルのスカラー倍を返す nmulVec関数
//ベクトル同士の足し算を返す nplusVec関数
//内積を計算して返す iProduct関数
//ベクトルを座標とみなして2つのベクトルの距離を計算して返すメンバ関数
//引数は、もう一つのベクトル(引数は何型?)、自分の位置と、7
//引数で受け取った位置の距離を返す(型は何が適切?)
class cVec2
{
private:
float mx, my;
public:
//コンストラクタ
cVec2();//引数なし
cVec2(float _x, float _y);//引数あり
//セッターの皆さん
//x,yの値を引数でもらってきて
//mx,myを初期化
void setXY(float _x, float _y);
//引数のcVec2のmx,myで
//自分のmx,myを初期化
void setXY(const cVec2& _p);
//_xを引数でもらって
//mxだけを初期化
void setX(float _x);
//_yを引数でもらって
//myだけを初期化
void setY(float _y);
//getterの皆さん
//mxの値だけゲットするgetter
float getX() const;
//myの値だけゲットするgetter
float getY() const;
//cVec2型でmx,myをマルっとゲットするgetter
cVec2 getPoint();
//自分のmx,myの値を出力する関数
void printVec();
cVec2 nmulVec(float _n);
cVec2 nplusVec(const cVec2& _v);
float iProduct(const cVec2& _v);
float clacDistancde(const cVec2& _v);
};
#include "cVec2.h"
#include <iostream>
//引数なしコンストラクタ
cVec2::cVec2()
{
this->mx = 0.0;
this->my = 0.0;
}
//引数ありコンストラクタ
cVec2::cVec2(float _x, float _y)
{
this->mx = _x;
this->my = _y;
}
//引数_x, _yをもらってきて
//my,myに代入するsetter
void cVec2::setXY(float _x, float _y)
{
this->mx = _x;
this->my = _y;
}
//mxだけ代入するsetter
void cVec2::setX(float _x)
{
this->mx = _x;
}
//myだけ代入するsetter
void cVec2::setY(float _y)
{
this->my = _y;
}
void cVec2::setXY(const cVec2 &_p)
{
*this = _p;
//this->mx = _p.mx;
//this->my = _p.my;
}
//ゲッターの皆さん
//mxだけゲットするgetter
float cVec2::getX() const
{
return(this->mx);
}
//ゲッターの皆さん
//myだけゲットするgetter
float cVec2::getY() const
{
return(this->my);
}
//ゲッターの皆さん
//cVec2型でまるっと値をゲットするgetter
cVec2 cVec2::getPoint()
{
return(*this);
}
void cVec2::printVec()
{
std::cout << "(" << this->mx <<
", " << this->my << ")";
}
theMain.cpp
#include <iostream>
#include <string>
#include "cVec2.h"
int main()
{
using std::cout;
using std::endl;
cVec2 p1(1.0, 0.0), p2(2.5, 2.1);
cout << "p1(x, y) = ";
p1.printVec();
cout << endl;
cout << "p2(x, y) = ";
p2.printVec();
cout << endl;
}