gpt4 book ai didi

javascript - Paper JS : Wavy Line, 沿着路径刷

转载 作者:太空宇宙 更新时间:2023-11-04 16:32:07 24 4
gpt4 key购买 nike

我正在尝试使用 Paper.js 绘制一条波浪线。现在绘制了一条波浪线,但波浪非常不规则,尤其是在拐 Angular 处。

此外,我还依赖于 simplify()smooth() 方法,这意味着路径仅在完成绘制后才变为圆形。

对于小波浪,这不是问题,对于大波浪,这变得相当明显。 (增加 minDistancemaxDistance,以及 waveSideStep)

paper.setup(document.getElementById('papercanvas'));
let wavePath;
let waveEndAngle;
this.wave_ = new paper.Tool();
this.wave_.minDistance = 5;
this.wave_.maxDistance = 5;

this.wave_.onMouseDown = function(event) {
new paper.Layer().activate();
wavePath = new paper.Path();
wavePath.strokeColor = '#000';
wavePath.strokeWidth = 10;
wavePath.strokeCap = 'square';
wavePath.strokeJoin = 'round';
wavePath.add(event.point);
};

this.wave_.onMouseDrag = function(event) {
let waveSideStep = Math.sin(wavePath.length / 10) * 10;
wavePath.add(new paper.Point(
event.point.x + Math.cos(event.delta.angleInRadians + (Math.PI / 2)) * waveSideStep,
event.point.y + Math.sin(event.delta.angleInRadians + (Math.PI / 2)) * waveSideStep));
waveEndAngle = event.delta.angle - 90;
};

this.wave_.onMouseUp = function(event) {
wavePath.smooth();
wavePath.simplify();
paper.view.draw();
};
canvas {
width: 100%;
height: 100%;
}
canvas[resize] {
width: 100%;
height: 100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.10.2/paper-core.js"></script>
<canvas id="papercanvas" width="600" height="600"></canvas>

有没有更好的方法来绘制波浪线?

或者,是否有一种简单的方法可以将值重复(并弯曲)到路径上,类似于在 Illustrator 中使用画笔的方式?

最佳答案

有趣的工具:-)

我没有足够的时间来给出完整的答案,但这是我的建议:

  1. 创建一个轨迹路径,该路径只是鼠标轨迹的高度平滑/简化版本(平滑时给予较高的容差)
  2. 围绕该轨迹曲线计算一个简单的波,该结果可以在每一步进行平滑/简化(在 onMouseDrag 函数中)

就是这样。

关于javascript - Paper JS : Wavy Line, 沿着路径刷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39708694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com