user1241241 :
나는 회전 된 사각형의 중간 점을 발견하고 싶습니다. 회전 된 사각형은 다음 좌표를 가지고있다
[317, 80], [183, 291], [479, 150], [378, 387]
나는 결정하기 위해 다음과 같은 코드를 가지고있다
cx = (coord[0][0] + coord[2][0])//2
cy = (coord[0][1] + coord[1][1])//2
불행하게도, 센터는 실제 중심과 일치하지 않습니다. 어떻게 위의 좌표의 정확한 중심을 찾을 수 있습니까?
나는 eldesgraciado :
내가 사람을 다음과 같은거야 있는지 확실하지 않습니다,하지만 당신은 사각형 모양의 중심을 계산하려면,이 같이 간다. 당신이 원점으로 정렬 된 다음 사각형을 가정 해 봅시다. 중심은 녹색으로 표시됩니다.
무게 중심은 다음과 같이 계산된다 :
Cx = 0.5 * w
Cy = 0.5 * h
그런 다음 선형 변환을 적용 할 수 있습니다. 이 예에서, 회전 행렬는로서 지정된다 :
R = [ cos ϴ, -sin ϴ
sin ϴ, cos ϴ ]
사각형은 현재 좌표계 원본에서 회전합니다. 즉, 각도 Θ입니다 :
중심 방정식이 될 :
Cx’ = cx cos ϴ - cy sin ϴ
Cy’ = cx sin ϴ + cy cos ϴ
좌표 원래 시스템에 다시 번역, 우리는 가지고있다 :
Cx’’ = x + cx cos ϴ - cy sin ϴ
Cy’’ = y + cx sin ϴ + cy cos ϴ
이 함수는 (의사 코드에서) 이런 식으로 뭔가를해야한다 :
Tuple computeRotatedCentroid( x, y, width, height, theta ) {
cx = 0.5 * width;
cy = 0.5 * height;
thetaRadians = degreesToRadians(theta);
cosTheta = cos( thetaRadians );
sinTheta = sin( thetaRadians );
finalCx = x + cx * cosTheta - cy * sinTheta;
finalCy = y + cx * sinTheta + cy * cosTheta;
return makeTuple( finalCx, finalCy );
}