[golang]svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量
发布日期:2021-08-13 19:50:53 浏览次数:3 分类:技术文章

本文共 1958 字,大约阅读时间需要 6 分钟。

1 前言

svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量

2 代码

type Point struct {   X float64   Y float64}func GetOffsetXYAfterRotationForSVG(W, H, L, T, Angle float64) (ret Point) {   AngleRad := Angle * math.Pi / 180   SinX := math.Sin(AngleRad)   CosX := math.Cos(AngleRad)   Z := math.Sqrt(math.Pow(W, 2)+math.Pow(H, 2)) / 2   AngleRadBeta := math.Atan(H / W)   AngleBeta := AngleRadBeta * 180 / math.Pi   fmt.Println("Angle,SinX,CosX,H,W,L,T,ZHalf,AngleBeta=", Angle, SinX, CosX, H, W, L, T, Z, AngleBeta)   translate := Point{L, T}   //开始计算,在以对角线一半为半径画圆,初始化角度为Anglebeta   Angle = Angle + AngleBeta   p0 := Point{Z * math.Cos(AngleRadBeta), Z * math.Sin(AngleRadBeta)}   //ShowPoint(p0)   AngleRad = Angle * math.Pi / 180   SinX = math.Sin(AngleRad)   CosX = math.Cos(AngleRad)   p1 := Point{Z * CosX, Z * SinX}   //ShowPoint(p1)   p1.Minus(p0)   translate.Minus(p1)   //ShowPoint(p1)   fmt.Printf("p0=%+v,p1=%+v,p2=%+v", p0, p1, translate)   fmt.Println()   //保存精度   translate.Decimal(3)   ret = translate   return}func DecimalPrec(value float64, prec int) float64 {   value, _ = strconv.ParseFloat(fmt.Sprintf("%."+strconv.Itoa(prec)+"f", value), 64)   return value}func (p1 *Point) Add(p0 Point) {   p1.X = p1.X + p0.X   p1.Y = p1.Y + p0.Y   return}func (p1 *Point) Minus(p0 Point) {   p1.X = p1.X - p0.X   p1.Y = p1.Y - p0.Y   return}func (p1 *Point) Times(scale float64) {   p1.X = p1.X * scale   p1.Y = p1.Y * scale   return}func (p1 *Point) Decimal(prec int) {   p1.X = DecimalPrec(p1.X, prec)   p1.Y = DecimalPrec(p1.Y, prec)   return}func ShowPoint(p0 Point) {   fmt.Printf("point x=%v,y=%v", p0.X, p0.Y)   fmt.Println()}

3 输出

----start----Angle,SinX,CosX,H,W,L,T,ZHalf,AngleBeta= 30 0.49999999999999994 0.8660254037844387 400 400 0 0 282.842712474619 45p0={X:200.00000000000003 Y:200},p1={X:-126.7949192431123 Y:73.20508075688775},p2={X:126.7949192431123 Y:-73.20508075688775}x,y= 126.795 , -73.205----end----

  

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

转载地址:https://blog.csdn.net/weixin_30699235/article/details/99167950 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Maven入门(含实例教程)
下一篇:微信网页分享标题图片自定义设置(最新)

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月25日 01时09分41秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!! 2019-04-27
打开我的收藏夹 -- Python数据分析杂谈 2019-04-27
上手Pandas,带你玩转数据(1)-- 实例详解pandas数据结构 2019-04-27
上手Pandas,带你玩转数据(2)-- 使用pandas从多种文件中读取数据 2019-04-27
上手Pandas,带你玩转数据(3)-- pandas数据存入文件 2019-04-27
爬虫遇上不让右击、不让F12的网站,该怎么办? 2019-04-27
上手Pandas,带你玩转数据(4)-- 数据清洗 2019-04-27
上手Pandas,带你玩转数据(5)-- 数据转换与数据定位 2019-04-27
上手Pandas,带你玩转数据(6)-- 摆脱对pandas可视化丑图的刻板印象吧 2019-04-27
从零开始,学会Python爬虫不再难!!! -- (1)开篇:初识爬虫,基础铺垫 丨蓄力计划 2019-04-27
从零开始,学会Python爬虫不再难!!! -- (2)承接:解析网页,抓取标签 丨蓄力计划 2019-04-27
AttributeError: module ‘urllib‘ has no attribute ‘quote‘的解决办法 2021-06-30
linux shell — 6.初识 EXT2 文件系统 2021-06-30
Java — String(字符串) 2021-06-30
linux shell — 7.linux 磁盘与文件系统管理 2021-06-30
linux shell — 8.linux 磁盘与文件系统管理(2) 2019-04-27
Java — 事件监听、事件处理 初体验 2019-04-27
linux — Centos 7(第一天) 使用时出现的问题及解决方法 2019-04-27
数据结构 — 图的概述 2019-04-27
Centos 7 上 Eclipse 无法输入中文解决方法 2019-04-27