在c#中将点移动到另一个点

2023-12-04

我想将二维搜索空间中的某个点 a 移动到具有一定步长(_config.StepSize = 0.03)的另一个点 b。

Point a = agent.Location;
Point b = agentToMoveToward.Location;

//---    important        
double diff = (b.X - a.X) + (b.Y - a.Y);
double euclideanNorm = Math.Sqrt(Math.Pow((b.X - a.X), 2) + Math.Pow((b.Y - a.Y), 2));
double offset = _config.StepSize * ( diff / euclideanNorm );

agent.NextLocation = new Point(a.X + offset, a.Y + offset);
//---

这是对的吗?


假设你的意思是你想移动一个点towards另一点,假设你的步长有距离单位,那么不,你的计算不正确。

正确的公式是:

  • nextLocation = a + UnitVector(a, b) * stepSize

在 C# 中,只需使用一个简单的Point类和Math库,这看起来像:

public Point MovePointTowards(Point a, Point b, double distance)
{
    var vector = new Point(b.X - a.X, b.Y - a.Y);
    var length = Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
    var unitVector = new Point(vector.X / length, vector.Y / length);
    return new Point(a.X + unitVector.X * distance, a.Y + unitVector.Y * distance);
}

Edit:根据评论中的 TrevorSeniors 建议更新了代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在c#中将点移动到另一个点 的相关文章

  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • 为什么 JavaScript 设置超时不起作用? [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我正在尝试使用 setTimeout 但它不起作用 任何帮助表示赞赏 有人知道怎么修这个东西吗 var button document getElementById reactionTes
  • 我可以使用

    在文章之后 我有与文章相关的标签列表 将这些标签的列表包装在语义上是否正确
  • 关于View Controller的视图问题

    当我们访问视图控制器的视图属性时 它总是代表整个屏幕还是可以是部分屏幕 间接地说 一个视图控制器可以有多个视图属性吗 donkim 是对的 但不要相信我的话 请参阅 Rincewind 的这篇文章 https devforums apple
  • 有没有办法在运行 64 位的 IE10 中默认设置 Quirks 模式

    我想知道是否有办法让我的 IE10 浏览器在打开时自动设置为 Quirks 模式 我使用的是 Windows 8 64 位 我正在访问一个需要处于怪异模式的网站 当我打开浏览器时 我仍然需要将其更改为怪异模式才能正确访问该网站 当我重新启动
  • 如何在 Android 中截取视频的屏幕截图

    我正在播放一个视频 在某些时候 我需要暂停视频 进行捕获 然后在绘画活动中使用该图像来修改它 问题是 如果我尝试保存视频 图片将是黑色的 尝试过setDrawingCacheEnabled true 可以对视频进行截图吗 你有没有尝试过Th
  • 我怎样才能选择一个html元素,无论它在selenium中的哪个框架中?

    我正在尝试选择一个驻留在 iframe 内并且可能驻留在其他 iframe 中的元素 是否可以在 python selenium 中的某些 子 iframe 中选择一个元素 而无需先选择 iframe 有没有办法以某种方式 循环 每个 if
  • 如何更改Python循环中的for循环迭代器变量?

    我想知道是否可以在 for 循环中更改迭代器的值 例如 我想编写一个程序来通过以下方式计算数字的素因数 def primeFactors number for i in range 2 number 1 if number i 0 prin
  • 处理多个 SIGCHLD

    在运行 Linux 2 6 35 的系统中 我的程序创建许多子进程并监视它们 如果子进程死亡 我会进行一些清理并再次生成该进程 我用signalfd 得到SIGCHLD我的进程中发出信号 signalfd异步使用libevent 当对非实时
  • matheca中的包导入问题

    在mathematica中 我使用的是mma 5 0 猜很老 如果我输入以下一行 Needs Graphics Master Animate Plot Sin n x x 0 2 Pi Axes gt False n 1 6 1 然后我收到
  • Dockerfile 无法构建

    直到几天前Dockerfile工作正常 当我今天尝试再次构建它时 它在终端中给出以下错误 我尝试使用多个 docker 基础映像 但仍然给出相同的错误 谁能帮我这个 我不认为我错过了什么 如果我错过了 它应该早先给我错误 但为什么现在呢 E
  • TempData 在 ASP.NET MVC 2 中读取后保留

    在 ASP NET MVC 2 中 TempData值将一直保留到会话结束或被读取为止 在里面微软的话 TempData 的值一直持续到 它被读取或直到会话时间 出去 以这种方式持久化 TempData 启用重定向等场景 因为 TempDa
  • pandas groupby 到嵌套 json

    我经常使用 pandas groupby 来生成堆叠表 但后来我经常想将生成的嵌套关系输出到 json 有什么方法可以从它生成的堆叠表中提取嵌套的 json 文件吗 假设我有一个像这样的 df year office candidate a
  • 对空集/NA 的 NA 集求和而不是 0?

    The 求和函数如果应用于空集则返回 0 如果将其应用于一组 NA 值 是否有一种简单的方法可以使其返回 NA 这里有一个borrowed例子 test lt data frame name rep c A B C each 4 var1
  • 如何获取 ASP.NET MVC 中模型状态错误的集合?

    如何获取视图中的错误集合 我不想使用 Html Helper 验证摘要或验证消息 相反 我想检查错误以及是否有错误以特定格式显示它们 另外 在输入控件上 我想检查特定的属性错误并向输入添加一个类 附 我正在使用 Spark View Eng
  • Python速度测试-时差-毫秒

    在 Python 中比较 2 次以加速测试一段代码的正确方法是什么 我尝试阅读 API 文档 我不确定我是否理解 timedelta 的事情 到目前为止我有这个代码 from datetime import datetime tstart
  • .net XmlSerializer,忽略基类属性

    假设我们有一个从基类 System Windows Controls 派生的类 SerializedLabel XmlRoot SerializableLabel public class SerializableLabel Label p
  • 如何使用 getch() ncurses 获取 Ctrl、Shift 或 Alt?

    How to get Ctrl Shift or Alt with getch ncurses I cannot get it work to get Ctrl Shift or Alt with getch using ncurses D
  • Backbone.js 在 POST 请求上获取数据

    我是backbone js 的新手 我正在尝试使用我的服务发布数据 它会返回我的数据 我的服务是 http 192 168 1 3 8080 app search candidate它将输入作为 skills c java 它会将用户列表返
  • 黑客 DropDownList 值

    我有一个 DropDownList 我试图防止它被用作攻击媒介 我是否可以假设用户无法实际更改 DDL 的值并回发到服务器 目前 如果我尝试在提交后更改数据包 则会抛出以下 ASP NET 错误消息 For security purpose
  • 在c#中将点移动到另一个点

    我想将二维搜索空间中的某个点 a 移动到具有一定步长 config StepSize 0 03 的另一个点 b Point a agent Location Point b agentToMoveToward Location import