旋转角度计算(旋转手势)
易画图,难交互。
旋转手势,计算旋转方法有很多
如下图:
A为旋转中心,B为旋转起点,C为旋转终点
那么问题就来了,旋转角度BAC为多少?
方法1:atan2方法
degree = Math.toDegrees(Math.atan2(x1-x2,y1-y2));
简单方便,一句解决,但由于atan2角度限制,所以体验不是很好
方法2:矢量
根据矢量AB、AC计算角度,空间向量夹角公式
x1 = x1 / ((x1-x)^2 + (y1-y)^2);
y1 = y1 / ((x1-x)^2 + (y1-y)^2);
x2 = x2 / ((x2-x)^2 + (y2-y)^2);
y2 = y2 / ((x2-x)^2 + (y2-y)^2);
degree = Math.toDegrees(Math.acos(x1*x2 + y1*y2));
突然发现变成数学题,满满的都是泪啊,算了不说了
public static double getRotateAngle(double x1, double y1, double x2, double y2) {double epsilon = 1.0e-6;double nyPI = Math.acos(-1.0);double dist, dot, degree, angle;dist = Math.sqrt( x1 * x1 + y1 * y1 );x1 /= dist;y1 /= dist;dist = Math.sqrt( x2 * x2 + y2 * y2 );x2 /= dist;y2 /= dist;dot = x1 * x2 + y1 * y2;if ( Math.abs(dot-1.0) <= epsilon )angle = 0.0;else if ( Math.abs(dot+1.0) <= epsilon )angle = nyPI;else {double cross;angle = Math.acos(dot);cross = x1 * y2 - x2 * y1;if (cross < 0 ) {angle = 2 * nyPI - angle;}}degree = angle * 180.0 / nyPI;return degree;}
旋转角度计算(旋转手势)相关推荐
- 疯狂ios讲义之实例:通过旋转手势旋转图片
实例:通过旋转手势旋转图片 本实例将会对前面的实例进行改进,在前面实例的基础上增加一个旋转手势处理器,从而让该应用既可根据用户捏合手势对图片进行缩放,也可根据用户旋转手势对图片进行旋转. 复制上面的应 ...
- android定义两个监听,Android中的2个手指旋转手势监听器
我试图找出使图像旋转的最佳方法,用户的手指向左或向右拖动,以及旋转角度. float x1 = lastEvent[0] - lastEvent[1]; float y1 = lastEvent[2] ...
- Unity通过旋转手势控制转盘旋转
在VR虚拟场景的物理实验室模块中,我想做一个切割磁感线发电机的模拟装置:为了让用户更加真实的操作设备,让用户通过手柄的旋转手势,实现转盘的同步转动. (之后补gif图) 原理,获取到需要转动的物体中心 ...
- 小程序的拖拽、缩放和旋转手势
在开发中,有时会遇到像App中的手势那样的效果,下面就仿照App实现了一下. wxml部分: <view class="touch-container"><vie ...
- iOS旋转手势 (Rotation )
//抽象类 特点 不能创建对象 UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWit ...
- 定位(1):两点对+两旋转角度计算转换矩阵
定位(1):两点对+两旋转角度计算转换矩阵 已知: 坐标系A和坐标系B(全站仪坐标系/大地坐标系(竖直方向向上))对应的两个点的坐标. 点1在A坐标系下的坐标A1(X1,Y1,Z1); 点1在B坐标系 ...
- 旋转编码器旋钮程序_让我们使用SwiftUI构建具有旋转手势的复古音频旋钮
旋转编码器旋钮程序 SwiftUI简直就是小菜一碟 (It's A Piece Of Cake With SwiftUI) Building something as seemingly simple ...
- 【OpenCV】人脸旋转角度计算
// SeetaFacesTest.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h"#include <iostream> #inc ...
- iOS手势全埋点:轻拍手势、长按手势、捏合手势、旋转手势、轻扫手势、平移手势、屏幕边缘平移手势
文章目录 前言 I.手势全埋点方案 1.1 轻拍手势全埋点 1.2 长按手势全埋点 II .右划返回的事件与scrollView滚动事件冲突的解决方案 see also 前言 由于UIGestureR ...
- android 手势旋转,Android检测旋转手势
近日在github上面看到一篇讲Android检测旋转手势的,觉得挺有意思的,现在分享给大家. 主要涉及到一些初中的几何知识和反正切函数的使用,分析如下. 旋转是一种两个手指的多点触屏动作,屏幕上的旋 ...
最新文章
- 今日看点:“靠脸进站”的刷脸系统究竟是如何实现的
- string:删除string中指定位置的字符?指定的所有字符?
- 使用汇编软件emu8086输出十次Hello World!
- gperf linux 安装_Gperftools安装
- 施乐7556_富士施乐Fuji Xerox WorkCentre 7556 驱动
- 选择排序详解(Java实现)
- 《圈圈教你玩USB》之 USB鼠标 描述符
- 微信开发者工具构建npm
- python控制51单片机的红绿灯_51单片机控制交通灯_51单片机红绿灯编程
- 微型计算机就是完全采用大规模集成电路,湖南工大计算机在线作业
- 【微信小程序多人开发的配置流程】
- Java图形用户界面
- 融资租赁产品计算内部收益率IRR
- bom实现方块移动_js实现方块上下左右移动效果
- 接着这次机会,发一下我做试管的经历~
- 【算法设计与分析】-- 分治法
- Fastqc使用说明
- MYSQL全文检索 MATCH AGAINST 转为 SQLalchemy
- 网站关键词优化该怎么做?
- 数据中心运营商OneAsia宣布与APG建立战略合作伙伴关系
热门文章
- 下载微信公众号视频文件
- 智能眼镜上可否能有“MIUI”?
- Android笔记:自定义锁屏
- python去除重复单词_Python重复的单词
- idea发现git出现cannot run git:cannot identify version of git executable :no response
- Excel中文转拼音
- python 获取股票的交易数据
- PHP 51tracking物流单个查询接口调用
- 一次编写命令时遇到的问题,Ambiguous method call.both
- win7 添加XP共享打印机