1 前言

图片按中心旋转后,新图的左顶点位置的偏移量

2 代码

  1. func OffsetXYAfterRotationCore(W, H, L, T, Angle float64) (x, y float64) {
  2.  
  3. var DX, DY, X, Y float64
  4.  
  5. AngleRad := Angle * math.Pi / 180
  6. SinX := math.Sin(AngleRad)
  7. CosX := math.Cos(AngleRad)
  8.  
  9. //0<=Angle <=90
  10. if Angle >= 0 && Angle <= 90 {
  11. DX = SinX * H
  12. DY = 0
  13. X = L - DX
  14. Y = T - DY
  15. //fmt.Println("At last Angle,X,Y,DX,DY=", Angle, X, Y, DX, DY)
  16. } else if Angle > 90 && Angle <= 180 {
  17. //90<=Angle <=180
  18. //SinX2 := math.Sin((180 - Angle) )
  19. //CosX2 := math.Cos((180 - Angle) )
  20. SinX2 := SinX
  21. CosX2 := -CosX
  22. DX = SinX2*H + W*CosX2
  23. DY = H * CosX2
  24. X = L - DX
  25. Y = T - DY
  26. //fmt.Println("At last Angle,X,Y,DX,DY=", Angle, X, Y, DX, DY)
  27. } else if Angle > 180 && Angle <= 270 {
  28. //SinX2 := math.Sin((270 - Angle))
  29. //CosX2 := math.Cos((270 - Angle))
  30. SinX2 := -CosX
  31. CosX2 := -SinX
  32. DX = SinX2 * W
  33. DY = CosX2*W + SinX2*H
  34. X = L - DX
  35. Y = T - DY
  36. //fmt.Println("At last Angle,X,Y,DX,DY=", Angle, X, Y, DX, DY)
  37. } else {
  38. //SinX2 := math.Sin((360 - Angle))
  39. SinX2 := -SinX
  40.  
  41. DX = 0
  42. DY = SinX2 * W
  43. X = L - DX
  44. Y = T - DY
  45. //fmt.Println("At last Angle,X,Y,DX,DY=", Angle, X, Y, DX, DY)
  46. }
  47.  
  48. x = X
  49. y = Y
  50.  
  51. return
  52. }

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. opener和parent的区别

    openeropener用于在window.open的页面引用执行该window.open方法的的页面的对象.例如:A页面通过window.open()方法弹出了B页面,在B页面中就可以通过opene ...

  2. Pyhton学习的基础

    函数->功能, 如print(),input(),range(), 方法->功能, 如index()(尽量不用此方法),find(),类里面的函数就叫做方法 容器->列表,字符串,元 ...

  3. C# Mysql 查询 Rownum

    SELECT @rownum:=@rownum+1 AS rownum,a.order_id ,case when a.Ordered =1 then '已分单' end as Ordered,a.p ...

  4. sails 相关软件下载地址及命令

    vscode1.40   https://vscode.cdn.azure.cn/stable/f359dd69833dd8800b54d458f6d37ab7c78df520/VSCodeUserS ...

  5. centos7.6使用 supervisor 对filebeat7.3.1进程进行管理

    centos7.6使用 supervisor 对filebeat7.3.1进程进行管理 Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX ...

  6. protobufjs@6.8.8 postinstall: `node scripts/postinstall`

    由于Node.js 版本太低了, 使用最新版用 Node.js =================================== 以下解决方法来源于网络 npm ERR! Windows_NT ...

  7. Spring MVC -- 下载文件

    像图片或者HTML文件这样的静态资源,在浏览器中打开正确的URL即可下载,只要该资源是放在应用程序的目录下,或者放在应用程序目录的子目录下,而不是放在WEB-INF下,tomcat服务器就会将该资源发 ...

  8. oracle 解决 exp 空表不能导出的问题

    原因:oralce_11g 中有个新特性,当表无数据时,不分配 segment,以节省空间,这也就导致了 exp 在导出表时,没有数据的表会被忽略 方法一:我们可以向表中插入数据,在删除,这样数据表就 ...

  9. 配置windows live writer

    下载地址 https://pan.baidu.com/s/1WVpLQEadIHN15W2DIhWh4A 安装流程参考博客 https://www.cnblogs.com/haseo/p/376232 ...

  10. [LeetCode] 929. Unique Email Addresses 唯一的电邮地址

    Every email consists of a local name and a domain name, separated by the @ sign. For example, in ali ...