Determine if two triangles overlap: Difference between revisions

Content added Content deleted
(Added a solution for D)
Line 1,509: Line 1,509:
False False
False False
True ?</pre>
True ?</pre>

=={{header|QB64}}==
<lang QB64>
DATA 0,0,5,0,0,5,0,0,5,0,0,6
DATA 0,0,0,5,5,0,0,0,0,5,5,0
DATA 0,0,5,0,0,5,-10,0,-5,0,-1,6
DATA 0,0,5,0,2.5,5,0,4,2.5,-1,5,4
DATA 0,0,1,1,0,2,2,1,3,0,3,2
DATA 0,0,1,1,0,2,2,1,3,-2,3,4

TYPE point
x AS INTEGER
y AS INTEGER
END TYPE

DIM coord(12, 3) AS point

workscreen = _NEWIMAGE(800, 800, 32)
backscreen = _NEWIMAGE(800, 800, 32)

SCREEN workscreen
FOR i = 1 TO 12 '12 triangles
FOR j = 1 TO 3 'with 3 coordinates for each
READ coord(i, j).x 'X coord
READ coord(i, j).y 'Y coord
FixCoord coord(i, j)
NEXT

NEXT
_DELAY .5
_SCREENMOVE _MIDDLE


FOR i = 1 TO 12
_DEST workscreen
CLS
_DEST backscreen
_DONTBLEND
CLS , 0
PSET (coord(i, 1).x, coord(i, 1).y), _RGBA32(255, 255, 255, 128)
FOR j = 2 TO 3
LINE -(coord(i, j).x, coord(i, j).y), _RGBA32(255, 255, 255, 128)
NEXT
LINE -(coord(i, 1).x, coord(i, 1).y), _RGBA32(255, 255, 255, 128)
xinside = (coord(i, 1).x + coord(i, 2).x + coord(i, 3).x) / 3
yinside = (coord(i, 1).y + coord(i, 2).y + coord(i, 3).y) / 3
PAINT (xinside, yinside), _RGBA32(255, 255, 255, 128)
_BLEND
_PUTIMAGE , backscreen, 0
CLS , 0
_DONTBLEND
i = i + 1
PSET (coord(i, 1).x, coord(i, 1).y), _RGBA32(255, 0, 0, 128)
FOR j = 2 TO 3
LINE -(coord(i, j).x, coord(i, j).y), _RGBA32(255, 0, 0, 128)
NEXT
LINE -(coord(i, 1).x, coord(i, 1).y), _RGBA32(255, 0, 0, 128)
xinside = (coord(i, 1).x + coord(i, 2).x + coord(i, 3).x) / 3
yinside = (coord(i, 1).y + coord(i, 2).y + coord(i, 3).y) / 3
PAINT (xinside, yinside), _RGBA32(255, 0, 0, 128)
_BLEND
_PUTIMAGE , backscreen, 0
_DEST workscreen
_SOURCE workscreen
overlap = 0
FOR x = 0 TO 999
FOR y = 0 TO 999
IF POINT(x, y) = _RGBA32(190, 63, 63, 255) THEN overlap = -1: GOTO overlap
NEXT
NEXT
overlap:
IF overlap THEN PRINT "OVERLAP" ELSE PRINT "NO OVERLAP"
SLEEP
NEXT
SYSTEM

SUB FixCoord (p AS point)
p.x = (10 + p.x) * 30 + 100
p.y = (10 + p.y) * 30
END SUB
</lang>


=={{header|Racket}}==
=={{header|Racket}}==