热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

1前言图片按中心旋转后,新图的左顶点位置的偏移量2代码funcOffsetXYAfterRotationCore(W,H,L,T,Anglefloat64)(x,

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

 

  


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 1.RoIPoolingRoIPooling顾名思义对Roi进行Pooling操作,主要用于目标检测任务。RoI(Regionofinterest&# ... [详细]
  • 目录@Before:前置通知注解@AfterReturning:后置通知@Around:环绕通知@AfterThrowing:异常通知@After:最终通知@Before:前置通知 ... [详细]
  • 安全事件周报(10.2611.01)
    安全事件周报(10.2611.01) ... [详细]
  • 今天看鸟哥的yaf的一个demo,在入口文件中,作者有这么一个定义:define(DS,);define(APP_PATH,dirname ... [详细]
  • 由tracemakeimage的过程中(mshowcommands),可以知道systemimage是怎么形成的.outhostlinux-x86binmkyaffs2image- ... [详细]
author-avatar
到底是谁额额额
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有