在开始实现之前我们先做一些准备工作:
约定坐标体系(左上角为原点, x轴向右为正方向, y轴向下为正方向)
工程采用vite构建, 前端使用vue3作为开发语言(当然其他框架也是完全没问题的, 看个人喜好...下一步就是获取任意点的坐标, 为了方便演示, 这里以鼠标指针作为点(x, y), 我们再来构造一个画布:
image.png
我们以画布的左上角作为坐标原点(0,0), 来计算一下鼠标在画布中的相对位置..., 这里我使用vue3 的 hooks 来实现, 具体代码如下:
const cardOffset = ref({ x: 0, y: 0 });
onMounted(() => {
// 获取画布左上角距离页面左上角的距离...通过以上方式, 我们可以轻松判断在画布中的任意点, 是否在矩形内部, 从而实现有意思的射击游戏。
当然我们探索的本质问题其实是: 判断一个点是否在指定形状的内部。...如果点在三角形内部, 则会满足如下条件:
如果点在三角形S外部, 则满足如下条件:
所以说现在的问题就变成了求三角形面积的问题了。