cross {
tokenize 32 $1-
var %a1 = $calc(($4 - $2) / ($3 - $1)), %a2 = $calc(($8 - $6) / ($7 - $5))
if %a1 && %a1 == %a2 { return $false }
var %b1 = $calc($2 - %a1 * $1), %b2 = $calc($6 - %a2 * $5), %x = $calc((%b2 - %b1) / (%a1 - %a2))
if $2 == $4 || $6 == $8 || (%x isnum $sorttok($+($1,-,$3),45,n) && $&
%x isnum $sorttok($+($5,-,$7),45,n)) && $calc(%a1 * %x + %b1) isnum $sorttok($+($2,-,$4),45,n) $&
&& $ifmatch isnum $sorttok($+($6,-,$8),45,n) { return $true }
return $false
}