在对bbox 进行坐标系转换时heading的处理--使用向量的旋转

news2024/11/17 7:49:23

实际做题中我们可能会遇到很多有关及计算几何的问题,其中有一类问题就是向量的旋转问题,下面我们来具体探讨一下有关旋转的问题。

首先我们先把问题简化一下,我们先研究一个点绕另一个点旋转一定角度的问题。已知A点坐标(x1,y1),B点坐标(x2,y2),我们需要求得A点绕着B点旋转θ度后的位置。

A点绕B点旋转θ角度后得到的点,问题是我们要如何才能得到A’ 点的坐标。(向逆时针方向旋转角度正,反之为负)研究一个点绕另一个点旋转的问题,我们可以先简化为一个点绕原点旋转的问题,这样比较方便我们的研究。之后我们可以将结论推广到一般的形式上。

令B是原点,我们先以A点向逆时针旋转为例,我们过A’ 做AB的垂线,交AB于C,过C做x轴的平行线交过A’ 做x轴的垂线于D。过点C做x轴的垂线交x轴于点E。

在这里插入图片描述
令A的坐标(x,y),A’ 坐标(x1,y1),B的坐标(0,0)。我们可以轻松的获取AB的长度,而且显而易见A’ B长度等于AB。假设我们已知θ角的大小那么我们可以很快求出BC和A’ C的长度。BC=A’ B x cosθ,A’ C=A’ B x sinθ。

因为∠A’ CB和∠DCE为直角(显然的结论),则∠A’ CD +∠DCB =∠ECB +∠DCB=90度。

则∠A’ CD=∠ECB,∠A’ DC=∠CEB=90度,因此可以推断⊿CA’ D ∽⊿CBE。由此可以推出的结论有:

BC/BE=A’ C/A’ D和BC/CE=A’ C/CD

当然了DC和A’ D都是未知量,需要我们求解,但是我们却可以通过求出C点坐标和E点坐标间接获得A’ C和CD的长度。我们应该利用相似的知识求解C点坐标。

C点横坐标等于:((|AB| x cosθ) / |AB|) * x = x*cosθ

C点纵坐标等于:((|AB| x cosθ) / |AB|) * y = y*cosθ

则CE和BE的的长度都可以确定。

我们可以通过相⊿CA’ D ∽⊿CBE得出:

A’D = x * sinθ DC = y * sinθ

A’D是通过BC/BE = A’C/A’D得出的

DC是通过BC/EC = A’C/DC得出的

那么接下来很容易就可以得出:

x1 = xcosθ- y * sinθ y1 = ycosθ + x * sinθ

则A’ 的坐标为(xcosθ- y * sinθ, ycosθ + x * sinθ)

我们可以这样认为:对于任意点A(x,y),A非原点,绕原点旋转θ角后点的坐标为:(xcosθ- y * sinθ, ycosθ + x * sinθ)

接下来我们对这个结论进行一下简单的推广,对于任意两个不同的点A和B(对于求点绕另一个点旋转后的坐标时,A B重合显然没有太大意义),求A点绕B点旋转θ角度后的坐标,我们都可以将B点看做原点,对A和B进行平移变换,计算出的点坐标后,在其横纵坐标上分别加上原B点的横纵坐标,这个坐标就是A’ 的坐标。

推广结论:对于任意两个不同点A和B,A绕B旋转θ角度后的坐标为:

(Δxcosθ- Δy * sinθ+ xB, Δycosθ + Δx * sinθ+ yB )

注:xB、yB为B点坐标。

结论的进一步推广:对于任意非零向量AB(零向量研究意义不大),对于点C进行旋转,我们只需求出点A和B对于点C旋转一定角度的坐标即可求出旋转后的向量A’ B’ ,因为向量旋转后仍然是一条有向线段。同理,对于任意二维平面上的多边形旋转也是如此。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1032956.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打开常用软件出现msvcp140.dll丢失的解决方法,msvcp140.dll是什么东西?

在我们使用计算机的过程中,有时候会遇到一些错误提示,其中“找不到 msvcp140.dll”就是比较常见的一种。那么,msvcp140.dll 到底是什么呢?为什么会出现找不到的情况?丢失 msvcp140.dll 又会对计算机产生什么影响&#…

Flask配合Echarts写一个动态可视化大屏

ch 技术 后端:flask 可视化:echarts 前端:HTMLJavaScriptcss 大屏布局 大屏拆分 案例项目中大屏可按版块进行拆解,会发现这里大屏主要由标题、折线图、柱状图、地图、滚动图和词云等组成,整体可切分为8个版块&…

RK358支持全链路ECC的DDR和普通内存有何区别?

ECC内存(ErrorCorrection Code Memory)和普通内存是计算机存储技术中常见的两种类型的内存。它们在设计和功能上有一些重要区别。接下来我们将详细解释ECC内存和普通内存,并列举它们之间的区别以及ECC内存的纠错原理。 普通内存通常被称为非E…

MQ - 16 集群篇_分布式集群的数据一致性方案

文章目录 导图Pre分区、副本和数据倾斜副本间数据同步方式同步复制异步复制CAP 和一致性模型集群数据一致性和可靠性实现ZooKeeper 数据一致性和可靠性Kafka 数据一致性和可靠性Pulsar 数据一致性和可靠性总结导图 Pre MQ - 14 集群篇_如何构建分布式的消息队列集群&#

FOXBORO FBM233 P0926GX控制脉冲模块

FOXBORO FBM233 P0926GX 是一种控制脉冲模块,通常用于工业自动化和控制系统中。这个模块的主要功能是生成和控制脉冲信号,以用于执行特定的操作或控制过程。以下是可能适用于 FOXBORO FBM233 P0926GX 控制脉冲模块的一些常见特点: 脉冲生成&a…

