bool in(D3DXVECTOR3 mouse) //判断鼠标点是否在图片里
{
D3DXVECTOR3 axis[8]; //这个数组存放8条边的向量 4条是图片的边,4条是四个角到点的边
axis[0] = arr[1] - arr[0]; //0-3存放4条边的向量
axis[1] = arr[2] - arr[1];
axis[2] = arr[3] - arr[2];
axis[3] = arr[0] - arr[3];
axis[4] = mouse - arr[0]; //4-7存放 4个角到鼠标点的向量
axis[5] = mouse - arr[1];
axis[6] = mouse - arr[2];
axis[7] = mouse - arr[3];
float vec[4]; //这个数组用来存放点乘的值
for (int i = 0; i < 4; i++)
{
vec[i] = dotmulty(axis[i], axis[i + 4]);
if (vec[i] < 0) //如果4个点乘的值有一个<0 就返回假 (向量点乘==0 互为垂直)
{ (向量点乘<0 钝角大于90度)
return false; (向量点乘>0 锐角小于90度)
}
}
return true; //4个值都>0说明在点里
{
D3DXVECTOR3 axis[8]; //这个数组存放8条边的向量 4条是图片的边,4条是四个角到点的边
axis[0] = arr[1] - arr[0]; //0-3存放4条边的向量
axis[1] = arr[2] - arr[1];
axis[2] = arr[3] - arr[2];
axis[3] = arr[0] - arr[3];
axis[4] = mouse - arr[0]; //4-7存放 4个角到鼠标点的向量
axis[5] = mouse - arr[1];
axis[6] = mouse - arr[2];
axis[7] = mouse - arr[3];
float vec[4]; //这个数组用来存放点乘的值
for (int i = 0; i < 4; i++)
{
vec[i] = dotmulty(axis[i], axis[i + 4]);
if (vec[i] < 0) //如果4个点乘的值有一个<0 就返回假 (向量点乘==0 互为垂直)
{ (向量点乘<0 钝角大于90度)
return false; (向量点乘>0 锐角小于90度)
}
}
return true; //4个值都>0说明在点里
}