Вот мой код, указывающий c на вращение, заданный псевдокодом.
var rad = (targettransform.rotationEuler.y) * Math.PI / 180;
var difVec = targettransform.pos - othertransform.pos;
//the difVec.z which means radius
this._targetPos.z -= difVec.z * (1 - Math.cos(rad));
this._targetPos.x += difVec.z * Math.sin(rad);
this.transform.position = this._targetPos;
this.transform.lookAt(targettransform.position, Utils.UnitY);
Приведенный выше псевдокод - не более чем вращение, но я не понимаю, что 1 - Math.cos(rad)
делает, это может быть некоторый вывод относительно тригонометрии c. Может ли кто-нибудь объяснить эту математику подробно.
Редактировать
Извините, моя ошибка, основная цель фрагмента кода состоит в том, чтобы сместить "_targetpos" на vec3(difVec.z * Math.sin(rad),0,this._targetPos.z)
в плоскости xz. Мне удается переписать псевдокод, чтобы иметь смысл. Кажется, что фрагменты кода реализуют только функцию сохранения относительного расстояния и просмотра цели.