【力扣-每日一题】213. 打家劫舍 II

class Solution { public:int getMax(int n,vector<int> &nums){int a0,bnums[n],c0;for(int in1;i<nums.size()n-1;i){ //sizen-1,为0时&#xff0c;第一个可以偷&#xff0c;最后一个不能偷size-1&#xff1b;n为1时&#xff0c;最后一个可偷&#xff0c;计算…

【00】FISCO BCOS区块链简介

官方文档&#xff1a;https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/introduction.html FISCO BCOS是由国内企业主导研发、对外开源、安全可控的企业级金融联盟链底层平台&#xff0c;由金链盟开源工作组协作打造&#xff0c;并于2017年正式对外开源。 F…

Java基于SpringBoot的会员制医疗预约服务系统,可作为毕业设计

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈 3系统分析3.1需求分析 4系统总体设计4.1系统结构4.2数据库设计4.2.1 数据库概念…

浙江大学2024年研招简章总纲领公布:MBAMPAMEM报考划重点版

2024年研究生招生录取工作终于走到关键的一步&#xff0c;9月24-27日考研网上预报名时间段开启前&#xff0c;浙大公布2024年研究生招生简章总纲领&#xff0c;立足浙江的杭州达立易考教育带领大家一睹为快&#xff0c;特别为MBA/MPA/MEM等管理类硕士考生划重点&#xff01; 一…

使用React-Query解决接口请求

使用React-Query解决接口请求 前言 如果你平常会写前后端交互的react页面&#xff0c;那你一定写过这样的代码. function App() {const [data, updateData] useState(null);const [isError, setError] useState(false);const [isLoading, setLoading] useState(false);us…

VS2019的SDL2项目配置

库下载 Simple DirectMedia Layer - Homepage 对于Windows下使用VS2019开发的选手&#xff0c;应该直接选VC后缀了。 VS目录配置 首先VS2019创建一个空项目&#xff0c;新加入一个源文件&#xff0c;代码如下&#xff1a; /*This source code copyrighted by Lazy Foo Produ…

【C语言】字符函数和字符串函数(含模拟)

前言&#xff1a; 在做OJ题或阅读代码时或多或少会遇到一些字符函数和字符串函数&#xff0c; 如果不认识或不熟悉就会造成不便&#xff0c; 本篇文章主要是为了这方面而存在&#xff0c; 此篇介绍各个字符串的功能与使用方法&#xff0c; 下一篇会讲解如何模拟这些函数 重点&a…

【亲测有效】3步实现 微信小程序内接入小程序客服,网页端客服工具与移动端小程序客服工具使用方法,使用入口,并设置当前客服状态

背景&#xff1a;多数服务类小程序内回存在微信在线客服功能 微信小程序内接入小程序客服 第一步登录“微信公众平台”点击“客服”功能&#xff0c;并设置微信客服 第二步登录在小程序所需客服的位置插入以下代码 <button open-type"contact" bindcontact"…

通过410s读取电表数据并接入物联网平台

通过410s读取电表数据并接入物联网平台 设备接线准备设备调试代码实现Modbus TCP Client 读取电表数据读取寄存器数据转成32bit Float格式然后使用modbusTCP Client 读取数据 使用mqtt协议接入物联网平台最终代码实现 设备接线准备 设备调试 代码实现 Modbus TCP Client 读取…

【PLC GX Works2】创建一个工程

PLC GX Works2软件安装 https://www.jcpeixun.com/software/375 程序编写 1、工程中找到新建 2、新建 3、导航栏中选择第三行第一个&#xff0c;是全局软元件注释 4、修改软元件名x0为点动按钮&#xff0c;y1为电机&#xff0c;之后关闭即可。 5、左母线&#xff0c;右…

精彩回放|Fortinet保障联网车辆全生命周期信息安全

随着AI、云计算、物联网等技术的不断发展&#xff0c;汽车行业正在经历深刻的变革。然而&#xff0c;这种变革不仅带来了前所未有的机遇&#xff0c;也带来了许多挑战&#xff0c;其中最突出的是信息安全问题。在为期五期的垂直行业网络安全案例讲座的第一期“汽车行业网络安全…

好用的记笔记app选哪个?

当你在日常生活中突然获得了一个灵感&#xff0c;或者需要记录会议的重要内容&#xff0c;或者是学校课堂上的笔记&#xff0c;你通常会拿出手机&#xff0c;因为它总是在你身边&#xff0c;随时可用。这时候&#xff0c;一款好的记笔记App可以让你事半功倍。 敬业签是一款全面…

【在Ubuntu部署Docker项目】— PROJECT#1

一、说明 让我们深入了解 Docker。用docker构建web服务器。我们正在计划开发JavaScript API&#xff0c;建立MySQL数据库&#xff0c;并创建一个 PHP 网站使用 API 服务。Php Node.js Mysql — DockerSeries — Episode#1 二、系统架构概述 我们要构建的容器&#xff0c;是三…

多边形碰撞检测算法

1、AABB碰撞检测算法 AABB碰撞检测指轴对齐碰撞箱(Axis-aligned Bounding Box)&#xff0c;是分别从x轴向和y轴向进行碰撞检测的算法。即对于需要检测的物体A和物体B我们需要将其用A盒和B盒套起来&#xff0c;判断A盒和B盒在x轴向和y轴向是否发生碰撞&#xff0c;只有在x轴向和…

电气设备预防维护包含哪些内容

电力系统的可靠性对于工业和基础设施运行至关重要&#xff0c;而电气设备预防维护是确保电力系统长期安全可靠运行的关键。本文将重点介绍电气设备预防维护的标准和操作过程&#xff0c;以确保电力系统的稳定性和安全性。 电气设备预防维护的标准 电气设备预防维护需要遵循一系…