두 점은 서로를 중심으로 회전하고 있습니다. 그러므로 나는 회전 행렬을 사용한다. 그러나 이제 포인트 간의 거리가 커지는 문제가 발생합니다 (atached video 1 참조). 그러나 거리는 내 전체 시뮬레이션에서 일정하게 유지되어야합니다.두 점은 같은 중심을 중심으로 회전하지만 거리가 길어집니다.
는 여기에 내가 속도를 계산하기 위해 사용하는 내 코드입니다 : P1과 P2는 두 지점이
.
double xPos = p0.x+p1.x;
double yPos = p0.y+p1.y;
//The center between p1 and p2
xPos /=2;
yPos /=2;
//the rotating angle
double omega = 0.1;
//calculate the new positions
double x0new = xPos + (p0.x-xPos)*std::cos(omega) - (p0.y-yPos)*std::sin(omega);
double y0new = yPos + (p0.x-xPos)*std::sin(omega) + (p0.y-yPos)*std::cos(omega);
double x1new = xPos + (p1.x-xPos)*std::cos(omega) - (p1.y-yPos)*std::sin(omega);
double y1new = yPos + (p1.x-xPos)*std::sin(omega) + (p1.y-yPos)*std::cos(omega);
//the speed is exatly the difference as I integrate one timestep
p0.setSpeed(p0.x-x0new, p0.y-y0new);
p1.setSpeed(p1.x-x1new, p1.y-y1new);
그런 다음 정확하게 하나의 시간 단계를 통합합니다. 내 계산에서 무엇이 잘못 되었습니까?
업데이트 내 통합이 잘못된 것 같습니다. 직위를 직접 설정하면 완벽하게 작동합니다. 그러나 나는이 통합에 어떤 문제가 있는지 지금하지 :
언뜻에서setSpeed(ux,uy){
ux_=ux;
uy_=uy;
}
// integrate one timestep t = 1
move(){
x = x + ux_;
y = y + uy_;
}
'setSpeed'는 무엇을합니까? – Andrey
은 하나의 시간 간격으로 통합되는 지점의 속도를 설정합니다. – tune2fs
내 이론을 검증하기 위해 통합 기간을 수정할 수 있습니까? (확장하면 확장이 늘어납니다) –