当前位置: 首页 > news >正文

SVG-椭圆弧-参数转换-计算公式-标准解读

文章目录

    • 1.简介
    • 2.基本参数
      • 2.1.椭圆的表达
      • 2.2.参数变换
      • 2.3.注意事项
    • 3.参考资料
    • 4.总结

1.简介

为了与其他路径段表示法保持一致, SVG 路径中的圆弧是根据曲线上的起点和终点定义的。椭圆弧的这种端点参数化。优点是它允许与其它路径一致的语法,其中所有路径命令都以新“当前点”的坐标。然而,这并不是描述弧几何形状的唯一方法。 本节介绍替代中心参数化, 以及如何将其与 SVG 的端点参数化进行转换。

2.基本参数

x1,y1 表示起点路径
rx,ry 表示椭圆水平和垂直方向的半长轴
φ 表示当前x轴顺时针旋转到椭圆x轴的角度
–x-axis-rotation 是椭圆相对于坐标系的旋转角度,角度数而非弧度数。
fA 是大弧形标志,为 0 如果选择跨度小于或等于180 度的弧,则为 1 如果选择跨度大于 180 度的圆弧。
–large-arc-flag 是标记绘制大弧(1)还是小弧(0)部分。
fS 是扫描标志,如果值为0,连接中心到弧线的线扫过递减角度,如果值为1,则增加角度。
–sweep-flag 是标记向顺时针(1)还是逆时针(0)方向绘制。
(x2, y2) 是 弧线的终点

2.1.椭圆的表达

在这里插入图片描述
(cx, cy) 表示椭圆的中心点坐标。θ 表示椭圆扫描角度(仰角),一般表示x正轴逆时针旋转角,φ同上,rx和ry为半长轴。Δθ表示弧长的角度变换,从起始角逆时针旋转到结束角。

2.2.参数变换

cx cy rx ry φ θ1 Δθ 变换到 x1 y1 x2 y2 fA fS
在这里插入图片描述
x1 y1 x2 y2 fA fS rx ry φ 变换到 cx cy θ1 Δθ
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.注意事项

第 1 步:确保半径不为零。
如果半径为0,则表示起点到终点的直线。
第 2 步:确保半径为正。
rx,ry取绝对值。
第 3 步:确保半径值足够大,否则按一定比率放大到能够连接上。
在这里插入图片描述

3.参考资料

W3C官方标准文档。
SVG参数解析标准教程。

4.总结

SVG坐标系是三维坐标系中的左手坐标,能够更好的满足视图绘制要求,左手和右手坐标系,在二维空间中,最大的不同在于右手坐标系,逆时针为正,左手坐标系顺时针为正,其它没有发现区别。在处理角度时需要特别注意。

http://www.lryc.cn/news/252066.html

相关文章:

  • 利用 LD_PRELOAD劫持动态链接库,绕过 disable_function
  • 网件R8500 trojan
  • 实现校园网开机自启动部署
  • pycharm 创建vue并实现简易路由功能
  • 2023年关于爬取Bilibili(B站)视频的一些最新资源和案例
  • HyperBDR云容灾v4.10.1发布,划重点:支持UCloud云平台自动化容灾+新增可灵活定义的备份策略
  • 第四十一篇,一次matlab与spdlog的合作
  • 【苍穹外卖】——第一天
  • 解决SecureFX的中文乱码问题
  • 【字符串匹配】【KMP算法】Leetcode 28 找出字符串中第一个匹配项的下标☆
  • 《洛谷深入浅出进阶篇》模意义下的乘法逆元+洛谷P3811
  • clickhouse -- clickhouse解析复杂JSON数组
  • 算法leetcode|91. 解码方法(rust重拳出击)
  • zabbix配置snmp trap--使用snmptrapd和Bash接收器(缺zabbix_trap_handler.sh文中自取)--图文教程
  • vue: 线上项目element-ui的icon偶尔乱码问题
  • fpga rom 初始化文件的一些心得
  • 从零构建属于自己的GPT系列3:模型训练2(训练函数解读、模型训练函数解读、代码逐行解读)
  • Python词频统计(数据整理)
  • 基本面选股的方法
  • 应用密码学期末复习(3)
  • PAD平板签约投屏-高端活动的选择
  • 分布式架构demo
  • TA-Lib学习研究笔记(二)——Overlap Studies上
  • 牛客java基础考点1 标识符和变量
  • Qt将打印信息输出到文件
  • 【risc-v】易灵思efinix FPGA sapphire_soc IP配置参数分享
  • 直播的种类及类型
  • 时间序列数据压缩算法简述
  • 智能锁-SI522TORC522方案资料
  • redux(4) -RTK简单使用