使用斜率从另一位置获得距离x的新位置
2013-5-25 21:49:57
收藏:0
阅读:145
评论:2
不好意思如果我的标题用词不当,我不太懂数学,也不知道正确的术语,但我想有人会修改它。
我正在Lua中创建一个脚本,我有一个目标位置和我的位置。我找到了它的斜率,所以现在我有X1、X2、Y1、Y2和M(斜率)。我不知道如何添加一个距离X的新点。
就像这个糟糕的MS Paint示例一样,两个黑点是远右侧的目标,我的位置在左侧,绿点是我想要的。

点赞
用户2110762
我将假设
- 左侧的黑点是 (X1, Y1)
- 右侧的黑点是 (X2, Y2)
- 斜率 M = (Y2 - Y1) / (X2 - X1)
这意味着 (X1, Y1) 和 (X2, Y2) 之间的直线上的所有点 (X, Y) 都满足
Y = Y1 + M (X - X1)
定义 (X1, Y1) 和 (X2, Y2) 之间的距离 D,该距离由以下公式给出
D = Math.sqrt((X2 - X1)² + (Y2 - Y1)²)
其中 Math.sqrt(...) 是求平方根的函数。如果你想要一个距离 (X1, Y1) d 的点在那条直线上,那么就有两个这样的点,一个在 (X1, Y1) 左侧,另一个在 (X1, Y1) 右侧。这两个点的坐标是
(X1 + (X2 - X1) d/D, Y1 + (Y2 - Y1) d/D)
和
(X1 - (X2 - X1) d/D, Y1 - (Y2 - Y1) d/D)
带 + 符号的第一个点是距离 (X1, Y1) 在 (X2, Y2) 方向上 d 的点。带 - 符号的第二个点是距离 (X1, Y1) d 的点,但是在远离 (X2, Y2) 的方向上。如果你所需的情况总是如图所示,那么答案总是取带 - 符号的第二个点。
2013-05-25 23:02:27
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
你需要结合两个公式。
这是用 Haskell 编写的代码,可以回答你的问题,可能有用。
foo x1 y1 x2 y2 d = [(x3,y3) | x3 <- [-100..100], y3 <- [-100..100], (y3-y2)^2 + (x3-x2)^2 == d, (y2-y1)/(x2-x1) == (y3-y2)/(x3-x2)]注: 100 是一个范围,您可以更改它。这个函数返回两对,像 (-1,1), (11,9)。因为我没有指定方法。
另一种解决方案:(我结合了公式)
let k = d / sqrt((y2-y1)^2 + (x2-x1)^2) x3 = x2 + k * (x2-x1) other x3 = x2 - k * (x2-x1) y3 = y2 + k * (y2-y1) other y3 = y2 - k * (y2-y1)