私はatan2fで中心に向かって私のオブジェクトの向きを変更しようとしますが、それは私に間違った価値を与えています。私はどこか間違っていますか?atan2f()が動作しません
glm::vec3 center = glm::vec3(0.4f, 0.4f, 0.0f);
for(int i = 0; i < num; i++){
float rel = i/(float) num;
float angle = rel * M_PI * 2;
glm::vec3 position = glm::vec3(cos(angle), glm::sin(angle), position.z);
position.x *= radius; position.y *= radius;
position.x += center; position.y += center;
glm::mat4 trans = glm::translate(glm::mat4(1.0f), position);
float newAngle = atan2f(position.y - center.y, position.x - center.x);
glm::mat4 rotation = glm::rotation(glm::mat4(1.0f), newAngle, glm::vec3(0, 0, 1));
numModel.at(i) = trans * rotation;
}
間違った値について特に気付くことができますか?たぶんあなたは、記号を反転するか、それに似たようなものに 'pi/2'を追加する必要があります。 – HolyBlackCat
@HolyBlackCatあなたの答えをありがとう。私は3つのオブジェクトを持っています。もし私がatan2fで角度を変えようとすると、0度、120度、-120度のいずれかになります。権利値は90度、135度、最後は約-135度でなければなりません。 – Vitge