[golang]图片按中心旋转后,新图的左顶点位置的偏移量
1 前言
图片按中心旋转后,新图的左顶点位置的偏移量
2 代码
- func OffsetXYAfterRotationCore(W, H, L, T, Angle float64) (x, y float64) {
- var DX, DY, X, Y float64
- AngleRad := Angle * math.Pi / 180
- SinX := math.Sin(AngleRad)
- CosX := math.Cos(AngleRad)
- //0<=Angle <=90
- if Angle >= 0 && Angle <= 90 {
- DX = SinX * H
- DY = 0
- X = L - DX
- Y = T - DY
- //fmt.Println("At last Angle,X,Y,DX,DY=", Angle, X, Y, DX, DY)
- } else if Angle > 90 && Angle <= 180 {
- //90<=Angle <=180
- //SinX2 := math.Sin((180 - Angle) )
- //CosX2 := math.Cos((180 - Angle) )
- SinX2 := SinX
- CosX2 := -CosX
- DX = SinX2*H + W*CosX2
- DY = H * CosX2
- X = L - DX
- Y = T - DY
- //fmt.Println("At last Angle,X,Y,DX,DY=", Angle, X, Y, DX, DY)
- } else if Angle > 180 && Angle <= 270 {
- //SinX2 := math.Sin((270 - Angle))
- //CosX2 := math.Cos((270 - Angle))
- SinX2 := -CosX
- CosX2 := -SinX
- DX = SinX2 * W
- DY = CosX2*W + SinX2*H
- X = L - DX
- Y = T - DY
- //fmt.Println("At last Angle,X,Y,DX,DY=", Angle, X, Y, DX, DY)
- } else {
- //SinX2 := math.Sin((360 - Angle))
- SinX2 := -SinX
- DX = 0
- DY = SinX2 * W
- X = L - DX
- Y = T - DY
- //fmt.Println("At last Angle,X,Y,DX,DY=", Angle, X, Y, DX, DY)
- }
- x = X
- y = Y
- return
- }
3 效果图
1981x325
1878x1272
[golang]图片按中心旋转后,新图的左顶点位置的偏移量的更多相关文章
- C#放缩、截取、合并图片并生成高质量新图的类
原文:C#放缩.截取.合并图片并生成高质量新图的类 using System;using System.Drawing;using System.Drawing.Imaging;using Syste ...
- [golang]按图片中心旋转后的新图左顶点和原图左顶点的偏移量计算
1 前言 略,作为记录使用 2 代码 /** * @Author: FB * @Description: * @File: RotateSample.go * @Version: 1.0.0 * @D ...
- OpenFramework中视频或者图片进行中心旋转、平移、放大、缩小、矫正(本例以视频为准,只给出主要代码)
/********** update mesh部分***********/ for(int i=0;i<4;i++) { mesh[i].clear(); //重要,不加的话,移动视频的四个角 ...
- [golang]svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量
1 前言 svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量 2 代码 type Point struct { X float64 Y float64 } func GetOffsetX ...
- PyQt实现图片中心旋转
# -*- coding: cp936 -*- from PyQt4 import QtCore, QtGui, Qt class RotatePage(QtGui.QFrame): def __in ...
- hdu 2242 无向图/求用桥一分为二后使俩个bcc点权值和之差最小并输出 /缩点+2次新图dfs
题意如标题所述, 先无向图缩点,统计出每个bcc权,建新图,然后一遍dfs生成树,标记出每个点(新图)以及其子孙的权值之和.这样之后就可以dfs2来枚举边(原图的桥),更新最小即可. 调试了半天!原来 ...
- iOS开发 CGAffineTransform 让图片旋转, 旋转后获得图片旋转的角度
1.让图片旋转 UIImageView *imageView = [[UIImageView alloc]init]; imageView.frame = CGRectMake(50, 50, 200 ...
- 当h5页面图片加载失败后,给定一个默认图
本文主要讨论页面中图片加载失败后替换默认图片的几种方式 重点来了:一定要记住error事件不冒泡. 相关的知识点:jquery的ready方法.$("img").error().i ...
- canvas 图片拖拽旋转之二——canvas状态保存(save和restore)
引言 在上一篇日志“canvas 图片拖拽旋转之一”中,对坐标转换有了比较深入的了解,但是仅仅利用坐标转换实现的拖拽旋转,会改变canvas坐标系的状态,从而影响画布上其他元素的绘制.因此,这个时候需 ...
随机推荐
- opener和parent的区别
openeropener用于在window.open的页面引用执行该window.open方法的的页面的对象.例如:A页面通过window.open()方法弹出了B页面,在B页面中就可以通过opene ...
- Pyhton学习的基础
函数->功能, 如print(),input(),range(), 方法->功能, 如index()(尽量不用此方法),find(),类里面的函数就叫做方法 容器->列表,字符串,元 ...
- C# Mysql 查询 Rownum
SELECT @rownum:=@rownum+1 AS rownum,a.order_id ,case when a.Ordered =1 then '已分单' end as Ordered,a.p ...
- sails 相关软件下载地址及命令
vscode1.40 https://vscode.cdn.azure.cn/stable/f359dd69833dd8800b54d458f6d37ab7c78df520/VSCodeUserS ...
- centos7.6使用 supervisor 对filebeat7.3.1进程进行管理
centos7.6使用 supervisor 对filebeat7.3.1进程进行管理 Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX ...
- protobufjs@6.8.8 postinstall: `node scripts/postinstall`
由于Node.js 版本太低了, 使用最新版用 Node.js =================================== 以下解决方法来源于网络 npm ERR! Windows_NT ...
- Spring MVC -- 下载文件
像图片或者HTML文件这样的静态资源,在浏览器中打开正确的URL即可下载,只要该资源是放在应用程序的目录下,或者放在应用程序目录的子目录下,而不是放在WEB-INF下,tomcat服务器就会将该资源发 ...
- oracle 解决 exp 空表不能导出的问题
原因:oralce_11g 中有个新特性,当表无数据时,不分配 segment,以节省空间,这也就导致了 exp 在导出表时,没有数据的表会被忽略 方法一:我们可以向表中插入数据,在删除,这样数据表就 ...
- 配置windows live writer
下载地址 https://pan.baidu.com/s/1WVpLQEadIHN15W2DIhWh4A 安装流程参考博客 https://www.cnblogs.com/haseo/p/376232 ...
- [LeetCode] 929. Unique Email Addresses 唯一的电邮地址
Every email consists of a local name and a domain name, separated by the @ sign. For example, in ali ...