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

本文介绍了一种计算图片按中心旋转后新图左顶点位置偏移量的方法,并提供了Go语言实现的代码示例。该方法根据不同旋转角度区间分别计算偏移量DX和DY,最终确定新图的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

  

转载于:https://www.cnblogs.com/fanbi/p/11205966.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值