如何围绕任意点旋转一组 2D 形状

2023-12-13

我正在创建一个“Body”类,它将一堆 2D 形状组合在一起,形成一个可移动、可旋转的主体。

我需要知道的是如何旋转每个单独的形状,使其看起来像是整个身体都在旋转,而不是每个形状都围绕其中心旋转。 我不能只是将每个形状的旋转中心更改为同一点,因为这也会导致它们的位置受到影响。

因此我需要找到某种使用以下公式的方程身体中心以保持身体形状不变形的方式重新定位和旋转身体中的每个单独形状?

我怎样才能做到这一点?


任意点旋转的方法是先减去点坐标,绕原点旋转,然后加上点坐标。

x2 = px + (x1-px)*cos(q)-(y1-py)*sin(q)
y2 = py + (x1-px)*sin(q)+(y1-py)*cos(q)

where px, py是旋转点坐标,并且x1,y1原始 2D 形状顶点和x2,y2旋转坐标,以及q以弧度为单位的角度。

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

如何围绕任意点旋转一组 2D 形状 的相关文章

随机推荐

  • Android JNI:32 位与 64 位设备的兼容性?

    我有一些使用本机组件的库 这些库是使用 NDK 为 32 位 Arm 架构构建的 现在我们在现代设备上拥有 64 位处理器 所以我想知道这些库是否可以工作 在我的情况下 我没有本机库的源代码文件 只有 SO 文件 我无法为 64 位构建它们
  • 如何计算图像中不规则物体的面积(opencv)?

    So I have this image 我需要计算特定部分的面积 所以我编写了以下代码 packages from imutils import perspective from imutils import contours impor
  • 在 MATLAB 中总结 Dice

    我的函数 RollDice 模拟给定数量的六面骰子滚动给定的次数 该函数有两个输入参数 即每次实验中掷骰子的数量 NumDice 和掷骰子的总次数 NumRolls 该函数的输出将是长度为 NumRolls 的向量 SumDice 其中包含
  • ReferentialConstraint 中的依赖属性映射到存储生成的列

    写入数据库时 出现此错误 ReferentialConstraint 中的依赖属性映射到 存储生成的列 列 付款 ID public bool PayForItem int terminalId double paymentAmount e
  • UTF-8 字符集不适用于 javax.mail

    我用过Java 邮件 API 用于发送电子邮件 我正在使用联系人公式发送输入 该输入必须发送到特定的电子邮件 尽管我是丹麦人 但电子邮件发送没有问题 因此我需要在主题和电子邮件文本中使用三个丹麦字符 即 和 因此 我发现我可以使用 UTF
  • 为什么我的日志位于 std 命名空间中?

    在下面的代码中 我定义了一个简单的log功能 在main I try not调用它 我打电话std log 尽管如此 我自己的log叫做 我看到 日志 在屏幕上 有谁知道为什么 我使用 G 4 7 和 clang 3 2 include
  • jsTree 在 IE8 中的显示缺陷

    我一直在使用 jsTree 并在 IE8 中遇到问题 所有数据都在树中正确显示 但是当我尝试折叠树的分支时 它无法正确显示 也就是说 发生了平滑的折叠动画 但随后数据在不应该可见的时候再次可见 相同的代码在 Firefox 3 6 27 和
  • 如何在Google电子表格中记录删除事件[重复]

    这个问题在这里已经有答案了 我需要使用 Google Apps 脚本在 Google 电子表格中记录删除事件 删除单元格或整行 并获取单元格编号和用户名 功能onEdit e 在编辑单元格时触发 而不是在删除单元格时触发 function
  • IntelliJ 中 Github 推送失败

    我使用我的新 github 帐户在我的项目中通过 github MacOS 桌面创建了 2 个存储库 但是当我尝试通过 IntelliJ 推送提交时 出现 403 错误 但我可以在 github Desktop 中成功推送 远程 aui C
  • 使用enable_if选择类构造函数[重复]

    这个问题在这里已经有答案了 考虑以下代码 include
  • 如何制作可折叠丝带?

    我正在寻找一种对可折叠丝带进行编程的方法 所以我这里有这段代码 ribbon position absolute top 20px right 0 padding 15px ribbon content position relative
  • 使用 Selenium 访问 Shadow DOM 树

    是否可以使用 Selenium Chrome webdriver 访问 Shadow DOM 中的元素 正如预期的那样 使用普通的元素搜索方法不起作用 我已经看到了对切换到子树w3c 上的规范 但找不到任何实际的文档 示例等 有人在这方面取
  • Networkx:绘制平行边

    使用以下代码从数据框中绘制图表 import pandas as pd import networkx as nx df pd DataFrame id emp 13524791000109 12053850000137 470782100
  • 禁用所有移动设备中的滚动

    这听起来好像互联网上应该有一个解决方案 但我不知道为什么我找不到它 我想禁用移动设备上的水平滚动 基本上试图实现这一目标 body overflow x hidden disable horizontal scrolling 这可能是相关信
  • 在matlab中将链接插入图像?

    我想在 matlab 中的图像中添加指向文档的链接 我有一个特定的区域 我想放置链接 例如 我希望图像中 x 40 y 120 处的位置有文档地址的链接 类似于下面的内容 我知道这不是正确的 matlab 代码 text 40 120 a
  • Qt和gcov,不生成覆盖率文件

    我正在尝试获取我为 Arora 浏览器编写的组件的代码覆盖率 该组件是使用 C 和 Qt 框架编写的 我无法使用 gcov 程序 无论是在 Gnu Linux 还是 Mac Os X 下 我尝试了在互联网上找到的所有内容 还通过强制自动编辑
  • Heroku rake db:migrate 不创建表 (Rails 5)

    我有一个 Rails 5 应用程序 我想销毁并重建我的实时数据库 网站尚未启动 所以我遵循了应该有效的步骤 它们过去曾经有效 heroku pg 重置 HEROKU POSTGRESQL HEROKUCOLOR URL confirm 应用
  • 如何在javascript中获取该元素的innerHTML?

    很简单的问题 我有一个元素 标签 它有一个 onclick 来调用 JavaScript 函数 除此之外 我希望这个函数能够回显调用它的元素的innerHTML 因此 在这种情况下 atag 的innerHTML 我该怎么做呢
  • 如何为组创建属性并在 hdf5 文件系统中访问它们?

    我想在 hdf5 文件中创建两个组 第一组 h5md团体简介和 颗粒 脂质组组2描述 前者仅包含一个直接属性 版本 1 0 和两个组创建者和作者及其属性 因此这里没有数据集 在 粒子 脂质组中 唯一缺少的部分是盒子组盒组说明 最少的信息是两
  • 如何围绕任意点旋转一组 2D 形状

    我正在创建一个 Body 类 它将一堆 2D 形状组合在一起 形成一个可移动 可旋转的主体 我需要知道的是如何旋转每个单独的形状 使其看起来像是整个身体都在旋转 而不是每个形状都围绕其中心旋转 我不能只是将每个形状的旋转中心更改为同一点 因