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 45
p0={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----

  

[golang]svg图片默认按照左上角旋转,改为按中心旋转,重新计算中心偏移量的更多相关文章

  1. C# 使用 GDI+ 实现添加中心旋转(任意角度)的文字

    这篇文章是 GDI+ 总结系列的第三篇,如果对 GDI+ 的基础使用不熟悉的朋友可以先看第一篇文章<C# 使用 GDI+ 画图>. 需求 需求是要实现给图片添加任意角度旋转的文字,文字的旋 ...

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

    1 前言 图片按中心旋转后,新图的左顶点位置的偏移量 2 代码 func OffsetXYAfterRotationCore(W, H, L, T, Angle float64) (x, y floa ...

  3. SVG图片如何调整大小和颜色

    设计妹子给了SVG图片,在开发的时候尺寸不对,颜色也要修改,应当如何解决? 1.修改大小:在<svg> 标签中修改width.height 属性(默认单位是px)2.修改颜色:在<p ...

  4. SVG图片背景透明

    今天在调整网页的时候,将logo以原有直接贴代码形式,改为加载文件. 其实真正的目的是做SEO.上次SEO交流后得出 结论:核心在于内容的本身的优化.信噪比很重要.也就是有效信息需要占文章的主要内容, ...

  5. 使用在线编辑 svg 软件修改 svg 图片

    网站需要使用图标字体,但设计师给的图标大小有问题,故使用下面说陈述方法简单修改了一下.使用到的在线编辑软件地址为:https://editor.method.ac/ 问题: 注:至于如何使用图标字体( ...

  6. 动态svg图片简单制作

    一.简介 #topics #no-box-shadow-img { box-shadow: none } 博主头像 svg图片格式不同于其它图片格式,svg图片本质上是一个xml文件,它内部是标记语言 ...

  7. OpenMesh 将默认的 float 类型改为 double 类型

    OpenMesh 中默认的数据类型都是 float 类型的,如果要将其默认的 float 类型改为 double 类型,可以这么做: #include <OpenMesh/Core/Mesh/P ...

  8. Adobe Edge Animate –解决图形边缘精确检测问题-通过jquery加载svg图片

    Adobe Edge Animate –解决图形边缘精确检测问题-通过jquery加载svg图片 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权和原文地址. 在edge ...

  9. Svg图片在asp网站上的使用

    最近需要做一个动态的根据后台的返回数据而动态显示的导航图,然后我就采用了jquery+ajax+SVG矢量图来实现这个功能. 首先,客户给了个ai的矢量图,我对这一块不懂就找以前同事帮我转成了svg图 ...

随机推荐

  1. 【java/oralce/sql】往一张仅有id,名称,创建时间三个字段的表中插入百万数据需要多久?1分26秒

    代码下载:https://files.cnblogs.com/files/xiandedanteng/fastfilltable20191222.rar 表testtb18的结构如下: CREATE ...

  2. 微信小程序调用微信支付接口

    本文链接:https://blog.csdn.net/u012667477/article/details/80940578前言:应项目要求,需要使用微信小程序做支付,写完后告知手续费太高方案不予通过 ...

  3. 认真分析mmap:是什么 为什么 怎么用(转)

    阅读目录 mmap基础概念 mmap内存映射原理 mmap和常规文件操作的区别 mmap优点总结 mmap相关函数 mmap使用细节 回到顶部 mmap基础概念 mmap是一种内存映射文件的方法,即将 ...

  4. Vscode 修改主题颜色

    首先向大家演示如何使用VSCode自带的颜色主题:依次点击左上角的文件-首选项-颜色主题,出现如下的主题选取界面.

  5. odoo开发笔记 -- 还原数据库后,异常:ir_attachment: IOError: [Errno 2] No such file or directory: u'/var/...'

    场景描述: 恢复Odoo数据后,抛出错误导致无法进入页面 -- ::, INFO aeo odoo.addons.base.ir.ir_attachment: _read_file reading / ...

  6. nand flash 擦除指定的区域

    Nand falsh 在 u-boot 里面,是可以执行擦除操作的. 擦除整个 Nand 的命令: nand erase.chip 擦除部分区域 nand erase.spread 0x0 0x780 ...

  7. redis报错OOM command not allowed when used memory > 'maxmemory'

    登录到redis上查询 ./redis-cli -h IP -p port -a passwd redis>info memory 查询,内存已耗尽 查询配置文件,发现之前配置最大内存的策略设置 ...

  8. 解决catalina.out文件过大的问题

    有用Tomcat的人,绝对都会遇到这样一个问题:catalina.out文件过大. 它是Tomcat默认生成的日志文件,会随着时间的推移,逐渐增大,不断的增长,甚至达到几G,几十G的大小.由于文件过大 ...

  9. ERROR: CAN'T FIND PYTHON EXECUTABLE "PYTHON", YOU CAN SET THE PYTHON ENV VARIABLE.解决办法

    错误原因:Node.js 在安装模块的时候报错,缺少python环境. 解决办法: 第一种方式: 安装Python及环境变量配置 一定要安装python2.7的版本 环境变量安装可以参考:http:/ ...

  10. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件实现的多码率视频点播功能说明

    关于EasyDSS EasyDSS(http://www.easydss.com)流媒体解决方案采用业界优秀的流媒体框架模式设计,服务运行轻量.高效.稳定.可靠.易维护,支持RTMP直播.RTMP推送 ...