旋转变换

纯css制作旋转的立方体

十年热恋 提交于 2020-01-06 17:05:53
思路: 首先有一个正方形,根据 rotate translate 属性设定好正方体六个面的位置 然后用 animation 动画让正方体进行360°的旋转 具体代码: .box { width : 200px ; height : 200px ; /* border: 1px dashed red; */ margin : 100px auto ; position : relative ; border-radius : 50% ; /* 让子盒子保持3d效果*/ transform-style : preserve-3d ; /*transform:rotateX(30deg) rotateY(-30deg);*/ animation : rotate 8s linear infinite ; } .box>div { width : 100% ; height : 100% ; position : absolute ; opacity : 0.7 ; } .left { background-color : #afa ; /* 变换中心*/ transform-origin : left ; /* 变换*/ transform : rotateY ( 90deg ) translateX ( -100px ) ; } .right { background : #aff ;

CSS3新增的属性有哪些:

一世执手 提交于 2020-01-06 04:52:15
徐先森讲web CSS3新增的属性有哪些: CSS 用于控制网页的样式和布局。 CSS3 是最新的 CSS 标准。 CSS3新增了很多的属性,下面一起来分析一下新增的一些属性:   1.CSS3边框: border-radius:CSS3圆角边框。在 CSS2 中添加圆角矩形需要技巧,我们必须为每个圆角使用不同的图片,在 CSS3 中,创建圆角是非常容易的,在 CSS3 中,border-radius 属性用于创建圆角。border:2px solid; box-shadow:CSS3边框阴影。在 CSS3 中,box-shadow 用于向方框添加阴影。box-shadow:10px 10px 5px #888888; border-image:CSS3边框图片。通过 CSS3 的 border-image 属性,您可以使用图片来创建边框。border-image:url(border.png) 30 30 round;   2.CSS3背景: background-size: 属性规定背景图片的尺寸。在 CSS3 之前,背景图片的尺寸是由图片的实际尺寸决定的。在 CSS3 中,可以规定背景图片的尺寸,这就允许我们在不同的环境中重复使用背景图片。您能够以像素或百分比规定尺寸。如果以百分比规定尺寸,那么尺寸相对于父元素的宽度和高度。 background-origin

css3 2d/3d变换重点属性详解

老子叫甜甜 提交于 2020-01-06 04:45:48
css3 2d/3d变换——实现超炫的特效 声明:所有结论都是经过实际代码运行的效果证实的,如果有不同的情况发生,请核对浏览器版本以及内核(360浏览器,webkit内核)是否与本人试验的时候一致,同时非常感觉读者阅读本文,如有错误之处,欢迎大家留言指出。 css3的2d/3d变换是一个很强大的功能,以前想要做到图片的倾斜或者旋转某个角度,都无法简单的做到,更别说3d效果的实现,这里的3d效果其实也是一种2d变换之后给人的一种视觉欺骗达到的,浏览器这个“平面”客户端确实无法做到真正的3d效果,现在css3就给我们提供了一种简单的方法来做到2d/3d效果。下面我给大家分享一下我的学习心得。 一、坐标轴和参考点(旋转基点) 1、参考点(旋转基点) 相信大家对于参考点这个概念并不会陌生,见名知意的一个词语,css的参考点就是元素所围绕其旋转的点,在css中用一个属性设置旋转基点,如下所示: transform-origin: left top; // 设置该元素的旋转基点为该元素的左上角 transform-origin 属性是css变换的一个重要的属性,一般需要设置2个值: 第一个值为偏移x轴方向的距离,可以用关键字left|right|center或者百分比以及具体的距离值描述。 第二个值为偏移y轴方向的距离,可以用关键字top|bottom

手把手教你玩转 CSS3 3D 技术

和自甴很熟 提交于 2020-01-06 04:45:03
css3的3d起步 要玩转css3的3d,就必须了解几个词汇,便是透视( perspective )、旋转( rotate )和移动( translate )。 透视 即是以现实的视角来看屏幕上的2D事物,从而展现3D的效果。 旋转 则不再是2D平面上的旋转,而是三维坐标系的旋转,就包括X轴,Y轴,Z轴旋转。 平移 同理。 当然用理论来说明,估计你还不明白。下面是3个gif: 沿着X轴旋转 沿着Y轴旋转 沿着Z轴旋转 旋转应该没问题了,那理解平移起来就比较容易了,就是在在X轴、Y轴、z轴移动。 你可能会说透视比较不好理解,下面我介绍一下透视的几个属性。 perspective perspective 英文名便是透视,没有这东西就没办法形成3D效果,但是这个东西是怎么让我们浏览器形成3D 效果的呢,可以看下面这张图,其实学过绘画的应该知道透视关系,而这里就是这个道理。 但是在css里它是有数值的,例如 perspective: 1000px 这个代表什么呢?我们可以这样理解,如果我们直接眼睛靠着物体看,物体就超大占满我们的视线,我们离它距离越来越大,它在变小,立体感也就出来了是不是,其实这个数值构造了一个我们眼睛离屏幕的距离,也就构造了一个虚拟3D假象。 perspective-origin 由上面我们了解了 perspective ,而加上了这个 origin 是什么

批量修改文件名

╄→尐↘猪︶ㄣ 提交于 2020-01-04 16:11:13
批量修改文件名 参考博客:https://www.cnblogs.com/zf-blog/p/7880126.html 功能:批量修改文件名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # -*- coding:utf-8 -*- # 图像批量重命名 import string import random import os import shutil def rename(path , newname): #对文件重命名 filelist = os.listdir(path) #获取文件下的所有文件名 m = 0 for files in filelist: Olddir = path + files #原来的文件路径 if os.path.isdir(Olddir): #如果是文件夹则跳过 continue filename = os.path.splitext(files)[ 0 ] #文件名 filetype = os.path.splitext(files)[ 1 ] #后缀名,是一个列表 Newdir = os.path.join(path , newname + filetype) % m #这里由于filetype是一个列表,因此不能用Newdir=path+'face%05d'+filetype

数字信号处理--FFT与蝶形算法

旧街凉风 提交于 2019-12-30 01:22:39
在数字信号处理中常常需要用到离散傅立叶变换(DFT),以获取信号的频域特征。尽管传统的DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,不利于计算机实时对信号进行处理。因此至DFT被发现以来,在很长的一段时间内都不能被应用到实际的工程项目中,直到一种快速的离散傅立叶计算方法——FFT,被发现,离散傅立叶变换才在实际的工程中得到广泛应用。需要强调的是,FFT并不是一种新的频域特征获取方式,而是DFT的一种快速实现算法。本文就FFT的原理以及具体实现过程进行详尽讲解。 DFT计算公式 本文不加推导地直接给出DFT的计算公式: 其中x(n)表示输入的离散数字信号序列,WN为旋转因子,X(k)为输入序列x(n)对应的N个离散频率点的相对幅度。一般情况下,假设x(n)来自于低通采样,采样频率为fs,那么X(k)表示了从-fs/2率开始,频率间隔为fs/N,到fs/2-fs/N截至的N个频率点的相对幅度。因为DFT计算得到的一组离散频率幅度值实际上是在频率轴上从成周期变化的,即X(k+N)=X(k)。因此任意取连续的N个点均可以表示DFT的计算效果,负频率成分比较抽象,难于理解,根据X(k)的周期特性,于是我们又可以认为X(k)表示了从零频率开始,频率间隔为fs/N,到fs-fs/N截至的N个频率点的相对幅度。 N点DFT的计算量 根据(1)式给出的DFT计算公式

如何处理iOS中照片的方向

假装没事ソ 提交于 2019-12-29 00:22:04
使用过iPhone或者iPad的朋友在拍照时不知是否遇到过这样的问题,将设备中的照片导出到Windows上时,经常发现导出的照片方向会有问题,要么横着,要么颠倒着,需要旋转才适合观看。而如果直接在这些设备上浏览时,照片会始终显示正确的方向,在Mac上也能正确显示。最近在iOS的开发中也遇到了同样的问题,将拍摄的照片上传到服务器后,再由Windows端下载该照片,发现手机上完全正常的照片到了这里显示的横七竖八。同一张照片为什么在不同的设备上表现的不同?如何能够避免这种情况?本文将和大家一一解开这些问题。 目录 照片的存储演变 胶片时代 数码时代 方向传感器 EXIF(Exchangeable Image File Format) Orientation iPhone上的情况 验证EXIF Mac平台 Windows平台 开发时如何避免 直观的解决方案 第二种简单的方法 结尾 照片的存储演变 一切都得从相机的发展开始说起。 胶片时代 一般相机拍摄出来的画面都是长方形,在拍摄的那一瞬间,它会将取景器中的场景对应的颜色值存到对应的像素位置。相机本身并没有任何方向的概念,只是使用者想要拍摄的场景在他期望的照片中显示的方式与实际存在差异时,才有了方向一说。如下图,对一个场景 F 进行拍摄,相机的方向可能会有这样四个常见的角度: 相机是“自私”的,由于相机仅反应真实的场景,它不理解拍摄的内容

[opencv] 图像几何变换:旋转,缩放,斜切

不问归期 提交于 2019-12-26 15:13:36
几何变换 几何变换可以看成图像中物体(或像素)空间位置改变,或者说是像素的移动。 几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定为整数坐标。这时就需要灰度级差值将映射的新坐标匹配到输出像素之间。最简单的插值方法是最近邻插值,就是令输出像素的灰度值等于映射最近的位置像素,该方法可能会产生锯齿。这种方法也叫零阶插值,相应比较复杂的还有一阶和高阶插值。 插值算法感觉只要了解就可以了,图像处理中比较需要理解的还是空间变换。 空间变换 空间变换对应矩阵的 仿射变换 。一个坐标通过函数变换的新的坐标位置: 所以在程序中我们可以使用一个2*3的数组结构来存储变换矩阵: 以最简单的平移变换为例,平移(b1,b2)坐标可以表示为: 因此,平移变换的变换矩阵及逆矩阵记为: 缩放变换:将图像横坐标放大(或缩小)sx倍,纵坐标放大(或缩小)sy倍,变换矩阵及逆矩阵为: 选择变换:图像绕原点逆时针旋转a角,其变换矩阵及逆矩阵(顺时针选择)为: OpenCV中的图像变换函数 基本的放射变换函数: void cvWarpAffine( const CvArr* src,//输入图像 CvArr* dst, //输出图像 const CvMat* map_matrix, //2*3的变换矩阵 int flags=CV_INTER_LINEAR

三维点集拟合:平面拟合、RANSAC、ICP算法

蹲街弑〆低调 提交于 2019-12-23 02:54:36
ACM算法分类:http://www.kuqin.com/algorithm/20080229/4071.html;CSDN容易吞图,不过编辑器里面图片还是显示的..... 一: 拟合一个平面:使用SVD分解,代码里面去找吧 空间平面方程的一般表达式为: Ax+By+Cz+D=0; 则有:平面法向量为n=(A,B,C). 第一种方法: 对于空间中n个点(n3) 空间中的离散点得到拟合平面,其实这就是一个最优化的过程。即求这些点到某个平面距离最小和的问题。由此,我们知道一个先验消息,那就是该平面一定会过众散点的平均值。接着我们需要做的工作就是求这个平面的法向量。 根据协方差矩阵的SVD变换,最小奇异值对应的奇异向量就是平面的方向。 注意:这个方法是直接的计算方法,没办法解决数值计算遇到的病态矩阵问题.在公式转化代码之前必须对空间点坐标进行近似归一化! 第二种方法:使用法线方法, 对于空间中n个点(n3),若已获得点云法线 使用合适的方法剔除离群点,计算点云的形心P; 若在已经获得法线的点云中,可以对法线进行剔除离散点之后,求取最小方差的均值,直接求得法线方向N( alpha, beta, theta ); 使用点法式描述三维平面;或者根据形心P和法线方向,计算出平面方程的一般式。 使用法线多次聚类:完成场景平面提取 使用法线两次聚类:第一次根据法线方向进行聚类,使用一个欧式距离约束

unity3d中Transform组件变量详解

♀尐吖头ヾ 提交于 2019-12-20 11:37:36
Transform组件是每个游戏对象必须有的一个组建,因为你创建一个空物体,它也有该组建,因为unity3d是面向组建开发的一款游戏引擎。通过一张图片来看看它的属性 你可以在通过代码查看这些属性的区别 Debug.Log("position " + transform.position); //世界坐标的位置 Debug.Log("localPosition " + transform.localPosition); //相对于父位置的坐标 即把父物体当作自己的中心 Debug.Log("eulerAngles " + transform.eulerAngles);//世界坐标欧拉⾓度 Debug.Log("localEulerAngles " + transform.localEulerAngles);//相对于⽗级的变换的旋转欧拉⾓度 Debug.Log("localScale " + transform.localScale);//相对于父位置的缩放 Debug.Log("localRotation " + transform.localRotation);//相对于父位置的旋转 Debug.Log("rotation " + transform.rotation);//世界坐标的旋转 上面提到了父位置?那是什么意思呢? 现在创建两个cube 命名为cube1和cube2