Vec2のベクトルの向きを直接指定する方法
まいまい  2016/11/16(Wed) 15:19
siv3dをいつも使わせていただいています.


Vec2で定義した二次元ベクトルの向きを直接指定する方法はありますでしょうか.
ベクトルの大きさを指定するのであればsetLength()関数があるので,ベクトルの向きを指定する関数もあると期待して探してみると,
rotate()関数がそれに該当するのかと思っていたのですが,どうも思うような操作になりません.


カラー画像の画素値をHSV色空間で読み込み,色相hでベクトルの向きを,彩度sでベクトルの大きさを定義したいと考えています.

ご教授よろしくお願いいたします.
記事編集
まいまい  2016/11/16(Wed) 18:04
連投ですみません.
自己解決しました.

Vec2型のrotate()関数は,角度を引数として,その角度だけベクトルを回転させる関数だと理解できました.
角度を直接指定できる機能と勘違いしていたため,ベクトルの成分を初期化せずに呼び出していたため,思うような操作にならなかったようです.

よって,この機能を使って,

Image image(L"任意の画像のファイルパス");
double angle = HSV(image[h][w]).h * Pi / 180; //度数法から弧度法へ変換
Vec2 vector(0,-1); //y軸マイナス方向を基準に回転させる
vector.rotate(angle);

このような処理によって目的の機能を実現できました.
編集
Reputeless  2016/11/16(Wed) 22:02
円座標を表す Circular 型も使えるかもしれません。

[サンプル]

Vec2 v = Circular(r, theta); // Circular3/6/9(r, theta);

Circular c = Vec2(x, y);

Println(v);

Println(c);
編集
件名
Re: Vec2のベクトルの向きを直接指定する方法
名前
コメント
画像添付


投稿修正キー (投稿を修正する時に使います)
画像認証 (右画像の数字を入力) 投稿キー

- WEB PATIO -