酒に酔った勢いで、うろ覚えで間違ってたり遅いかも、細部は調整必須
{var ax0,ay0,ax1,ay1,bx0,by0,bx1,by1;//0:始点 , 1:終点
ax0=argument0;ay0=argument1;ax1=argument2;ay1=argument3;
bx0=argument4;by0=argument5;bx1=argument6;by1=argument7;
global.calcx=0;global.calcy=0;//結果

var sl_a,sl_b;sl_a=(ay1-ay0)/(ax1-ax0);sl_b=(by1-by0)/(bx1-bx0);//傾き
var ArrayA,ArrayB;//行列式Ax=B
ArrayB[0,0]=ay0-sl_a*ax0;ArrayB[0,1]=by0-sl_b*bx0;
ArrayA[0,0]=-sl_a;ArrayA[0,1]=-sl_b;
ArrayA[1,0]=1;ArrayA[1,1]=1;
var detArrayA;detArrayA=ArrayA[0,0]*ArrayA[1,1]-ArrayA[0,1]*ArrayA[1,0];//これ名前忘れた
if(detArrayA==0){global.result=false;return -1;}//解なし
var invArrayA;//逆行列
invArrayA[0,0]=ArrayA[1,1]/detArrayA;invArrayA[1,1]=ArrayA[0,0]/detArrayA;
invArrayA[0,1]=-ArrayA[0,1]/detArrayA;invArrayA[1,0]=-ArrayA[1,0]/detArrayA;
//交点計算
global.calcx=invArrayA[0,0]*ArrayB[0,0]+invArrayA[1,0]*ArrayB[0,1];
global.calcy=invArrayA[0,1]*ArrayB[0,0]+invArrayA[1,1]*ArrayB[0,1];
global.result=true;return 0;}