2014-08-27 17 views
0

C++에서이 부풀어 호 (dxf 파서) 함수를 사용하는 데 문제가 있습니다. getArcDataFromBulge().이 DXF Bulge Arc 함수 사용 방법 getArcDataFromBulge()?

https://github.com/Embroidermodder/Embroidermodder/blob/master/libembroidery/geom-arc.c

나는 '시작 각도'이 getArcDataFromBulge() 함수에서 매개 변수 '각도를 청소'필요 내 drawArc() 함수가 있습니다. 내 drawArc() 함수는 오른쪽 0 각도 위치의 OpenGL 2D 좌표계를 사용하며 getArcDataFromBulge()에서 값을 가져 와서 다시 계산합니다 (0 + -, 180 + -, 360 + -). 결과. 그것은 시계 반대 방향의 시계처럼 보입니다. 그러나 나는 그렇지 않다고 생각합니다. 확실하지 않습니다. 무슨 일이 일어나고 있는지 몇가지 생각해 봤어? 예를 들어

:

tempBulge.bulge := 0.70; 
arcMidAngle := RadToDeg(atan2(tempBulge.arcMidY - tempBulge.arcCenterY, 
tempBulge.arcCenterX - tempBulge.arcMidX)); 

calculaton 후 : arcMidAngle = 179.999 내가 추가하고 내가 시작하고 얻을 아크 코드 각도의이 시점 반에서 빼 내 호의 끝 각도 : 90 °, 270 ° 하지만 일부 CAD 소프트웨어에서 dxf를 열 때 같은 호가 아니기 때문에 원점 도면과 반대입니다.

+0

아마도 "음수, 양각, 방향 및 기타 원 재료"의 예와 DrawArc()에서 문제가있는 곳에서 질문을 확장 할 수 있습니다. 현재 의문점으로, 대부분의 사람들이 답변을하기에 충분한 정보가 없습니다. 그래도 더 좋은 질문을한다면, 그것은 바뀔 것입니다. –

+0

예 AutoCAD, OpenGL 좌표계 및 역 Y- 도형 도면에 대한 내 가정을 확인하기 위해 확장합니다. – escape321

+0

표시하려는 것은 (1) 사용중인 코드입니다. (2) 그것이 산출 한 결과. (3) 기대하고있는 결과 (또는 달성하고자하는 결과). 이 정보가 없으면 도움을 받기가 매우 어렵습니다. –

답변

0

0 ° ~ 90 °의 호가있는 경우 1/4 원 또는 3/4 원이 될 수 있습니다.

Variable Group code Description 
$ANGBASE 50   Angle 0 direction 
$ANGDIR 70   1 = Clockwise angles, 0 = Counterclockwise 
:

당신은 방향 각도가 정의 된 당신을 알려줍니다 HEADER section ($ANGDIR) 및 특정 DXF 파일 내에서 0 ° 각도 시작 ($ANGBASE)에서 $ANGDIR$ANGBASE 변수를 구문 분석 할 필요가

$ANGBASE = 0이면 DXF의 경우 0 °가 오른쪽 중심에 있습니다.

DXF에서는 양의 Y 축이 아래쪽에있는 많은 Windows API와 달리 양의 Y 축이 위쪽입니다.