animation - 长度为 0 的 svg 贝塞尔曲线的坐标
问题描述
我想为 2 条 svg 路径设置动画。为此你需要类似的节点。如果 path1 有一个贝塞尔曲线,那么 path2 也必须在同一个节点上有它。所以我插入c0 0 0 0 0 0
到path2。但它改变了第二个形状。我能做些什么?
<html>
<title>Page Title</title>
</head>
<body>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="400.000000pt" height="400.000000pt" viewBox="0 0 400.000000 400.000000"
preserveAspectRatio="xMidYMid meet">
<g
fill="#000000" stroke="none">
<path fill ="red" d= "m50 50 50 50 100 100 50 100" />
<path d= "m0 0 50 50 100 100 50 100" />
<path fill = "blue" d= "m0 0 c0 0 0 0 0 0 50 50 100 100 50 100" />
</g>
</svg>
</body>
</html>
解决方案
路径定义
m 0 0 50 50 100 100 50 100
相当于
m 0 0
l 50 50
l 100 100
l 50 100
一个等效的贝塞尔曲线可能是
m 0 0
c 0 0 50 50 50 50
c 0 0 100 100 100 100
c 0 0 50 100 50 100"
我选择将第一个控制点放在线/贝塞尔曲线的开头。最后是第二个。我可以选择把它们都放在开头,或者都放在结尾。
如果您使用路径进行动画运动,则应将控制点放置在沿线的 1/3 和 2/3 点处。例如。:
m 0 0
c 16.7 16.7 33.3 33.3 50 50
c 33.3 33.3 66.7 66.7 100 100
c 0 0 16.7 33.3 33.3 66.7 50 100"
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="400.000000pt" height="400.000000pt" viewBox="0 0 400.000000 400.000000"
preserveAspectRatio="xMidYMid meet">
<g fill="#000000" stroke="none">
<path fill ="red" d= "m50 50 50 50 100 100 50 100" />
<path d= "m0 0 50 50 100 100 50 100" />
<path fill = "blue" d= "
m 0 0
c 0 0 50 50 50 50
c 0 0 100 100 100 100
c 0 0 50 100 50 100" />
</g>
</svg>
推荐阅读
- firebase - Flutter/Firebase/url_launcher/ 如何从应用程序发送短信?
- c - C - 当条件奇怪的问题
- excel - Excel 365 - 通过 VBA 过滤 ADODB.RecordSet 时崩溃
- react-native - Expo image-manipulator crop - 根据 facedetector 的值
- javascript - 如何在滚动位置增加时降低不透明度
- python - python googletrans utf-8 端有问题
- numpy - numpy genfromtxt - 缺失数据与坏数据
- swift - 使用苹果功能登录未触发
- regex - 是否可以使用单个 perl 正则表达式将 PascalCase1.wav 重命名为 kebab-case-1.wav?
- php - php 的 file_put_contents 对 Nginx 的并发读取安全吗?