假设我有一个矩形(R),在矩形内部有两个点,a和B。我需要围绕中心点(C)旋转矩形,使a和B具有相等的y坐标。由于这个的解可以产生两个单独的答案(其中Ax = <Bx,当Ax> Bx时,我想把它限制为只允许Ax <Bx。>
我的解是在绕M (A和B之间的中点)旋转时求出,然后绕C旋转(下)。
这是否在所有情况下都有效?提前感谢!
CGPoint m = CGPointMake(a.x / 2 + b.x / 2, a.y / 2 + b.y / 2);
float dx = m.x - a.x;
float dy = m.y - a.y;
float radians = -atan2f(dy, dx)
您可以围绕C进行旋转,但要通过检查A点和b点之间的关系来确定旋转角度,旋转角度将为-atan2(dy, dx)
,其中dy = B.y-A.y
和dx = B.x-A.x
。
atan2
的范围是-M_PI
到M_PI
,因此表达式将始终提供最小的旋转以使线AB平行于x轴。产生一个结果,其中A.x <B.x,检查dx的符号。一个负的dx意味着A.x> B.x,在这种情况下,你的旋转应该被调整。总结:
CGPoint A = // some point
CGPoint B = // some point
CGFloat dx = B.x - A.x;
CGFloat dy = B.y - A.y;
CGFloat rotation = (dx < 0)? M_PI+atan2(dy,dx) : -atan2(dy,dx);
将旋转应用于矩形坐标系中的任意点。矩形将围绕该点旋转,使直线AB平行于x轴,留下A.x 相关内容
最新更新
- 返回一个字典,每个字符都有多个实例
- AWS S3 -仅Zip文件对象,而不是路径
- 公共api如何处理CORS起源和jwt ?
- 如何摆脱实际上"duplicates"几乎等同的调用行,实际上只切换了部分列数据?
- 如何在换行时中断文本?
- 使用流JAVA 8将map转换为特定的dto对象
- React Typescript:重构代码后无法过滤数组
- pyalgotrade退出订单事件(onExitOk)的问题
- 如何从Lucene文档中打印所有术语?
- 使用jQuery通过span类获取检查元素
- 如果数据在列表中,如何过滤请求中的数据?
- 是否可以使用javascript或python访问whatsapp消息数据库历史记录?
- 为什么在版本 5 中找不到松树脚本的"ta.sqrt"?
- 检查String是否包含List中的任何项
- Firebase Checkout Timer
- Pythonnet中的c#扩展和Linq
- 你好,这是大学学习编程的第一天
- 为什么单元测试一个图像字段使用SimpleUploadedFile创建多个图像?
- 从文件中删除空白而不是从目录中删除空白会抛出错误
- 如何调用异步函数之前的组件呈现在reactjs?
- scikit-learn版本不匹配__version__ '和' pip show scikit-learn '.<
- 雪花云数据平台哈希MD5或SHA256
- Traefik filter portainer 作为 docker 群中的"disabled container"
- Pandas数据框架,如何根据其他行的值替换部分行
- 如何安装Tensorflow和CUDA驱动程序?
- 如何创建带有域名和可导出过程列表的COBOL模块
- Pixi js对一个元素进行两次旋转(如何添加类似包装器的东西)
- 如何停止旅行计划:在Windows 10的本地计算机上运行
- r语言 - 使用for循环和数据框架从vector中提取元素
- 为什么控制台.log在我单击按钮后再次打印状态,即使状态的值没有更改?
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium