-5
정확도는 약 0.000001
입니다. 여기 sinl과 cosl의 정확도는 C++에서
typedef struct p {
long double x;
long double y;
}point;
point rotate_point(long double cx,long double cy,long double angle,point p) //pivot then angle then point to rotate
{ // cout<<"\ncx="<<cx<<"cy="<<cy<<"x="<<p.x<<"y="<<p.y;
angle=(angle/100)*pi*2;
// translate point back to origin:
p.x -= cx;
p.y -= cy;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(20);
// rotate point
long double xnew = p.x * cosl(-angle) - p.y * sinl(-angle);
long double ynew = p.x * sinl(-angle) + p.y * cosl(-angle);
// translate point back:
p.x = xnew + cx;
p.y = ynew + cy;
cout<<"x="<<p.x<<"y="<<p.y;
return p;
}
제가 여기 주어진 피벗
cx
,
cy
가 회동이 약 점을 회전시키는 기능
rotate_point
사용하고 사용하고있는 코드 세그먼트이다
point
는 시계 방향으로 회전하는 지점
angle
이며 는 각도로 전달 된 각도입니다 (라디안 단위로 전달할 수 없습니다). 내 문제는 값으로 함수를 호출 할 때입니다
rotate_point(50,50,25, p)
p.x=50 p.y=100
다음 예상 된 출력은
x=100 y=50
입니다.
나는 x=99.99999000666841262458 y=49.96838777042233631365
을 얻고 있습니다. x
은 정확하지만 y
은 원하는 정확도 범위에 없습니다. 당신이 정확성을 원하는 경우
[규칙] (https://www.facebook.com/hackercup/terms/)이 [문제] (https : //www.facebook .com/hackercup/problem/1254819954559001 /) ?! –
'angle = (angle/100) * pi * 2;는 무엇을해야합니까? 라디안 변환 정도는 아니지만 비슷합니다. '파이 '란 무엇입니까? 아마도 당신은'pi = 3.142' 또는 다른 crass 값을 가질 것입니다. 수학 라이브러리 헤더에 정의 된 값을 사용하십시오. –
pi는 #define pi (22/7)이고 실제도는 라디안 변환입니다. (angle/100) * pi * (360/180) –