From ef9dd7c30bebebce8b36a44e9ecc6f5b3bb497af Mon Sep 17 00:00:00 2001 From: H1rono Date: Wed, 24 Aug 2022 17:32:02 +0900 Subject: [PATCH] =?UTF-8?q?Doxygen=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0=E3=80=81=E4=BF=AE=E6=AD=A3=20#22?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/ssr/AnalogIn.hpp | 60 ++++++++---- include/ssr/AnalogOut.hpp | 94 ++++++++++-------- include/ssr/DigitalIn.hpp | 60 ++++++++---- include/ssr/DigitalOut.hpp | 98 +++++++++++-------- include/ssr/Input.hpp | 38 +++++--- include/ssr/LowerBody.hpp | 185 ++++++++++++++++++++---------------- include/ssr/MotorDriver.hpp | 93 +++++++++++------- include/ssr/Output.hpp | 38 +++++--- include/ssr/PinType.hpp | 18 +++- include/ssr/Vector2D.hpp | 4 +- 10 files changed, 421 insertions(+), 267 deletions(-) diff --git a/include/ssr/AnalogIn.hpp b/include/ssr/AnalogIn.hpp index 6236750..ff5aa87 100644 --- a/include/ssr/AnalogIn.hpp +++ b/include/ssr/AnalogIn.hpp @@ -1,35 +1,55 @@ +/** + * @file AnalogIn.hpp + * @author H1rono (hronok66@gmail.com) + * @brief アナログ入力ピンを扱う型Output + * @version 0.1 + * @copyright Copyright (c) 2022 ssr2022-saka-maza + */ + #pragma once #ifndef SSR_ANALOG_IN_HPP + +/** + * @brief ssr/AnalogIn.hppがインクルードされていることを示すdefine + */ #define SSR_ANALOG_IN_HPP #include #include "ssr/PinType.hpp" #include "ssr/Input.hpp" -// このライブラリが使う名前空間 +/** + * @brief ssrライブラリが使う名前空間 + */ namespace ssr { - -// アナログ入力ピンを扱う -class AnalogIn : public Input { -public: - // 接続ピン - const PinType pin; - /** - * 初期化子 - * @param PinType pin 接続ピン + * @brief アナログ入力ピンを扱う型 */ - AnalogIn(PinType pin); - // ピンの初期設定。全体のsetup()内でこれを呼び出すこと - void begin(); - /** - * 接続したピンの値を読む - * @return uint16_t 読んだ値 - */ - uint16_t read() override; -}; + class AnalogIn : public Input { + public: + /** + * @brief 接続ピン + */ + const PinType pin; + + /** + * @brief 初期化子 + * @param pin ssr::PinType 接続ピン + */ + AnalogIn(PinType pin); + + /** + * @brief ピンの初期設定。全体のsetup()内でこれを呼び出すこと + */ + void begin(); -} + /** + * @brief 接続したピンの値を読む + * @return uint16_t 読んだ値 + */ + uint16_t read() override; + }; // class AnalogIn +} // namespace ssr #endif /* SSR_ANALOG_IN_HPP */ \ No newline at end of file diff --git a/include/ssr/AnalogOut.hpp b/include/ssr/AnalogOut.hpp index b2ba6a3..8a28188 100644 --- a/include/ssr/AnalogOut.hpp +++ b/include/ssr/AnalogOut.hpp @@ -1,56 +1,74 @@ +/** + * @file AnalogOut.hpp + * @author H1rono (hronok66@gmail.com) + * @brief アナログ出力ピンを扱う型AnalogOut + * @version 0.1 + * @copyright Copyright (c) 2022 ssr2022-saka-maza + */ + #pragma once #ifndef SSR_ANALOG_OUT_HPP + +/** + * @brief ssr/AnalogOut.hppがインクルードされていることを示すdefine + */ #define SSR_ANALOG_OUT_HPP #include #include "ssr/PinType.hpp" #include "ssr/Output.hpp" -// このライブラリが使う名前空間 +/** + * @brief ssrライブラリが使う名前空間 + */ namespace ssr { - -// アナログ出力ピンを扱う -class AnalogOut : public Output { -private: - // ピンに出力した値 - uint16_t _value; - -public: - // 接続ピン - const PinType pin; - /** - * 初期化子 - * @param PinType pin 接続ピン + * @brief アナログ出力ピンを扱う型 */ - AnalogOut(PinType pin); + class AnalogOut : public Output { + private: + /** + * @brief 最後にピンに出力した値 + */ + uint16_t _value; - /** - * ピンの初期設定。全体のsetup()内でこれを呼び出すこと - * @param uint16_t value 初期値。デフォルトは0 - */ - void begin(uint16_t value = 0); + public: + /** + * @brief 接続するピン + */ + const PinType pin; - /** - * 値を出力する - * @param uint16_t value 出力値。範囲は0~255 - */ - void setValue(uint16_t value); + /** + * @brief 初期化子 + * @param pin ssr::PinType 接続ピン + */ + AnalogOut(PinType pin); - /** - * 出力した値を得る - * @return 最後に出力した値 - */ - uint16_t getValue(); + /** + * @brief ピンの初期設定。全体のsetup()内でこれを呼び出すこと + * @param value uint16_t 初期値。デフォルトは0 + */ + void begin(uint16_t value = 0); - /** - * 値を出力する - * @param uint16_t value 出力する値 - */ - void write(uint16_t value) override; -}; + /** + * @brief 値を出力する + * @param value uint16_t 出力値。範囲は0~255 + */ + void setValue(uint16_t value); + + /** + * @brief 出力した値を得る + * @return 最後に出力した値 + */ + uint16_t getValue(); -} + /** + * @brief 値を出力する + * @param value uint16_t 出力する値 + */ + void write(uint16_t value) override; + }; // class AnalogOut +} // namespace ssr -#endif /* SSR_ANALOG_OUT_HPP */ \ No newline at end of file +#endif /* SSR_ANALOG_OUT_HPP */ diff --git a/include/ssr/DigitalIn.hpp b/include/ssr/DigitalIn.hpp index 372b685..62f4287 100644 --- a/include/ssr/DigitalIn.hpp +++ b/include/ssr/DigitalIn.hpp @@ -1,35 +1,55 @@ +/** + * @file DigitalIn.hpp + * @author H1rono (hronok66@gmail.com) + * @brief デジタル入力ピンを扱う型DigitalIn + * @version 0.1 + * @copyright Copyright (c) 2022 ssr2022-saka-maza + */ + #pragma once #ifndef SSR_DIGITAL_IN_HPP + +/** + * @brief ssr/DigitalIn.hppがインクルードされていることを示すdefine + */ #define SSR_DIGITAL_IN_HPP #include #include "ssr/PinType.hpp" #include "ssr/Input.hpp" -// このライブラリが使う名前空間 +/** + * @brief ssrライブラリが使う名前空間 + */ namespace ssr { - -// デジタル入力ピンを扱う -class DigitalIn : Input { -public: - // 接続ピン - const PinType pin; - /** - * 初期化子 - * @param PinType pin 接続ピン + * @brief デジタル入力ピンを扱う */ - DigitalIn(PinType pin); - // ピンの初期設定。全体のsetup()内でこれを呼び出すこと - void begin(); - /** - * 接続したピンの値を読む - * @return bool HIGHならtrue - */ - bool read() override; -}; + class DigitalIn : Input { + public: + /** + * @brief 接続ピン + */ + const PinType pin; + + /** + * @brief 初期化子 + * @param pin ssr::PinType 接続ピン + */ + DigitalIn(PinType pin); + + /** + * @brief ピンの初期設定。全体のsetup()内でこれを呼び出すこと + */ + void begin(); -} + /** + * @brief 接続したピンの値を読む + * @return bool HIGHならtrue + */ + bool read() override; + }; // class DigitalIn +} // namespace ssr #endif /* SSR_DIGITAL_IN_HPP */ diff --git a/include/ssr/DigitalOut.hpp b/include/ssr/DigitalOut.hpp index f33196d..facab2a 100644 --- a/include/ssr/DigitalOut.hpp +++ b/include/ssr/DigitalOut.hpp @@ -1,59 +1,79 @@ +/** + * @file DigitalOut.hpp + * @author H1rono (hronok66@gmail.com) + * @brief デジタル出力ピン型Digitalout + * @version 0.1 + * @copyright Copyright (c) 2022 ssr2022-saka-maza + */ + #pragma once #ifndef SSR_DIGITAL_OUT_HPP + +/** + * @brief ssr/DigitalOut.hppがインクルードされていることを示すdefine + */ #define SSR_DIGITAL_OUT_HPP #include #include "ssr/PinType.hpp" #include "ssr/Output.hpp" -// このライブラリが使う名前空間 +/** + * @brief ssrライブラリが使う名前空間 + */ namespace ssr { - -// デジタル出力ピンを扱う -class DigitalOut : Output { -private: - // 設定した値 - bool _value; -public: - // 接続ピン - const PinType pin; - /** - * 初期化子 - * @param PinType pin 接続ピン - * @param bool value 初期値 デフォルトはfalse(LOW) + * @brief デジタル出力ピンを扱う型 */ - DigitalOut(PinType pin); + class DigitalOut : Output { + private: + /** + * @brief 最後に出力した値 + */ + bool _value; + public: + /** + * @brief 接続ピン + */ + const PinType pin; - /** - * ピンの初期設定。全体のsetup()でこれを呼び出すこと - * @param bool value 初期値 デフォルトはfalse(LOW) - */ - void begin(bool value = false); + /** + * 初期化子 + * @param pin ssr::PinType 接続ピン + * @param value bool 初期値 デフォルトはfalse(LOW) + */ + DigitalOut(PinType pin); - /** - * 最後に設定した値を返す - * @return bool 最後に設定した値 HIGHはtrue - */ - bool getValue(); + /** + * @brief ピンの初期設定。全体のsetup()でこれを呼び出すこと + * @param value bool 初期値 デフォルトはfalse(LOW) + */ + void begin(bool value = false); - /** - * 値を設定する - * @param bool value 設定する値。trueでHIGH, falseでLOW - */ - void setValue(bool value); + /** + * @brief 最後に設定した値を返す + * @return bool 最後に設定した値 HIGHはtrue + */ + bool getValue(); - /** - * 値を出力する - * @param bool value 出力する値 - */ - void write(bool value) override; + /** + * @brief 値を設定する + * @param value bool 出力する値。trueでHIGH, falseでLOW + */ + void setValue(bool value); - // 最後に設定した値と逆の値を書き込む - void toggle(); -}; + /** + * @brief 値を出力する + * @param value bool 出力する値 + */ + void write(bool value) override; -} + /** + * @brief 出力を反転させる + */ + void toggle(); + }; // class DigitalOut +} // namespace ssr #endif /* SSR_DIGITAL_OUT_HPP */ diff --git a/include/ssr/Input.hpp b/include/ssr/Input.hpp index 6bd8b25..04aa411 100644 --- a/include/ssr/Input.hpp +++ b/include/ssr/Input.hpp @@ -1,24 +1,36 @@ +/** + * @file Input.hpp + * @author H1rono (hronok66@gmail.com) + * @brief 入力モジュール抽象型Input + * @version 0.1 + * @copyright Copyright (c) 2022 ssr2022-saka-maza + */ + #pragma once #ifndef SSR_INPUT_HPP -#define SSR_INPUT_HPP -// このライブラリが使う名前空間 -namespace ssr { +/** + * @brief ssr/Input.hppがインクルードされていることを示すdefine + */ +#define SSR_INPUT_HPP /** - * 入力を受け取るもの全般の抽象型 - * @tparam ResultT 読んだ値の型 + * @brief ssrライブラリが使う名前空間 */ -template class Input { -public: +namespace ssr { /** - * 値を読む - * @return ResultT 読み取った値 + * @brief 入力を受け取るもの全般の抽象型 + * @tparam ResultT 読んだ値の型 */ - virtual ResultT read() = 0; -}; - -} /* namespace ssr */ + template class Input { + public: + /** + * @brief 値を読む + * @return ResultT 読み取った値 + */ + virtual ResultT read() = 0; + }; // class Input +} // namespace ssr #endif /* SSR_INPUT_HPP */ diff --git a/include/ssr/LowerBody.hpp b/include/ssr/LowerBody.hpp index 67cde3d..601610d 100644 --- a/include/ssr/LowerBody.hpp +++ b/include/ssr/LowerBody.hpp @@ -1,101 +1,122 @@ +/** + * @file LowerBody.hpp + * @author H1rono (hronok66@gmail.com) + * @brief 足回りを操作する型LowerBody + * @version 0.1 + * @date 2022-08-24 + * @copyright Copyright (c) 2022 ssr2022-saka-maza + */ + #pragma once #ifndef SSR_LOWER_BODY_HPP + +/** + * @brief ssr/LowerBody.hppがインクルードされていることを示すdefine + */ #define SSR_LOWER_BODY_HPP #include -// このライブラリが使う名前空間 +/** + * @brief ssrライブラリが使う名前空間 + */ namespace ssr { - -// 足回りを操作 -class LowerBody { -public: - // 正面のモーター - MotorDriver motor1; - // 左後ろのモーター - MotorDriver motor2; - // 右後ろのモーター - MotorDriver motor3; - /** - * 初期化子 - * @param PinType dir1 モーター1につなげるDIRピンの番号 - * @param PinType pwm1 モーター1につなげるPWMピンの番号 - * @param PinType dir2 モーター2につなげるDIRピンの番号 - * @param PinType pwm2 モーター2につなげるPWMピンの番号 - * @param PinType dir3 モーター3につなげるDIRピンの番号 - * @param PinType pwm3 モーター3につなげるPWMピンの番号 + * @brief 足回りを操作 */ - LowerBody( - PinType dir1, PinType pwm1, - PinType dir2, PinType pwm2, - PinType dir3, PinType pwm3 - ); + class LowerBody { + public: + /** + * @brief 正面のモーター + */ + MotorDriver motor1; + /** + * @brief 左後ろのモーター + */ + MotorDriver motor2; + /** + * @brief 右後ろのモーター + */ + MotorDriver motor3; - /** - * 初期化子 - * @param MotorDriver motor1 モーター1 - * @param MotorDriver motor1 モーター2 - * @param MotorDriver motor1 モーター3 - */ - LowerBody(MotorDriver motor1, MotorDriver motor2, MotorDriver motor3); + /** + * @brief 初期化子 + * @param dir1 ssr::PinType モーター1につなげるDIRピンの番号 + * @param pwm1 ssr::PinType モーター1につなげるPWMピンの番号 + * @param dir2 ssr::PinType モーター2につなげるDIRピンの番号 + * @param pwm2 ssr::PinType モーター2につなげるPWMピンの番号 + * @param dir3 ssr::PinType モーター3につなげるDIRピンの番号 + * @param pwm3 ssr::PinType モーター3につなげるPWMピンの番号 + */ + LowerBody( + PinType dir1, PinType pwm1, + PinType dir2, PinType pwm2, + PinType dir3, PinType pwm3 + ); - /** - * @note - * # 各軸の設定など - * x軸: 重心から正面の方向 - * y軸: 重心からx軸の正方向を向いて垂直に左方向 - * - * # モーター配置の詳細 - * 正面 - * +----------^----------+ - * | --1-- | - * | | - * | x | - * | y* | - * | \ / | - * | 2 3 | - * | \ / | - * +---------------------+ - * 配置は上のAsciiArtの通り。真ん中の*が中心、軸はxyって書いてあるやつが各軸の正方向。各タイヤは反時計回りを正転方向で - * - * # 各変数名の定義 - * v_x := 並行速度x成分 - * v_y := 並行速度y成分 - * v_theta := 中心からタイヤまでの距離 * 角速度 - */ + /** + * @brief 初期化子 + * @param motor1 ssr::MotorDriver モーター1 + * @param motor1 ssr::MotorDriver モーター2 + * @param motor1 ssr::MotorDriver モーター3 + */ + LowerBody(MotorDriver motor1, MotorDriver motor2, MotorDriver motor3); - /** - * 足回りの初期設定。全体のsetup()内でこれを呼び出すこと - * @param float v_x 初期並行速度のx成分。デフォルトは0 - * @param float v_y 初期並行速度のy成分。デフォルトは0 - * @param float v_theta 中心からタイヤまでの距離*角速度 の初期値。デフォルトは0 - */ - void begin(float v_x = 0, float v_y = 0, float v_theta = 0); + /** + * @note + * # 各軸の設定など + * x軸: 重心から正面の方向 + * y軸: 重心からx軸の正方向を向いて垂直に左方向 + * + * # モーター配置の詳細 + * 正面 + * +----------^----------+ + * | --1-- | + * | | + * | x | + * | y* | + * | \ / | + * | 2 3 | + * | \ / | + * +---------------------+ + * 配置は上のAsciiArtの通り。真ん中の*が中心、軸はxyって書いてあるやつが各軸の正方向。各タイヤは反時計回りを正転方向で + * + * # 各変数名の定義 + * v_x := 並行速度x成分 + * v_y := 並行速度y成分 + * v_theta := 中心からタイヤまでの距離 * 角速度 + */ - /** - * 並行移動と回転を同時に設定する - * @param float v_x 並行速度のx成分 - * @param float v_y 並行速度のy成分 - * @param float v_theta 中心からタイヤまでの距離 * 角速度 - */ - void twist(float v_x, float v_y, float v_theta); + /** + * @brief 足回りの初期設定。全体のsetup()内でこれを呼び出すこと + * @param v_x float 初期並行速度のx成分。デフォルトは0 + * @param v_y float 初期並行速度のy成分。デフォルトは0 + * @param v_theta float 中心からタイヤまでの距離*角速度 の初期値。デフォルトは0 + */ + void begin(float v_x = 0, float v_y = 0, float v_theta = 0); - /** - * 回転なしの並行移動を設定する - * @param float v_x 並行速度のx成分 - * @param float v_y 並行速度のy成分 - */ - void parallel(float v_x, float v_y); + /** + * @brief 並行移動と回転を同時に設定する + * @param v_x float 並行速度のx成分 + * @param v_y float 並行速度のy成分 + * @param v_theta float 中心からタイヤまでの距離 * 角速度 + */ + void twist(float v_x, float v_y, float v_theta); - /** - * 並行移動なしで回転を設定する - * @param float v_theta 中心からタイヤまでの距離 * 角速度 - */ - void rotate(float v_theta); -}; + /** + * @brief 回転なしの並行移動を設定する + * @param v_x float 並行速度のx成分 + * @param v_y float 並行速度のy成分 + */ + void parallel(float v_x, float v_y); -} + /** + * @brief 並行移動なしで回転を設定する + * @param v_theta float 中心からタイヤまでの距離 * 角速度 + */ + void rotate(float v_theta); + }; // class LowerBody +} // namespace ssr # endif /* SSR_LOWER_BODY_HPP */ \ No newline at end of file diff --git a/include/ssr/MotorDriver.hpp b/include/ssr/MotorDriver.hpp index 8930b20..0f9733b 100644 --- a/include/ssr/MotorDriver.hpp +++ b/include/ssr/MotorDriver.hpp @@ -1,6 +1,18 @@ +/** + * @file MotorDriver.hpp + * @author H1rono (hronok66@gmail.com) + * @brief モータードライバ1つを扱う型MotorDriver + * @version 0.1 + * @copyright Copyright (c) 2022 ssr2022-saka-maza + */ + #pragma once #ifndef SSR_MOTOR_DRIVER_HPP + +/** + * @brief ssr/MotorDriver.hppがインクルードされていることを示すdefine + */ #define SSR_MOTOR_DRIVER_HPP #include @@ -8,46 +20,55 @@ #include "ssr/DigitalOut.hpp" #include "ssr/Output.hpp" -// このライブラリが使う名前空間 +/** + * @brief ssrライブラリが使う名前空間 + */ namespace ssr { - -// モータードライバを使う MD10C R3(CYTRON TECHNOLOGY)対応 -class MotorDriver : public Output { -public: - // PWMピン - AnalogOut pwm; - // DIRピン - DigitalOut dir; - - /** - * 初期化子 - * @param PinType dirPin DIRにつなげるピンの番号 - * @param PinType pwmPin PWMにつなげるピンの番号 - */ - MotorDriver(PinType dirPin, PinType pwmPin); - /** - * 初期設定。全体のsetup()内でこれを呼び出すこと - * @param int16_t power 初期パワー。デフォルトは0 - */ - void begin(int16_t power = 0); /** - * 出力したパワーを得る - * @return int16_t 最後に出力したパワー + * @brief モータードライバを使う型 MD10C R3(CYTRON TECHNOLOGY)対応 */ - int16_t getPower(); - /** - * パワーを出力する - * @param int16_t 出力するパワー。範囲は-255~255 - */ - void setPower(int16_t power); + class MotorDriver : public Output { + public: + /** + * @brief PWMに接続するピン + */ + AnalogOut pwm; + /** + * @brief DIRに接続するピン + */ + DigitalOut dir; - /** - * パワーを出力する - * @param int16_t value 出力するパワー。範囲は-255~255 - */ - void write(int16_t value) override; -}; + /** + * @brief 初期化子 + * @param dirPin ssr::PinType DIRにつなげるピンの番号 + * @param pwmPin ssr::PinType PWMにつなげるピンの番号 + */ + MotorDriver(PinType dirPin, PinType pwmPin); + + /** + * @brief 初期設定。全体のsetup()内でこれを呼び出すこと + * @param power int16_t 初期パワー。デフォルトは0 + */ + void begin(int16_t power = 0); + + /** + * @brief 出力したパワーを得る + * @return int16_t 最後に出力したパワー + */ + int16_t getPower(); + + /** + * @brief パワーを出力する + * @param power int16_t 出力するパワー。範囲は-255~255 + */ + void setPower(int16_t power); -} + /** + * @brief パワーを出力する + * @param value int16_t 出力するパワー。範囲は-255~255 + */ + void write(int16_t value) override; + }; // class MotorDriver +} // namespace ssr #endif /* SSR_MOTOR_DRIVER_HPP */ diff --git a/include/ssr/Output.hpp b/include/ssr/Output.hpp index 4771521..acd0bb0 100644 --- a/include/ssr/Output.hpp +++ b/include/ssr/Output.hpp @@ -1,24 +1,36 @@ +/** + * @file Output.hpp + * @author H1rono (hronok66@gmail.com) + * @brief 出力モジュール/機能抽象型Output + * @version 0.1 + * @copyright Copyright (c) 2022 ssr2022-saka-maza + */ + #pragma once #ifndef SSR_OUTPUT_HPP -#define SSR_OUTPUT_HPP -// このライブラリが使う名前空間 -namespace ssr { +/** + * @brief ssr/Output.hppがインクルードされていることを示すdefine + */ +#define SSR_OUTPUT_HPP /** - * 出力するもの全般の抽象型 - * @tparam ArgT 出力する値の型 + * @brief ssrライブラリが使う名前空間 */ -template class Output { -public: +namespace ssr { /** - * 値を出力する - * @param ArgT value 出力する値 + * @brief 出力するもの全般の抽象型 + * @tparam ArgT 出力する値の型 */ - virtual void write(ArgT value) = 0; -}; - -} /* namespace ssr */ + template class Output { + public: + /** + * 値を出力する + * @param ArgT value 出力する値 + */ + virtual void write(ArgT value) = 0; + }; // class Output +} // namespace ssr #endif /* SSR_OUTPUT_HPP */ diff --git a/include/ssr/PinType.hpp b/include/ssr/PinType.hpp index 1042a35..c06736c 100644 --- a/include/ssr/PinType.hpp +++ b/include/ssr/PinType.hpp @@ -1,3 +1,11 @@ +/** + * @file PinType.hpp + * @author H1rono (hronok66@gmail.com) + * @brief ピンを表す型 + * @version 0.1 + * @copyright Copyright (c) 2022 + */ + #pragma once #ifndef SSR_PIN_TYPE_HPP @@ -5,10 +13,14 @@ #include -// このライブラリが使う名前空間 +/** + * @brief このライブラリが使う名前空間 + */ namespace ssr { - // ピンを表す型 + /** + * @brief Arduino Megaのピン番号を表す型 + */ using PinType = uint8_t; -} +} // namespace ssr #endif /* SSR_PIN_TYPE_HPP */ \ No newline at end of file diff --git a/include/ssr/Vector2D.hpp b/include/ssr/Vector2D.hpp index 9693ace..4f327ab 100644 --- a/include/ssr/Vector2D.hpp +++ b/include/ssr/Vector2D.hpp @@ -18,10 +18,9 @@ #include /** - * @brief このライブラリが使う名前空間 + * @brief ssrライブラリが使う名前空間 */ namespace ssr { - /** * @brief 2次元ベクトルを表現する型 * @tparam T 成分の型 @@ -84,7 +83,6 @@ namespace ssr { return sqrt(magSq()); } }; // class Vector2D - } // namespace ssr /**