К сожалению комментариев мне не дали, пришлось прорубать самому. Исходики я чесно сказать забыл с работы унести, остался только главный код, но он вполне работоспособный, если его скинуть в новый проект.
Что именно тебя интересует в варианте по четырем точкам?
Некоторые моментыя и сам не понял,
но примерно что там делается:
заносятся в масивы строки ScanLine из шаблона копируется четыре точки в переменные cPoints для дальнейшего сравнения.
В ассемблерной вставке просто вычисляются точки для сравнения (скоросто работы этого участка сомнительна, скорей просто для эксперемента.)
а потом сравниваются cPoints и указатель на содержимое массива:
Код:
eq := ((ltPt^ and $FFFFFF) = cPoints[0])
and ((rtPt^ and $FFFFFF) = cPoints[1])
and ((lbPt^ and $FFFFFF) = cPoints[2])
and ((rbPt^ and $FFFFFF) = cPoints[3]);