ベクトルのクロス積ポイントが言うと
ある側を見つけるためには、ポイントが残ったり、ラインやポイントの外積を得るラインの右側です。始点が原点になるように線を平行移動し、同じように点を移動する必要があります。次に、クロス積を取得し、値が負の場合は、値が0の場合はポイントを左に(反時計回りの方向に)、ポイントがライン上にある場合は値が正の場合はポイントが右になります(時計方向に)移動する。
このように順番に各コーナーをすることによってスプライトに適応しやすいライン
x1 = 100; // line start coord
y1 = 100;
x2 = 300; // line end coord
y2 = 300;
px = 300; // the point to test
py = 100;
// first translate the line and point so that the line start is at 0,0
px = px - x1;
py = py - y1;
x2 = x2 - x1; // no need to move the start as dont need it after translation
y2 = y2 - y1;
// And now just the cross product
cross = x2 * py - y2 * px;
if(cross < 0){ // point is left of line
if(cross > 0){ // point is right of line
else { // point is on the line
。以前のポイントよりも反対側にポイントがある場合は、スプライトがライン上にあり、それ以上のテストはできません。
クロス製品の詳細については、wiki
を参照してください。