2 벡터의 회전을 사용하려고하지만 두 가지 문제가 있습니다. 먼저 벡터가 뒤쪽으로 회전하는 것처럼 보이고 두 번째로 벡터가 회전 할 때 두 영역 사이를 건너 뜁니다. 오히려, 내가 벡터를 회전하려면 다음을 사용하는 경우2 개의 벡터를 회전시켜 역방향으로 이동하고 영역을 건너 뜁니다. C#
public double radians()
{
return Math.Atan2(y, x);
}
public double len()
{
return Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2));
}
public vector mul(double d)
{
return new vector(x * d, y * d);
}
public vector div(double d)
{
return new vector(x/d, y/d);
}
public vector unit()
{
return div(len());
}
public vector rotate(vector v)
{
double theta = v.radians();
return new vector(
x * Math.Cos(theta) - y * Math.Sin(theta),
x * Math.Cos(theta) + y * Math.Sin(theta))
.unit().mul(len()); // without this, the rotated vector is smaller than the original
}
,이 시계 반대 방향으로 회전 :
이
의 (adouble x
와
double y
와 벡터 클래스) 나는 회전을 위해 사용하고있는 코드입니다 시계 방향보다 나는 그것이해야한다고 생각한다. 또한 내가 그것을해야 생각하는 것보다 더 많은 회전
: 이미지를 보여주기 위해. 설명하기가 더 어려운 또 다른 문제는 회전이 스팬의 약 4 분의 2 이상에서 원활하게 작동하지만 다른 두 개는 건너 뜁니다. 내가 발견 한 또 다른 문제는 벡터가 회전하는 각도가 작 으면 (내 테스트에서 과거 (1, 10)), 회전은 강하게 시작하지만 속도가 느려지고 결국 멈추는 것입니다. 이것은 C#의 double
과 같은 정밀한 문제처럼 보였습니다. 그러나 회전 된 벡터의 길이가 변경되지 않도록 수정하여 문제를 해결하려고했습니다.
어쨌든 내 문제 중 하나 또는 모두의 원인을 발견 할 수 있다면 대단히 감사하겠습니다.