`
smiky
  • 浏览: 257722 次
  • 性别: Icon_minigender_1
  • 来自: 天门
社区版块
存档分类
最新评论

鼠标拖动时旋转

阅读更多

相信大家都见过这种情况,在ppt或word中,有个文本框,选中后,在上方会出现一个旋转的图标(如下图),拖动此图标时会旋转,那么这个角度该怎么计算?

我是这样算的,以图形中心为圆心(O),从圆心出发的y轴为边(OA),以鼠标当前位置与圆心连线(OB) ,

计算BOA的角度。

tg BOA = (OB_x-O_x)/(OB_y - O_y)根据值算出角度,正值为顺时针,负值为逆时针

当然还要根据B点相对O点所处的象限来计算具体的角度值

 


在JS中的操作:

假如画布坐标为(x,y)(如果界面比较复杂,可能要利用jquery的offset之类的方法递归算出其相对body的坐标,方便pageX与pageY来计算事件位置在画布中的坐标),节点坐标为x1,y1,event的pageX,pageY

代码如下:

先算出画布相对body坐标,再计算出pageX相对pageY坐标,进而算出角度,在有些情况下可能要注意初始角度,有的时候需要根据每次角度的偏移来算出新的角度

var containerOffset = $('#' + this.id ).offset();
			var offsetX = containerOffset['left'];
			var offsetY = containerOffset['top'];
			var mouseX = ev.pageX - offsetX;//计算出鼠标相对于画布顶点的位置,无pageX时用clientY + body.scrollTop - body.clientTop代替,可视区域y+body滚动条所走的距离-body的border-top,不用offsetX等属性的原因在于,鼠标会移出画布
			var mouseY = ev.pageY - offsetY;
			var ox = mouseX - cx;//cx,cy为圆心
			var oy = mouseY - cy;
			var to = Math.abs( ox/oy );
			var angle = Math.atan( to )/( 2 * Math.PI ) * 360;//鼠标相对于旋转中心的角度
			if( ox < 0 && oy < 0)//相对在左上角,第四象限,js中坐标系是从左上角开始的,这里的象限是正常坐标系
			{
				angle = -angle;
			}else if( ox < 0 && oy > 0)//左下角,3象限
			{
				angle = -( 180 - angle )
			}else if( ox > 0 && oy < 0)//右上角,1象限
			{
				angle = angle;
			}else if( ox > 0 && oy > 0)//右下角,2象限
			{
				angle = 180 - angle;
			}
			var offsetAngle = angle - this.currentAngle;

 

 

 

 

 

 


 

 

  • 大小: 3.2 KB
  • 大小: 6.6 KB
分享到:
评论
1 楼 u014514559 2015-12-18  
this.currentAngle是什么值呀?我现在遇到了一个问题:旋转一定角度后再次旋转会有一个角度值的偏移,百思不得其解,望多多指教。

相关推荐

    html5鼠标拖动图片3D旋转动画效果代码

    本示例着重介绍如何利用HTML5实现鼠标拖动图片进行3D旋转的动画效果。 首先,我们需要一个HTML文件作为基础,包含Canvas元素以及用于展示图片的div元素。HTML结构可能如下: ```html &lt;!DOCTYPE html&gt; &lt;title&gt;...

    C++ Qt 实现鼠标拖动旋转功能

    在C++中使用Qt框架开发应用时,有时候我们需要实现一些交互性强的功能,比如鼠标拖动旋转。这个场景中,我们关注的是如何在Qt环境中通过鼠标操作来实现对象的旋转,例如在3D空间中旋转一个模型或者视图。在描述中...

    鼠标拖动2D图片,呈现360°旋转3D动画效果

    在IT领域,实现鼠标拖动2D图片以呈现360°旋转的3D动画效果是一种常见的交互式设计技术,广泛应用于产品展示、游戏开发、虚拟现实等多种场景。这一技术结合了计算机图形学、JavaScript编程以及HTML5的Canvas元素等...

    【转】mfc鼠标拖动三维旋转

    本篇文章将详细讲解如何在MFC单文档应用程序中实现3D图形的鼠标拖动旋转功能。 首先,我们需要理解MFC中的视图(View)类。在MFC程序中,视图通常是与用户交互的部分,负责显示和处理数据。因此,我们需要继承自`...

    c# gdi 矩形 鼠标拖动调整大小旋转

    本文将详细讲解如何利用C#的GDI+实现矩形的绘制、大小调整、拖动移动以及鼠标操作下的任意角度旋转。 首先,我们需要了解GDI+的基本元素,包括Graphics对象、Pen对象和Brush对象。Graphics对象用于绘制图形,Pen...

    js图片查看器。鼠标拖动图片任意方向旋转,鼠标滚动滚轮缩放,任意角度翻转。

    用户只需按住鼠标拖动,图片就能跟随鼠标的移动轨迹旋转。这通常涉及到图像的矩阵变换,通过改变图片的旋转角度来实现。 2. **图片缩放**:图片查看器支持鼠标滚轮缩放,当用户滚动鼠标滚轮时,图片会相应地放大或...

    3d鼠标拖动图片360°旋转动画效果.zip

    3d鼠标拖动图片360°旋转动画效果是一款基于jquery实现的鼠标拖动图片3D展示特效代码。

    js鼠标拖动图片360度平面旋转代码

    在JavaScript(简称JS)编程中,实现鼠标拖动图片360度平面旋转的效果涉及到多个关键技术点,包括事件监听、CSS3变换以及动画帧更新。下面将详细解释这些知识点。 首先,我们需要理解JavaScript中的事件监听。事件...

    Qt显示svg图片并实现拖动鼠标旋转图片

    在本文中,我们将深入探讨如何使用Qt框架在C++应用程序中显示SVG(Scalable Vector Graphics)图像,并实现鼠标拖动旋转图片的功能。Qt是一个强大的跨平台开发框架,支持多种操作系统,包括Ubuntu和Windows。SVG是一...

    testimg_c#GDI_GDI_鼠标拖动调整大小旋转_矩形_

    在本文中,我们将深入探讨如何使用C#的GDI+(Graphics Device Interface)库来实现一个功能丰富的矩形操作程序,其中包括矩形的鼠标拖动调整大小、移动以及任意角度旋转。GDI+是.NET Framework中用于图形绘制的核心...

    jQuery鼠标拖动旋转DOM元素插件

    **jQuery鼠标拖动旋转DOM元素插件——Propeller.js** Propeller.js是针对jQuery的一款高效插件,专门用于实现用户可以通过鼠标拖动来旋转页面上的DOM元素,为交互设计提供了更多的可能性。这款插件的核心功能在于它...

    jQuery鼠标拖动圆盘旋转代码

    在本文中,我们将深入探讨如何使用jQuery实现一个鼠标拖动圆盘旋转的功能。这个功能广泛应用于各种交互式界面,如3D模型展示、游戏界面、菜单导航等。jQuery作为一个强大的JavaScript库,为开发者提供了丰富的API和...

    Java语言实现鼠标拖动旋转立方体

    在Java编程环境中,实现鼠标拖动旋转立方体是一项常见的图形用户界面(GUI)与三维图形渲染的任务。这个功能常用于游戏开发、可视化应用或者教学示例中,它展示了Java的Swing或JavaFX库的强大功能。以下是实现这一...

    超级酷的3d鼠标拖动图片360°旋转动画效果

    "超级酷的3d鼠标拖动图片360°旋转动画效果"是一种创新的技术,它利用了jQuery库来创建一种动态的、引人入胜的视觉体验,让用户能够通过鼠标拖动操作查看图片的全方位视图。这种技术广泛应用于电子商务平台,让客户...

    Unity3D实现鼠标控制旋转转盘

    在实现鼠标控制旋转转盘时,我们需要注意一些小的设置问题。例如,我们需要确保模型的中心点在转盘中心,并且需要在每帧计算偏移量。在 Update() 函数中,我们需要检测鼠标事件,并根据鼠标位置计算旋转偏移量。 ...

    鼠标拖动物体任意旋转

    通过滑动鼠标,能够是物体旋转,不同方向的滑动鼠标,则不同方向旋转。

    labview鼠标拖动移动

    在LabVIEW编程环境中,"labview鼠标拖动移动"是一个常见的交互式功能,它涉及到图形用户界面(GUI)的设计和事件处理。LabVIEW是美国国家仪器公司开发的一种基于图标和连线的编程语言,广泛用于测试、测量和控制系统...

    易语言源码易语言模拟鼠标拖动变形源码.rar

    在本压缩包“易语言源码易语言模拟鼠标拖动变形源码.rar”中,包含了一个易语言编写的程序,该程序能够模拟鼠标拖动并实现图形或对象的变形效果。这一功能在游戏开发、图形用户界面设计以及自动化测试等领域都有广泛...

    html5 canvas实现可响应鼠标拖动、旋转的3D发光蓝宝石动画特效源码.zip

    本项目中的“html5 canvas实现可响应鼠标拖动、旋转的3D发光蓝宝石动画特效源码”是利用Canvas API构建的一个生动的3D效果,用户可以通过鼠标操作对蓝宝石模型进行拖动和旋转。 首先,让我们深入了解一下...

    Unity3D鼠标拖拽绕任意轴旋转的实现

    - `Rigid()`函数的工作原理是:当鼠标正在拖动时(`onDrag == true`),保持旋转速度不变;当鼠标释放后,逐渐减少旋转速度,直到完全停止。 - 函数内部计算了阻尼速度`tempSpeed`,并根据`tempSpeed`的正负值来决定...

Global site tag (gtag.js) - Google Analytics