如何通过三个向量判断是否能够画一条直线
如果更喜欢几何学而不是线性代数...
那么可以计算(单位向量1.单位向量2)的点积。这相当于它们之间的正弦值。
因此,如果单位向量是从射手位置到目标1的向量,单位向量2是从射手到目标2的向量,等等... 那么当DOTPRODUCT(Vector1,Vector2)= 1且DOTPRODUCT(Vector1,Vector3)= 1时,这三个点处于相位交会。
然后,从射击手到尽可能多的目标重复此过程,以确定某些或所有点是否处于相位交会。
根据您的陈述,我理解您选择了两个敌人,并想要将它们之间的所有东西都困住。
因此,您实际上并不是在寻找可以通过敌人位置连接的直线,而是一个矩形。对于更多的点,它们几乎不可能都共线。
所以这变得非常简单。你通过起点和终点敌人画一条直线。然后,您检查其余敌人到该直线的距离与您的 AoE 宽度之间的差距。您可能还需要在该计算中考虑一些身体宽度。
https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line
你可以描述所有属于线段 (x0, y0) + (dx, dy) t = (x1, y1) 的点。选择任意两个点和t为1,就可以得到连接两个点的直线的 (dx, dy)。现在您需要找到这条直线和 (x2, y2) 之间的距离,它是 (x2, y2) 和 (xd, yd) 之间的距离,其中一方面 (xd, yd) = (x0, y0) + t1(dx, dy),另一方面 (xd, yd) = (x2, y2) + t2*(-dy, dx)。解这两个方程,您将找到 t1、t2、(xd, yd) 和 (x2, y2) 与连接 (x0, y0) 和 (x1, y1) 的直线之间的距离。
了解了这一点,您可以选择 min_x 和 max_x 的点,并计算连接这些点的线与其余点之间的距离。如果距离小于您选择的某个阈值,则可以假定您可以通过所有点绘制直线。
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?







在平面上的任何一条线都可以用方程
a*x + b*y + c = 0来描述,其中(a, b) ≠ (0, 0)。请注意,如果您有这种形式的方程,则将每个系数a,b,c与相同的数字相乘会产生描述同一直线的方程。这就是为什么(a,b,c)被称为该行的齐次坐标向量的原因。如何找到
a,b,c?一种简单的方法是将其视为三个未知数的三个线性方程。您为所有三个点插入x和y坐标,并获得a到c的三个方程。但是,有一个问题。由于每个方程的右手边都是零,因此a = b = c = 0总是一个解。在那些只有一个解的情况下,那就是它。因此,为了有一条线,您需要多于一个解。确定一组方程是否具有多于一个解的数学工具是行列式。如果系统没有单个唯一解,则行列式为零。长话短说:如果三个点共线(在一条线上),则
描述该行的齐次坐标向量应该对应于该矩阵的核。
当然,如果您的输入坐标是浮点数,则精确的零不太可能。假定该围墙以某种方式允许某些误差,您需要告诉我们以正确地进行建模。与此同时,需要知道上述行列式的绝对值与这三个点创建的三角形的面积成比例。因此,如果您选择一个恒定的阈值值,则敌人在围墙方向上越远,它们就越不能偏离直线而不违反该阈值。