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. git推送本地分支到远程仓库并在远程仓库创建新分支

    $ git push <远程主机名> <本地分支名>:<远程分支名> git push master test:test #master 为设置的远程仓库别名,第一 ...

  2. 变异的功能 | variants function | coding | non-coding

    variant主要分为两类: coding noncoding 这两大类的分析方法截然不同,coding主要直接影响了mRNA和蛋白:而noncoding,主要是影响调控. coding编码区如何分析 ...

  3. 从ASP.NET到ASP.NET Core差异变化

    MSDN原文:链接 ASP.NET Core项目为开发人员提供了针对.NET Core,.NET Framework2种实现方式,根据官网通告NETCORE3.0后将取消对.NET Framework ...

  4. linux centos编译安装php7.3

    php7.2的编译安装参考:https://www.cnblogs.com/rxbook/p/9106513.html 已有的之前编译的旧版本php: mv /usr/local/php /usr/l ...

  5. python开发笔记-Python3.7+Django2.2 Docker镜像搭建

    目标镜像环境介绍: 操作系统:ubuntu16.04 python版本:python 3.7.4 django版本:2.2 操作步骤: 1.  本地安装docker环境(略)2. 拉取ubunut指定 ...

  6. Scrapy中的Request和Response

    Request Request 部分源码: # 部分代码 class Request(object_ref): def __init__(self, url, callback=None, metho ...

  7. SpringBoot项目从Git拉取代码并完成编译打包启动的sh自动脚本

    操作步骤: 1.进入/home/servers/codes/xxxx-dev/目录,从git上将项目clone下来: 2.确保/usr/local/xxx/xxxx-dev目录存在: 3.确保sh脚本 ...

  8. QT5 编译提示 cannot find GL/gl.h ubuntu16.04

    安装软件: sudo apt-get install mesa-common-dev sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

  9. (原创)C++半同步半异步线程池2

    (原创)C++半同步半异步线程池 c++11 boost技术交流群:296561497,欢迎大家来交流技术. 线程池可以高效的处理任务,线程池中开启多个线程,等待同步队列中的任务到来,任务到来多个线程 ...

  10. wms证书配置操作

      1. 在应用的/home下 把证书cp到/usr/local/apache2/conf 2. 打开文件/usr/local/apache2/conf/extra/httpd-ssl.conf,找到 ...