blob: c528aec4f0d88b7fec862699d57592a3d5067301 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# offset curve of piecewise cornu curves
from math import *
import pcorn
from clothoid import mod_2pi
def seg_offset(seg, d):
th0 = seg.th(0)
th1 = seg.th(seg.arclen)
z0 = [seg.z0[0] + d * sin(th0), seg.z0[1] - d * cos(th0)]
z1 = [seg.z1[0] + d * sin(th1), seg.z1[1] - d * cos(th1)]
chth = atan2(z1[1] - z0[1], z1[0] - z0[0])
return [pcorn.Segment(z0, z1, mod_2pi(chth - th0), mod_2pi(th1 - chth))]
def offset(curve, d):
segs = []
for seg in curve.segs:
segs.extend(seg_offset(seg, d))
return pcorn.Curve(segs)
|