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°的偏移量

最新文章

  1. xmind portable
  2. python中string模块
  3. [No00004C]软件工程师的创业陷阱:接私活
  4. 领域模型(domain model)&amp;贫血模型(anaemic domain model)&amp;充血模型(rich domain model)
  5. [CareerCup] 17.5 Game of Master Mind 猜字游戏
  6. [转帖] VS集成Qt环境搭建
  7. Win7 Print Spooler服務自动关闭
  8. KNN(k-nearest neighbor的缩写)又叫最近邻算法
  9. cocos2dx中的其他层
  10. Spring Bean初始化之后执行指定方法
  11. element ui change 传递带自定义参数
  12. 剑指offer——python【第36题】两个链表的第一个公共结点
  13. [TJOI 2018]智力竞赛
  14. Node.js+Koa开发微信公众号个人笔记(二)响应事件
  15. MYSQL导入csv类型的数据出现The MySQL server is running with the --secure-file-priv option
  16. cmd 概览---- 转
  17. 初识C#程序结构
  18. (原)tensorflow中提示CUDA_ERROR_LAUNCH_FAILED
  19. HDU 4540 威威猫系列故事——打地鼠 (状态压缩DP)
  20. php 找出异常发生的地方

热门文章

  1. 获取url后的参数、获取a标签的参数
  2. mysql(五)执行计划
  3. java8在Stream的forEach操作时获取index
  4. github 被强了!太丧心病狂了!
  5. 人脸识别(基于ArcFace)
  6. 基于Spring Boot架构的前后端完全分离项目API路径问题
  7. Gerrit - 初始配置
  8. &amp;和&amp;&amp;的区别?
  9. centos7如何将docker容器配置成开机自启动
  10. Android EditText禁止回车换行