相对于旋转角度的矩形坐标

2024-01-06

我正在尝试使用 Surfaceview 和画布绘图在 Android 中创建自定义组件。这些组件可以通过触摸来调整大小和旋转。考虑创建一个图像视图,其顶部、右侧、底部和左侧边缘可通过触摸并拖动所需边缘进行缩放。我在用RectF为了保持组件的边界,我正在使用旋转canvas.rotate(angle, bounds.centerX(),bounds.centerY())方法。问题是在调整顶部边缘大小时,应该修复 Let 、 Right 和 Bottom 边缘,如果旋转角度不是 0 度,我无法修复它。我需要一个数学解决方案来找出旋转矩形相对于实际矩形边界的 x,y 坐标。

我可以借助一些图像来解释它。 下图显示了两个矩形,其边界也是已知的并以各自的颜色显示。将绿色矩形视为组件的初始边界,即。旋转-45度,中心为(10,10)。现在要重新调整大小Top edge矩形的形状并显示在下图 2 中。

从图 2 可以看出,Y 位置从 6 个减少到 4 个。旋转后的矩形也以粉红色显示。请记住,我在组件旋转角度为 -45 度时调整大小,因此在拖动时Top Edge长方形的左、右和底部位置不应改变。所以图 2 的粉红色矩形应该有左、右、下坐标与...一样图 1 的绿色矩形。获得的矩形与预期矩形的比较如图 3 所示。

在图 3 中黄色矩形是预期/必需的输出。这获得矩形粉红色绿色旋转矩形,其变化取决于旋转角度.

  • 我的旋转角度=-45度
  • 实际(未调整大小)矩形的边界。
  • 旋转 = -45 度时的实际(未调整大小)矩形的边界。
  • 调整大小的矩形的边界。
  • 旋转 = -45 度时调整大小的矩形的边界。

如何计算黄色矩形的边界/中心。这样我就可以正确地调整组件的大小了?请问有什么数学可以应用吗?

所需的点/坐标在图 3 中标记为红色圆圈。


关键是:“如果旋转角度不是 0 度,我无法修复它。”

假设您的矩形旋转了 10 度。

1)将鼠标坐标绕屏幕上的某个点旋转-10度

2)将矩形中心旋转-10度

...现在您将问题简化为 0 度的矩形。矩形移动了,是的,鼠标移动了,但它们应该是相对的。

3)现在进行矩形操作。矩形中心将会移动。

4)将新矩形中心旋转10度

这样您就不必考虑它,并且始终在未旋转的坐标中工作。

指向[x, y]旋转角度a最终将在[x*cos(a) - y*sin(a), x*sin(a) + y*cos(a)]

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

