相信大家都见过这种情况,在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;
相关推荐
本示例着重介绍如何利用HTML5实现鼠标拖动图片进行3D旋转的动画效果。 首先,我们需要一个HTML文件作为基础,包含Canvas元素以及用于展示图片的div元素。HTML结构可能如下: ```html <!DOCTYPE html> <title>...
在C++中使用Qt框架开发应用时,有时候我们需要实现一些交互性强的功能,比如鼠标拖动旋转。这个场景中,我们关注的是如何在Qt环境中通过鼠标操作来实现对象的旋转,例如在3D空间中旋转一个模型或者视图。在描述中...
在IT领域,实现鼠标拖动2D图片以呈现360°旋转的3D动画效果是一种常见的交互式设计技术,广泛应用于产品展示、游戏开发、虚拟现实等多种场景。这一技术结合了计算机图形学、JavaScript编程以及HTML5的Canvas元素等...
本篇文章将详细讲解如何在MFC单文档应用程序中实现3D图形的鼠标拖动旋转功能。 首先,我们需要理解MFC中的视图(View)类。在MFC程序中,视图通常是与用户交互的部分,负责显示和处理数据。因此,我们需要继承自`...
本文将详细讲解如何利用C#的GDI+实现矩形的绘制、大小调整、拖动移动以及鼠标操作下的任意角度旋转。 首先,我们需要了解GDI+的基本元素,包括Graphics对象、Pen对象和Brush对象。Graphics对象用于绘制图形,Pen...
用户只需按住鼠标拖动,图片就能跟随鼠标的移动轨迹旋转。这通常涉及到图像的矩阵变换,通过改变图片的旋转角度来实现。 2. **图片缩放**:图片查看器支持鼠标滚轮缩放,当用户滚动鼠标滚轮时,图片会相应地放大或...
3d鼠标拖动图片360°旋转动画效果是一款基于jquery实现的鼠标拖动图片3D展示特效代码。
在JavaScript(简称JS)编程中,实现鼠标拖动图片360度平面旋转的效果涉及到多个关键技术点,包括事件监听、CSS3变换以及动画帧更新。下面将详细解释这些知识点。 首先,我们需要理解JavaScript中的事件监听。事件...
在本文中,我们将深入探讨如何使用Qt框架在C++应用程序中显示SVG(Scalable Vector Graphics)图像,并实现鼠标拖动旋转图片的功能。Qt是一个强大的跨平台开发框架,支持多种操作系统,包括Ubuntu和Windows。SVG是一...
在本文中,我们将深入探讨如何使用C#的GDI+(Graphics Device Interface)库来实现一个功能丰富的矩形操作程序,其中包括矩形的鼠标拖动调整大小、移动以及任意角度旋转。GDI+是.NET Framework中用于图形绘制的核心...
**jQuery鼠标拖动旋转DOM元素插件——Propeller.js** Propeller.js是针对jQuery的一款高效插件,专门用于实现用户可以通过鼠标拖动来旋转页面上的DOM元素,为交互设计提供了更多的可能性。这款插件的核心功能在于它...
在本文中,我们将深入探讨如何使用jQuery实现一个鼠标拖动圆盘旋转的功能。这个功能广泛应用于各种交互式界面,如3D模型展示、游戏界面、菜单导航等。jQuery作为一个强大的JavaScript库,为开发者提供了丰富的API和...
在Java编程环境中,实现鼠标拖动旋转立方体是一项常见的图形用户界面(GUI)与三维图形渲染的任务。这个功能常用于游戏开发、可视化应用或者教学示例中,它展示了Java的Swing或JavaFX库的强大功能。以下是实现这一...
"超级酷的3d鼠标拖动图片360°旋转动画效果"是一种创新的技术,它利用了jQuery库来创建一种动态的、引人入胜的视觉体验,让用户能够通过鼠标拖动操作查看图片的全方位视图。这种技术广泛应用于电子商务平台,让客户...
在实现鼠标控制旋转转盘时,我们需要注意一些小的设置问题。例如,我们需要确保模型的中心点在转盘中心,并且需要在每帧计算偏移量。在 Update() 函数中,我们需要检测鼠标事件,并根据鼠标位置计算旋转偏移量。 ...
通过滑动鼠标,能够是物体旋转,不同方向的滑动鼠标,则不同方向旋转。
在LabVIEW编程环境中,"labview鼠标拖动移动"是一个常见的交互式功能,它涉及到图形用户界面(GUI)的设计和事件处理。LabVIEW是美国国家仪器公司开发的一种基于图标和连线的编程语言,广泛用于测试、测量和控制系统...
在本压缩包“易语言源码易语言模拟鼠标拖动变形源码.rar”中,包含了一个易语言编写的程序,该程序能够模拟鼠标拖动并实现图形或对象的变形效果。这一功能在游戏开发、图形用户界面设计以及自动化测试等领域都有广泛...
本项目中的“html5 canvas实现可响应鼠标拖动、旋转的3D发光蓝宝石动画特效源码”是利用Canvas API构建的一个生动的3D效果,用户可以通过鼠标操作对蓝宝石模型进行拖动和旋转。 首先,让我们深入了解一下...
- `Rigid()`函数的工作原理是:当鼠标正在拖动时(`onDrag == true`),保持旋转速度不变;当鼠标释放后,逐渐减少旋转速度,直到完全停止。 - 函数内部计算了阻尼速度`tempSpeed`,并根据`tempSpeed`的正负值来决定...