일부 사용자는 중심점을 사용하여 2D에서 쿼드를 채우는 방법을 알고 있습니까? 현재는 쿼드를 두 개의 삼각형, 즉 으로 분할 할 예정입니다. 그러나 두 번째로 반복해야하므로 비효율적입니다. 미리 충전 된 픽셀 반복 바운딩 박스 여기쿼드를 사용하는 중심 좌표
1
A
답변
0
가있다 감사
esmitt ( 예로는, I는 가 2 삼각형에 의해 형성된 바운딩 박스에 속하는 첫번째 삼각형 이송 2 삼각형을 채우기) 당신이 뭘 해야하는지 파이썬 예제 에 대한 oking. 여러분이 아마 알고 있듯이, 2 차원에서 쿼드에 대해 고유하게 정의 된 중심 좌표가 없습니다 (3 차원에서의 tetrahedra에 대한 중심 좌표가 있지만 그것은 또 다른 것입니다).
import sys
def fill(xa, ya, xb, yb, xc, yc, xd, yd):
abx = yb - ya
aby = xa - xb
kab = - (xa*abx + ya*aby)
bcx = yc - yb
bcy = xb - xc
kbc = - (xb*bcx + yb*bcy)
cdx = yd - yc
cdy = xc - xd
kcd = - (xc*cdx + yc*cdy)
dax = ya - yd
day = xd - xa
kda = - (xd*dax + yd*day)
for y in xrange(25):
for x in xrange(79):
if (x*abx + y*aby + kab >= 0 and
x*bcx + y*bcy + kbc >= 0 and
x*cdx + y*cdy + kcd >= 0 and
x*dax + y*day + kda >= 0):
sys.stdout.write('+')
else:
sys.stdout.write('-')
sys.stdout.write('\n')
fill(10, 5,
6, 22,
60, 17,
70, 9)
기본적으로 모든 에지에 대한 선 계수를 계산하고 그 포인트가 각각의 올바른면에 있는지 확인합니다. 라인 계수는 정규화되지 않았습니다. 히트/미스 테스트가 필요하지 않은 경우 (x nx + y ny + nk의 크기가 아닌 부호 만 검사하기 때문에).
이 접근법은 볼록 지향형 쿼드가 필요합니다. ...
"쿼드"는 사변형을 의미합니까? – Jacob
예, 네 사변형 – esmitt