arc | UL_ARC |
cap | int(CAP_...) |
curve | real |
layer | int |
style | int(WIRE_STYLE_...) |
width | int |
x1, y1 | int(시작점) |
x2, y2 | int(끝점) |
pieces() | UL_WIRE(주 참고) |
CAP_FLAT | 플랫 호 끝 |
CAP_ROUND | 원형 호 끝 |
WIRE_STYLE_CONTINUOUS | 연속 |
WIRE_STYLE_LONGDASH | 긴 대시 |
WIRE_STYLE_SHORTDASH | 짧은 대시 |
WIRE_STYLE_DASHDOT | 대시 점 |
WIRE_STYLE_CONTINUOUS 이외의 스타일을 가진 UL_WIRE는 pieces() 루프 멤버를 사용하여 대시 와이어로 구성된 개별 세그먼트에 액세스할 수 있습니다. WIRE_STYLE_CONTINUOUS를 사용하는 UL_WIRE에 대해 *pieces()*가 호출되는 경우 원래 UL_WIRE와 동일한 단일 세그먼트에 액세스할 수 있습니다. pieces() 루프 멤버는 *pieces()*를 호출하여 자체적으로 반환된 UL_WIRE에서 호출될 수 없습니다. 이 경우 무한 재귀가 발생할 수 있습니다.
호는 기본적으로 몇 가지 추가 특성이 있는 와이어입니다. 첫 번째 레벨 호는 와이어와 정확히 동일하게 처리됩니다. 즉, 시작점 및 끝점, 폭, 도면층 및 와이어 스타일이 있습니다. 와이어 레벨에서 이러한 호 외에 cap 및 curve 매개변수가 있습니다. cap은 호 끝이 원형인지 또는 플랫인지를 정의하고 curve는 호의 "곡률"을 정의합니다.
curve의 유효 범위는 -360에서 +360까지이며, 값은 호를 구성하는 전체 원의 부분을 의미합니다. 예를 들어 값이 90이면 90도 호가 되고 180이면 반원이 됩니다. 최대값 360은 호가 완전한 원으로 구성된다는 것을 의미하기 때문에 이론적으로만 도달할 수 있습니다. 이 경우 시작점과 끝점은 원에 있어야 하므로 지름이 무한히 커야 합니다. curve 값이 양수이면 호가 수학적으로 양의 방향(즉, 시계 반대 방향)으로 그려진다는 것을 의미합니다. curve가 0이면 호는 실제로 와이어인 직선("곡률 없음")입니다.
cap 매개변수는 실제 호에 대해서만 의미가 있으며, 직선 와이어에 대해 항상 CAP_ROUND를 반환합니다.
UL_WIRE가 호인지 여부는 arc 데이터 멤버의 부울 반환 값을 확인하여 결정할 수 있습니다. 0을 반환하는 경우 직선 와이어가 있는 것이고 그렇지 않은 경우 호인 것입니다. arc가 0이 아닌 값을 반환하는 경우 UL_ARC 특정 매개변수 시작 및 끝 각도, 반지름 및 중심점에 액세스하기 위해 역참조될 수 있습니다. 이러한 추가 매개변수는 실제 쉐이프가 중요한 다른 방식으로 호를 그리거나 처리할 경우에만 필요할 수 있습니다.
board(B) {
B.wires(W) {
printf("Wire: (%f %f) (%f %f)\n",
u2mm(W.x1), u2mm(W.y1), u2mm(W.x2), u2mm(W.y2));
}
}