Stack Exchange
ベクトルの向く方向に扇形を表示させたい。
提示コードはベクトルの方向と原点(1,0)のベクトルのなす角を求めてそのベクトルの方向を中心に扇形を描画するコードです。
ベクトル(0,1)の時は真下の描画されるのですがベクトル(-1,0)の時はコンソールログの通りラジアンの値がPIの値である3.14になりません。これはなぜでしょうか？
原点のベクトルの真逆なので180度つまりPIの値が返ってくるはずなのですが原因がわかりません。

試行錯誤したいこと
紙の上で計算
値を表示
参考サイト
２つのベクトルのなす角を求める：
http://www.sousakuba.com/Programming/gs_two_vector_angle.html
コンソールログ
cos() -0.25
vector.length() 2
rad 1.82348

cos() -0.25
vector.length() 2
rad 1.82348

cos() -0.25
vector.length() 2
rad 1.82348

cos() -0.25
vector.length() 2
rad 1.82348

cos() -0.25
vector.length() 2
rad 1.82348

cos() -0.25
vector.length() 2
rad 1.82348


ソースコード
※作り途中の関数のため引数の値を利用していません。
void SDL::Sector_Render::Render_Sector(const glm::vec2 vec, const float radian)
{

    const glm::vec2 origin = glm::vec2(1, 0);
    //glm::vec2 vector = glm::vec2(0, 1); //向き
    glm::vec2 vector = glm::vec2(-1, 0); //向き
    //glm::vec2 vector = glm::vec2(0, -1); //向き
    float rr = glm::dot(vector,origin) / (origin.length() * vector.length());
    //float rr = glm::dot(vector,origin) / (origin.length() * vector.length());

    std::cout<<"cos() "<<rr<<std::endl;

    float rad = glm::acos(rr);

    std::cout<<"vector.length() "<<vector.length()<<std::endl;
    std::cout<<"rad "<< rad<<std::endl;
    //std::cout<<PI<<std::endl;

    std::cout<<std::endl;

    float f = PI / 6000.0f;
    float r = rad / 2.0f;

    for (float i = rad - r; i < (PI * 2.0f); i += f)
    {
        for (int j = 0; j < range; j++)
        {
            float cos = glm::cos(i) * j + transform.position.x;
            float sin = glm::sin(i) * j + transform.position.y;

            glm::vec2 end = glm::vec2(0, 0);
            end.x = cos;
            end.y = sin;

            SDL_SetRenderDrawColor(render, color.x, color.y, color.z, color.w);
            SDL_RenderDrawPoint(render, end.x, end.y);
            SDL_SetRenderDrawColor(render, 0, 0, 0, 255);
        }

        if (i > rad + r)
        {
            break;
        }
    }
}


他所で質問を途中で抹消してこっちに移る，という迷惑なやり方が常習化しているようですが，最終的にここでやるのであれば最初からここ一本でやってくれませんかね？

この質問者は Stackoverflow 内でも頻繁に質問を消していますね。
回答を書いている途中で質問が消えるというのはかなり苛立たしいです。
もうこの質問者の質問には私は回答をつけません。

glm::vec2 の length はベクトルの次元を返す関数です。 つまりこの場合は常に 2 が返されるので期待した結果にはなりません。
ベクトルの長さを知りたいならば glm::length を用いてください。