相对于旋转角度的矩形坐标 的相关文章

  • 如何从 SDK 实现每个会话的 Google Places 自动完成功能?

    是否可以从 Android 和 iOS 应用程序的 place sdk 实现基于会话的自动完成 根据 6 月 11 日生效的新 Google 地图框架定价 对自动完成的请求可以分为基于击键 会话的请求 我找不到描述实施步骤的文档 除了这个参
  • Android 中多个蓝牙连接的自定义 UUID

    我有一个 Android 设备作为服务器连接到多个蓝牙 Android 客户端 我了解 UUID 的概念以及它的独特之处 我的问题是 我可以为连接到我的服务器的所有客户端使用相同的 UUID 吗 如果没有 我如何以编程方式为我的客户端生成
  • 如何获取每个StorageVolume的可用大小和总大小?

    背景 谷歌 悲伤 计划破坏存储权限 https www xda developers com android q storage access framework scoped storage 这样应用程序将无法使用标准文件 API 和文件
  • 我在布局上看不到任何 FirebaseRecyclerAdapter 项目

    我试图将数据从 Firebase 数据库检索到我的布局 但我看不到任何项目FirebaseRecyclerAdapter在布局中 请帮忙 我按照一个教程展示了如何做到这一点 当我运行应用程序时 我没有看到任何项目 但我可以滚动 public
  • Cheesesquare:enterAlways 会产生错误的布局

    Adding enterAlways到 Cheesesquare 演示的滚动标志
  • 从响应中获取标头(Retrofit / OkHttp 客户端)

    我正在使用 Retrofit 与 OkHttp 客户端和 Jackson 进行 Json 序列化 并希望获取响应的标头 我知道我可以扩展 OkClient 并拦截它 但这发生在反序列化过程开始之前 我基本上需要的是获取标头以及反序列化的 J
  • Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据

    我在 Android studio 中遇到 gradle 构建错误 如下所示 Error A problem occurred configuring project MyApp Could not resolve all dependen
  • 如何在 Linux 内核中定义并触发我自己的新软中断?

    我想在 Linux 内核中创建自己的软中断 这是正确的方法吗 In the init我想触发该模块的softirq我将添加一个调用 394 void open softirq int nr void action struct softir
  • Bitmap.getPixels() 中的 IllegalArgumentException

    我想将数据从位图复制到int using getPixels 这是我当前的代码 int pixels new int myBitmap getHeight myBitmap getWidth myBitmap getPixels pixel
  • 如何更改终端的默认目录?

    我想更改 Android Studio v2 2 2 终端的默认目录 当我打开终端时 它基于项目的目录 C 项目路径 我经常需要使用adb shell 所以我必须导航到 SDK 路径 平台工具 才能使用 adb 命令 是否可以更改终端的默认
  • 在 Cordova 应用程序中获取额外功能

    我们有两个 Android 应用程序 一个使用本机 Java 实现 另一个使用 Ionic 编写 Ionic 应用程序启动我的应用程序 这是使用灯插件 https github com lampaa com lampa startapp 我
  • 透视变换矩阵的计算

    给定 3D 空间中的一个点 如何计算齐次坐标中的矩阵 将该点投影到平面上z d 其中原点是投影中心 好吧 让我们尝试解决这个问题 扩展伊曼纽尔的答案 Assuming如果您的视图向量直接沿着 Z 轴 则所有尺寸都必须按视图平面距离的比例进行
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • Android - AudioRecord类不读取数据,audioData和fftArray返回零

    我是 Android 新手 一直在开发音调分析器应用程序 最低 SDK 8 我读了很多关于如何实现 Audiorecord 类的文章 但我想知道为什么它在我录制时不读取任何数据 我尝试显示 audioData 和 fftArray 的值 但
  • 使用片段时应用程序崩溃

    我正在处理碎片和 我的代码中有一个我找不到的问题 logcat 指向我的一个片段中的这段代码 Override public View onCreateView LayoutInflater inflater ViewGroup conta
  • Mipmap 与可绘制文件夹[重复]

    这个问题在这里已经有答案了 我正在使用 Android Studio 1 1 Preview 1 我注意到 当我创建一个新项目时 我得到以下层次结构 不同 DPI 的 Mipmap 文件夹 不再有不同 DPI 的可绘制文件夹 我应该将所有资
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • Android - 以编程方式选择菜单选项

    有没有办法以编程方式选择菜单选项 基本上 我希望视图中的按钮能够执行与按特定菜单选项相同的操作 我正在考虑尝试调用 onOptionsItemSelected MenuItem item 但我不知道要为菜单项添加什么 是的 有一种方法可以选
  • 问题:为什么React Native Video不能全屏播放视频?

    我正在react native 0 57 7 中为android和ios创建一个应用程序并使用反应本机视频 https github com react native community react native video播放上传到的视频
  • 通过电子邮件发送文本文件附件

    我正在尝试附加一个文本文件以便通过电子邮件发送 但每当我打开电子邮件应用程序时 它都会说该文件不存在 请帮助 Intent i new Intent Intent ACTION SEND i setType text plain i put

