포스트 스크립트로 그림을 만들었는데, 6 개의 사각형 모음입니다. 이 출력을 개체로 그룹화하고 싶습니다. 예,이 이미지를 출력 할 함수의 정의를 만들 수 있다는 것을 알고 있습니다. 내 문제는 모든 좌표를 수정하는 대신이 이미지를 그룹으로 회전하고 싶다는 것입니다. 그것을 만든 모든 사각형의. 포스트 스크립트에이 기능이 있는지 확실하지 않습니다. Scalable Vector Graphics에는 <g>
태그가 있습니다. 그것이 정확히 관련이 없다면 미안하지만 내가하고 싶은 사각형을 그룹화하는 기능입니다.
이 그림을 생성하는 코드는 다음과 같습니다.
%!PS
%I made PS extensions executable via evince on my system
/Sq {0 0 moveto 0 100 lineto 100 100 lineto 100 0 lineto closepath} def
gsave
150 150 translate
6{
Sq 87 -50.1 translate
60 rotate
}repeat
0 0 0 setrgbcolor
closepath
1 setlinewidth
stroke
closepath
루프 외부에서 설정을 시도했고 Sq
함수 내부 에서 사각형은 그룹화 된 선입니다. 그 길을 닫으면 안 될까요? 정말 모르겠어요.
PostScript에는 '그룹'이라는 개념이 없으므로 개체를 그룹화 할 수 없습니다. 양식에 넣을 수는 있지만 드물고 어떤 경우에도 원하는 것을 실제로 수행하지 않습니다.
당신이 언급했듯이 명백한 해결책은 단순히 그림을 그리는 함수를 정의하는 것입니다. 그것은 '그룹'이거나 PostScript에서 얻을 수있는 것과 비슷합니다.
그런 다음 함수를 호출하기 전에 CTM을 수정하기 만하면됩니다. 회전을 적용하는 방법은 명확하지 않지만 다음은 예입니다.
%!PS
%I made PS extensions executable via evince on my system
/Sq {0 0 moveto 0 100 lineto 100 100 lineto 100 0 lineto closepath} def
/Polygon {
6{
Sq 87 -50.1 translate
60 rotate
}repeat
0 0 0 setrgbcolor
1 setlinewidth
stroke
} bind def
gsave
150 150 translate
Polygon
grestore
gsave
250 250 translate
45 rotate
Polygon
grestore
showpage
회전은 현재 지점을 중심으로 CTM을 회전합니다. 이 경우 다각형이 첫 번째 정점을 중심으로 회전 함을 의미합니다. 중심을 중심으로 회전하려면 다각형 중심의 좌표를 계산하고 해당 지점으로 이동 한 다음 회전을 수행 한 다음 계산해야합니다. 폴리곤 그리기를 시작하기 전에 초기 정점의 좌표 (CTM이 이제 회전됨을 기억합니다!).
원래 프로그램에는 몇 가지 사소한 문제가 있습니다. 일치하는 grestore없이 gsave를 수행하므로 gsave는 효과가 없으며 gstate 스택에 저장 상태를 남깁니다. 모든 하위 경로가 닫히기 때문에 두 번째 'closepath'가 필요하지 않습니다 (이 경우에도 문제가 발생하지 않음). 프로그램은 또한 'showpage'를 실행하지 않으므로 기술적으로 준수하는 PostScript 인터프리터는 아무것도 그리지 않습니다. Display PostScript를 사용하는 NeWS 클론은 실행될 때 그래픽 프리미티브를 그립니다.
lineto 및 moveto 대신 rmoveto 및 rlineto를 사용하는 경우 CTM을 '번역'할 필요가 없도록 코드를 다시 작성할 수 있으며 moveto를 사용하여 현재 지점을 설정할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다