从 3 个点检索正角或负角

2024-02-14

我正在围绕二维空间中的中心点旋转点。这些点是中心点、旧鼠标位置和新鼠标位置。我的旋转功能运行良好,我可以完美地计算角度。但如果用户沿应解释为逆时针方向移动鼠标,我想计算负角度。

例如,如果您位于(小于)中心点的 y 值之上(小于),则向右(正 x 轴)移动鼠标应顺时针旋转,但如果实际上位于(大于)中心点的 y 值,则应逆时针旋转中心点的 y 值。

这是我所拥有的:

PointF centerPoint;
PointF oldPoint;
PointF newPoint;

double Xc = centerPoint.X;
double Yc = centerPoint.Y;
double Xb = oldPoint.X;
double Yb = oldPoint.Y;
double Xa = newPoint.X;
double Ya = newPoint.Y;

double c2 = (Math.Pow(Xb - Xa, 2) + Math.Pow(Yb - Ya, 2));
double a2 = (Math.Pow(Xb - Xc, 2) + Math.Pow(Yb - Yc, 2));
double b2 = (Math.Pow(Xa - Xc, 2) + Math.Pow(Ya - Yc, 2));

double a = Math.Sqrt(a2);
double b = Math.Sqrt(b2);

double val = (a2 + b2 - c2) / (2 * a * b);
double angle = Math.Acos(val);

因此,我需要一种在需要时使角度为负值的方法,以便这些点顺时针或逆时针旋转以跟随鼠标位置。


试试这个,但我不确定:

double v1x = Xb - Xc;
double v1y = Yb - Yc;
double v2x = Xa - Xc;
double v2y = Ya - Yc;

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

从 3 个点检索正角或负角 的相关文章

随机推荐

  • .class 样式到 .class B 样式可以轻松制作动画吗?

    有没有一种方法可以在 Jquery 中设置动画而无需指定每个属性 让我们说 classA color red classB color blue function animate selector classA classB time st
  • 猫头鹰的含义:有值吗?

    一个的含义是什么owl hasValue限制 以及它与owl allValuesFrom and owl someValuesFrom 在本体论中 我想写一个公理 每个拥有文凭的人都是有文化的 我该怎么写这个 不同类型的限制类别 考虑一个个
  • Microsoft Bot 中的相同线程重复欢迎消息

    我有一条欢迎消息 配置为在我的机器人第一次启动时出现在 MessagesController 中 private Activity HandleSystemMessage Activity message if message Type A
  • Perl 是否有计算字符串中匹配项数量的快捷方式?

    假设我有 my string one two three four 我应该如何利用上下文来获取模式找到匹配项的次数 3 这可以使用单行完成吗 我试过这个 my number scalar string gi 我认为通过加上括号 number
  • 通过 Graph API 评论 Facebook 页面评级(评论)

    长期潜伏者第一次海报 我们正在与 Facebook API 合作 将其集成到我们的网络应用程序中 并且我们能够通过 page id ratings 部分中的 open graph story 参数获取公司页面评级 但是我们找不到评论 回复的
  • Buffer.BlockCopy 与不安全的 byte* 指针复制

    复制字节块时哪个性能更好 Buffer BlockCopy非常优化 它基本上是原始内存副本的包装器 所以它应该非常快 并且避免弄乱指针和unsafe代码 它应该是默认的 你当然可以用各种方式来衡量
  • HList 选项的幂集

    我正在玩 Shapeless 我正在尝试计算 某种 powerset https en wikipedia org wiki Power set of an HList of Options 基本上 我想解释一下HList作为一个集合 在这
  • Angular2 /错误:找不到集合

    我对 Angular2 很陌生 正在尝试构建一个 Todo 应用程序 这是我的文件结构 My todo service ts代码 里面shared folder import Injectable from angular core imp
  • tkinter 中的“权重”有什么作用?

    我一直在搜索不同的网站 试图找出权重在 tkinter 中的作用 我从那里得到这个TkDocs http www tkdocs com tutorial grid html 每列和行都有一个与之关联的 权重 网格选项 该选项告诉它如果母版中
  • 使用 UNION 将数据拉入网格

    我的网站上有一个数据网格 我从两个表中提取公司信息 我正在创建一个表单来根据 3 个过滤器 类别 州 城市 对这些结果进行排序 这是我最初将数据加载到网格中的查询 我希望它填充我的所有表数据 直到用户决定过滤它 这就是为什么我使用 UNIO
  • 使用 gradle 'java-library' 时无法引用库中的类

    升级到 Android Studio 3 0 后我还使用新的 android gradle 插件com android tools build gradle 3 0 0 alpha1我想用java 库 https docs gradle o
  • Mac apache localhost 给出 403 Forbidden

    我正在尝试在我的新 mac OSX 10 9 上设置本地环境 我知道它已经安装了apache 所以我一直在使用它 无论我如何设置 httpd vhosts conf hosts httpd conf 文件 在浏览器上访问 localhost
  • VS Code 接受有关输入不起作用的建议

    Normally pressing enter accepts a suggestion on intellisense but when I press enter it does not accept the suggestion an
  • 是否可以在 socket.io 中使用 UDP?

    我正在开发一款游戏 听说 UDP 更适合实时游戏 我知道 socket io 使用 TCP 并且想知道是否有某种方法可以将其切换到 UDP 我尝试查找它 但只找到了 2012 年左右的帖子 其中说 UDP 仅在浏览器中处于实验阶段 从标准浏
  • xvfb(带有 Mesa 19.2)与 Vulkan 兼容吗?

    我正在尝试在无头 Ubuntu 19 10 虚拟机上运行基于 Vulkan 的图形应用程序 通过xvfb https en wikipedia org wiki Xvfb 从裸露的 Ubuntu 19 10 映像开始 使用创建lxc htt
  • 摆脱 NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE?

    我越来越NP NULL ON SOME PATH FROM RETURN VALUE在这个片段中 final Integer id Ints tryParse idString FailReason NO SUCH THING checkC
  • 协方差胜过具体类型?

    老实说 我问过 这个问题的一部分 here https stackoverflow com questions 9335278 covariance in different fw causes code break但现在我有一个不同的相关
  • 避免在数据表中呈现“表中没有可用数据”

    我正在使用 JQuery 数据表 当表格呈现时 它显示为 表格中没有可用数据 一段时间后表格开始显示数据 并且 没有可用数据 消失 我不希望出现 没有可用数据 相反 如果出现 正在加载 或 请稍候 之类的内容 那就太好了 或者没有任何东西可
  • 当鼠标离开JQuery时停止.hover动画

    我有类似的东西 test hover function this animate function this animate 但如果用户的鼠标在动画结束之前离开 动画将继续 如果我快速重复地快速悬停和取消悬停元素 则动画会在鼠标离开元素后重
  • 从 3 个点检索正角或负角

    我正在围绕二维空间中的中心点旋转点 这些点是中心点 旧鼠标位置和新鼠标位置 我的旋转功能运行良好 我可以完美地计算角度 但如果用户沿应解释为逆时针方向移动鼠标 我想计算负角度 例如 如果您位于 小于 中心点的 y 值之上 小于 则向右 正