随机推荐

  • 如何使用 ImageSharp 清除图像的 EXIF 数据?

    我发现一个 GitHub 问题 显示如何通过将其 ExifProfile 设置为 null 来删除图像的 exif 数据 SixLabors ImageSharp Image image Image Load imagePath remov
  • Kill -3 或 jstack :有什么区别?

    我想获取在 jboss 服务器上运行的 Web 应用程序的线程转储 我为我的问题找到了两个解决方案 使用unix命令 kill 3 使用JDK中存在的jstack工具 谁能向我解释这两种方法之间的区别 提前致谢 The jstack命令可以
  • 为什么 html 标签(s、strong)在 jasper 报告中不起作用?

    我添加了静态文本 html 标签 但单击预览后粗体和删除线无法正确显示 此外 当从数据库加载数据时 它无法正确显示 有什么解决办法吗 Jasper Report不支持所有html标签 支持的标签定义在样式文本示例 http jasperre
  • 导出的 pdf 中缺少 Jupyter 笔记本 matplotlib 数字

    在 jupyter 笔记本中生成 pdf 时 一切都很好 但我想将内联数字保留在 pdf 以及笔记本中 这是我的代码 matplotlib notebook import matplotlib pyplot as plt import nu
  • Xcode 7.3 - 警告未显示且无法搜索项目

    自从我升级到 Xcode 7 3 以来 我注意到在搜索工作区时总是 没有结果 并且警告窗格中也没有显示任何警告 有时它会工作几分钟然后再次死机 重新启动我的电脑 Xcode 然后重新安装都没有帮助 还有其他人遇到过这种情况或找到解决方案 解
  • 错误:预期声明说明符或“list_node”之前的“...”

    我有一个 Catalog h 文件 typedef struct node list node struct node operationdesc op ptr list node next 和一个 parser h 与此 include
  • 为什么我需要 DJANGO_SETTINGS_MODULE 设置?

    每次通过 SSH 登录服务器时 我都需要输入以下内容 export DJANGO SETTINGS MODULE settings 如果我不使用manage py模块就会失败 我的manage py添加了以下代码 if notificati
  • 在数据库上创建程序集时部署 SQL CLR 项目失败

    我用来创建程序集的服务器上的文件夹中有一个包含 3 个 dll 文件的文件夹 我首先尝试了以下代码 并收到一个错误 表示在服务器上找不到 system data datasetextensions dll 文件 我将 dll 从我的计算机复
  • 如何共享对 Firebase Analytics 数据的访问而不暴露 Firebase 的其余部分?

    我知道如何向 Firebase 项目添加协作者 并且可以为每个协作者分配特定的角色 这些角色与某些权限相关联 然而 似乎没有一个角色符合我的要求 我想与非技术营销人员共享 Firebase Analytics 的访问权限 我必须避免将 Fi
  • IIS - 以编程方式重置 SSL 会话

    我有一个 IIS 7 5 Web 应用程序 客户端使用双向 又称双向 SSL 连接到该应用程序 客户端证书由智能卡提供 我需要让网络应用程序超时 当超时发生时 我想销毁 SSL 会话 假设在 IIS 上 从而强制客户端重新进行身份验证 如何
  • 原型点击、鼠标悬停和鼠标移开不能一起工作?

    我正在尝试做一个非常简单的按钮 它根据鼠标悬停 鼠标移出和改变颜色 单击 我正在原型中执行此操作 奇怪的是如果我使用鼠标悬停和鼠标移出 单击按钮后 按钮不会变为白色 似乎是因为鼠标移开 这是我的代码 izzy observe mouseov
  • 可以发出 cURL 请求并获取所采用的路由(类似于traceroute)

    我有一个带有标头参数的 GET 请求 我想检查我的应用程序正在使用哪个数据库实例 有没有办法构建一个 cURL 请求来告诉我我的请求要去哪里 我知道有一个traceroute显示所有服务器跃点的命令 但是有没有类似于使用 cURL 的东西呢
  • 垂直于给定点的线段

    我想计算给定线上与给定点垂直的点 我有一条线段AB 在线段外有一个点C 我想计算AB上的点D 使得CD垂直于AB 我必须找到D点 它非常类似于this https stackoverflow com questions 1811549 pe
  • 从 XIB 到故事板

    我有一个带有故事板和一个 xib 窗口的应用程序 从情节提要到 xib 我以这种方式移动 ShowDreamNIBController detailViewController ShowDreamNIBController alloc in
  • Java如何在jar环境而不是IDE中读取文件夹并列出该文件夹中的文件

    我的问题是我在 src 下创建一个文件夹 名称是 IconResources 在 IconResources 中有很多图片 目录是这样的 ProjectName src 套餐1 套餐2 IconResources 这是目标文件夹 我想列出所
  • ES6 之前的类中的静态函数

    我的问题 见下文 是如何声明 STATIC 函数和常量pre ES6类所以它们可以被继承 在问题之前我们已经对当前的 ES6 类和 ES6 之前的类进行了回顾 因此我们都使用相同的约定 在 ES6 之后 我们可以在类中定义静态函数 如下所示
  • 实时显示中表格的垂直溢出应滚动内容

    我正在使用一个Live https rich readthedocs io en stable live html显示内容Table https rich readthedocs io en stable tables html随着时间的推
  • 在 C++ 中获取文本文件的第 n 行

    我需要读取文本文件的第 n 行 例如textfile findline 0 会找到加载的文本文件的第一行ifstream textfile 这可能吗 我不需要将文件的内容放入数组 向量中 我只需将文本文件的特定行分配给变量 特别是 int
  • NSDate/NSDateFormatter - 只存储时间,不存储日期?

    我一直在环顾四周 但没有看到任何可以解决这个问题的东西 所以我希望有人可以帮助我解决这个问题 我想做的是使用 NSDate 变量 在核心数据中 来存储时间 而不是日期和时间 而只是格式为 HH MM SS 的时间 查看 NSDateForm
  • 相对于旋转角度的矩形坐标

    我正在尝试使用 Surfaceview 和画布绘图在 Android 中创建自定义组件 这些组件可以通过触摸来调整大小和旋转 考虑创建一个图像视图 其顶部 右侧 底部和左侧边缘可通过触摸并拖动所需边缘进行缩放 我在用RectF为了保持组件的