재미있는 프로젝트입니다.여기에 내가 다각형이 볼록 가정 할 것이다 무엇 :
have a NY * 2 array of x positions: int x[NY][2]
foreach polygon
clear the array to -1
for each edge line
foreach horizontal raster line iy intersecting the line
generate ix, the x position where the raster intersects the line
if x[iy][0] == -1, set it to ix, else set x[iy][1] to ix
end foreach iy
end foreach edge
foreach iy
fill the pixels between x[iy][0] and x[iy][1] with the polygons label
end foreach iy
end foreach polygon
이것은 당신이 래스터 생각하는 정신 훈련을 필요로하기 때문에 같은 픽셀이 표시되어야하지 좌표하지만, 그것은 생각보다 조금 더 까다 롭습니다 그것들 사이에는 보이지 않는 선들이있다. 그렇지 않으면 경계 문제로 혼란스러워집니다. 이 지점에서 B 지점으로 가장자리로 구성되어 돌아 가기에,이 더 픽셀에 불을 안처럼 당신이 제로 영역의 다각형이있는 경우
이의 좋은 테스트입니다. 또 다른 테스트는 높이가 2 단위 인 평행 사변형이 있고 상단 및 하단 가장자리가 2 단위 넓이라면 정확히 4 픽셀을 밝게해야합니다. 다각형이 볼록하지 않는 경우
, 그것은 조금 다릅니다. 모서리가 래스터 선을 가로 지르면 모든 픽셀을 임의로 선택한 X 좌표 (예 : "화면"의 왼쪽 가장자리)로 토글합니다. 모든 가장자리를 완료하면 홀수 번만 내부 픽셀 만 토글됩니다.
이 질문의 답변 중 일부는 관심의 대상 일 수 있습니다. http://stackoverflow.com/questions/1341399 – ideasman42