[golang]按图片中心旋转后的新图左顶点和原图左顶点的偏移量计算
2024-08-29 02:30:05
1 前言
略,作为记录使用
2 代码
/**
* @Author: FB
* @Description:
* @File: RotateSample.go
* @Version: 1.0.0
* @Date: 2019/9/5 16:23
*/ package main import (
"math"
"strconv"
"fmt"
"log"
) func main() { Angle := 90.0
H := 100.0
W := 200.0
L := 0.0
T := 0.0 x,y := GetOffsetXYAfterRotationForSVG(W, H, L, T, Angle)
fmt.Println("x,y=",x,y)
} func GetOffsetXYAfterRotationForSVG(W, H, L, T, Angle float64) (x, y float64) { if Angle <= 0.0 {
return L, T
} if Angle > 90 && Angle <= 180 {
Angle = 180 - Angle
} else if Angle > 180 && Angle <= 270 {
Angle = 270 - Angle
} else if Angle > 270 && Angle <= 360 {
Angle = 360 - Angle
} else if Angle <= 0 {
log.Println("Exception-> Angle < 0")
//Angle = 360 + Angle
} else { //0<Angle<=90 } R := math.Sqrt(math.Pow(W, 2)+math.Pow(H, 2)) / 2
AngleRadBeta := math.Atan(H / W)
AngleBeta := AngleRadBeta * 180 / math.Pi fmt.Println("Angle,H,W,L,T,ZHalf,AngleBeta=", Angle, H, W, L, T, R, AngleBeta) //开始计算,在以对角线一半为半径画圆,初始化角度为Anglebeta
A1 := Angle + AngleBeta
A2 := 90 + Angle - AngleBeta
//A3 := AngleBeta - Angle AngleRad1 := A1 * math.Pi / 180
AngleRad2 := A2 * math.Pi / 180
//AngleRad3 := A3 * math.Pi / 180 SinA1 := math.Sin(AngleRad1)
SinA2 := math.Sin(AngleRad2)
//CosA3 := math.Cos(AngleRad3)
//fmt.Println("sin1,sin2,cos3=",SinA1,SinA2,CosA3) X := -R * SinA2
Y := -R * SinA1 fmt.Println("X,Y=", X, Y) x = L + DecimalPrec(X+W/2, 3)
y = T + DecimalPrec(Y+H/2, 3) return x, y } func DecimalPrec(value float64, prec int) float64 {
value, _ = strconv.ParseFloat(fmt.Sprintf("%."+strconv.Itoa(prec)+"f", value), 64)
return value
}
3 图片
说明:偏移量为P到P°的偏移量
最新文章
- xmind portable
- python中string模块
- [No00004C]软件工程师的创业陷阱:接私活
- 领域模型(domain model)&;贫血模型(anaemic domain model)&;充血模型(rich domain model)
- [CareerCup] 17.5 Game of Master Mind 猜字游戏
- [转帖] VS集成Qt环境搭建
- Win7 Print Spooler服務自动关闭
- KNN(k-nearest neighbor的缩写)又叫最近邻算法
- cocos2dx中的其他层
- Spring Bean初始化之后执行指定方法
- element ui change 传递带自定义参数
- 剑指offer——python【第36题】两个链表的第一个公共结点
- [TJOI 2018]智力竞赛
- Node.js+Koa开发微信公众号个人笔记(二)响应事件
- MYSQL导入csv类型的数据出现The MySQL server is running with the --secure-file-priv option
- cmd 概览---- 转
- 初识C#程序结构
- (原)tensorflow中提示CUDA_ERROR_LAUNCH_FAILED
- HDU 4540 威威猫系列故事——打地鼠 (状态压缩DP)
- php 找出异常发生的地方