当前位置: 首页 > news >正文

用矩阵实现元素绕不定点旋转

用css的transform属性实现元素绕指定点进行旋转。
坐标系原点默认在元素中间,transform的值会对坐标系产生影响。坐标系原点如果不改变transform-origin就是元素几何中心。
在这里插入图片描述
白色的点是坐标系原点。
绿色的点是指定旋转的点。
现在实现效果元素绕绿色点顺时针旋转六十度。
移动坐标系让坐标系原点在指定旋转点的位置,注意旋转中心没有变化还是在元素几何中心。
把坐标系原点挪到旋转点位置。
在这里插入图片描述
然后旋转元素,这里旋转的中心点还是在元素几何中心位置。
在这里插入图片描述
然后再偏移相同位置回去,注意偏移的移动方向是旋转后的坐标系。

在这里插入图片描述

用矩阵可以实现css transform函数的各种效果,都是基于矩阵去做的

本质是将点经过矩阵乘法得出新的点的坐标位置。

矩阵乘法公式

| a b c |   | x |   | ax + by + c |
| d e f | * | y | = | dx + ey + f |
| 0 0 1 |   | 1 |   |       1     |

在css坐标系原点其实是元素的几何中心,这是受transform-origin影响的。
在canvas和svg里,坐标系原点是左上角顶点。

import {fromObject, rotateDEG, translate, compose} from "transformation-matrix"export function rotate(matrix: Matrix, cx: number, cy: number, angle) {const m = fromObject({a: matrix[0],b: matrix[1],c: matrix[2],d: matrix[3],e: matrix[4],f: matrix[5],});// 合并多个矩阵变换的效果,先后顺序不一样导致的结果也不同const rotation = compose(translate(cx, cy), rotateDEG(angle), translate(-cx, -cy)); // 原来矩阵和旋转矩阵合并得到新矩阵const newMatrix = compose(m, rotation);return {matrix: [newMatrix.a, newMatrix.b, newMatrix.c, newMatrix.d, newMatrix.e, newMatrix.f] as Matrix};
}

这里用到了transformation-matrix提供的矩阵工具函数。
fromObject: 将对象生成为矩阵对象。
translate : 平移。
rotateDEG: 旋转(角度)。
compose: 将多个变换矩阵合并为一个由多个矩阵组成的矩阵。

http://www.dtcms.com/a/427035.html

相关文章:

  • Web UI自动化测试学习系列5--基础知识1--常用元素定位1
  • 大模型-扩散模型(Diffusion Model)原理讲解(2)
  • 一文讲解反射、注解
  • 学习日报 20250930|优惠券事务处理模块
  • 【Nest.js】模块之间依赖关系,以及导出导入链的完整性
  • MyBatis —— 多表操作和注解开发
  • 自动化脚本的自动化执行实践
  • 有颜二维码 1.0.5| 告别单调,一键生成有颜色的二维码
  • 信创浪潮下的国产组态软件——紫金桥RealSCADA
  • 做网站新闻移动动态网络规划设计师资料及视频教程
  • 机器学习之三大学习范式:监督学习、无监督学习、强化学习
  • 18002.机器人电机姿态控制
  • mysql语句基本操作之select查询
  • 做mp3链接的网站宁波专业seo外包
  • Spring Boot 集成 EHCache 缓存解决方案
  • Spring Boot 缓存与验证码生成
  • 进攻------绕后------互换野区
  • Unity 3D笔记(脚本部分)——《B站阿发你好》
  • C++之类的组合
  • 服装购物网站策划书wordpress菜单栏移动下移
  • 【第五章:计算机视觉-项目实战之生成对抗网络实战】1.对抗生成网络原理-(1)对抗生成网络算法基础知识:基本思想、GAN的基本架构、应用场景、标注格式
  • win10软实时设置
  • leetcode 812. 最大三角形面积 简单
  • 机器学习+数字孪生:从诊断到自主决策的跨越
  • 若依前后端分离版学习笔记(十八)——页面权限,页签缓存以及图标,字典,参数的使用
  • 莱芜网站建设哪家好在线logo制作生成免费
  • 哈尔滨网站建设价格网站设计怎么学
  • 再发《管理世界》!智能制造试点DID(2000-2023)
  • SpringCloudGateway:像快递分拣中心一样的API网关
  • 真家宽IP vs 数据中心IP:Cliproxy为何成为跨境电商首选?