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]图片按中心旋转后,新图的左顶点位置的偏移量的更多相关文章

  1. C#放缩、截取、合并图片并生成高质量新图的类

    原文:C#放缩.截取.合并图片并生成高质量新图的类 using System;using System.Drawing;using System.Drawing.Imaging;using Syste ...

  2. [golang]按图片中心旋转后的新图左顶点和原图左顶点的偏移量计算

    1 前言 略,作为记录使用 2 代码 /** * @Author: FB * @Description: * @File: RotateSample.go * @Version: 1.0.0 * @D ...

  3. OpenFramework中视频或者图片进行中心旋转、平移、放大、缩小、矫正(本例以视频为准,只给出主要代码)

    /********** update mesh部分***********/ for(int i=0;i<4;i++) {  mesh[i].clear(); //重要,不加的话,移动视频的四个角 ...

  4. [golang]svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量

    1 前言 svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量 2 代码 type Point struct { X float64 Y float64 } func GetOffsetX ...

  5. PyQt实现图片中心旋转

    # -*- coding: cp936 -*- from PyQt4 import QtCore, QtGui, Qt class RotatePage(QtGui.QFrame): def __in ...

  6. hdu 2242 无向图/求用桥一分为二后使俩个bcc点权值和之差最小并输出 /缩点+2次新图dfs

    题意如标题所述, 先无向图缩点,统计出每个bcc权,建新图,然后一遍dfs生成树,标记出每个点(新图)以及其子孙的权值之和.这样之后就可以dfs2来枚举边(原图的桥),更新最小即可. 调试了半天!原来 ...

  7. iOS开发 CGAffineTransform 让图片旋转, 旋转后获得图片旋转的角度

    1.让图片旋转 UIImageView *imageView = [[UIImageView alloc]init]; imageView.frame = CGRectMake(50, 50, 200 ...

  8. 当h5页面图片加载失败后,给定一个默认图

    本文主要讨论页面中图片加载失败后替换默认图片的几种方式 重点来了:一定要记住error事件不冒泡. 相关的知识点:jquery的ready方法.$("img").error().i ...

  9. canvas 图片拖拽旋转之二——canvas状态保存(save和restore)

    引言 在上一篇日志“canvas 图片拖拽旋转之一”中,对坐标转换有了比较深入的了解,但是仅仅利用坐标转换实现的拖拽旋转,会改变canvas坐标系的状态,从而影响画布上其他元素的绘制.因此,这个时候需 ...

随机推荐

  1. Asp.net 与 Core .net 用法区别

    1.  定义一个类 如下,注意int?这里 public class A{ public int? num{get;set;} } 2. 如果传递的参数不能转换成int类型,则core里面接受不了参数 ...

  2. centos7安装hadoop2.7.7

    下载hadoop-2.7.7 网址如下 https://www-eu.apache.org/dist/hadoop/core/ 移动到/opt 路径下 在/opt下新建一个文件夹,名为app mkdi ...

  3. mysql中的正则操作 匹配手机号,匹配中文,替换

    mysql中的正则操作 匹配手机号,匹配中文,替换 正则匹配hy_user表内tel字段的电话号码: SELECT * FROM hy_user WHERE tel REGEXP "[1][ ...

  4. PhastCons | 序列保守性打分

    这是一个进化学上的概念,基因组的序列是不断进化而来的,根据45个脊椎动物的基因组序列,通过多重比对,我们就可以知道人类基因组上每个位置的保守性,一些高度保守的区域可以做非常有意思的下游分析. This ...

  5. 启用IIS Express SSL(Https)的注意事项

    2年前搞国外的信用卡支付对接,必须用SSL方式调用第三方支付公司的接口,本地调试需要启用IIS Express的SSl,最近又搞类似需要SSL的项目,忘记怎么设置的了,本以为直接将原来的http后面加 ...

  6. mysql注入写文件

    select * from admin where id =-1 union select 1,'<?php phpinfo();?>',3,4 into outfile 'c:\\1.p ...

  7. Groovy sort() list

    https://www.w3cschool.cn/groovy/groovy_sort.html #Groovy sort()方法返回原始列表的排序副本. #句法List sort() #参数没有 # ...

  8. springboot vue前后端分离 跨跨域配置

    public class CustomCorsFilter extends OncePerRequestFilter { @Override protected void doFilterIntern ...

  9. apache环境.htaccess设置301跳转及常用.htaccess技巧整理

    apache环境.htaccess设置301跳转及常用.htaccess技巧整理 无论是Nginx,还是Apache都各自有优势,对于我们普通用户而言基本上也没有多大的区别.在虚拟主机环境中,基本上都 ...

  10. go 单元测试框架介绍

    最近项目在补充单元测试,这里介绍以下几个go里流行的单元测试框架. gomock gostub monkey Convey 下面介绍下各个框架的主要用途 convey 主要用途是用来组织测试用例的 g ...