28 lines
682 B
Python
28 lines
682 B
Python
import torch
|
|
import numpy as np
|
|
from .chebyshev import chebyshev_roots
|
|
|
|
class Segment():
|
|
def __init__(self, p1, p2):
|
|
self.p1 = p1
|
|
self.p2 = p2
|
|
|
|
def discretize(self, n, mode='random'):
|
|
pts = []
|
|
|
|
if mode == 'random':
|
|
iterator = np.random.uniform(0, 1, n)
|
|
elif mode == 'grid':
|
|
iterator = np.linspace(0, 1, n)
|
|
elif mode == 'chebyshev':
|
|
iterator = chebyshev_roots(n) * .5 + .5
|
|
|
|
for k in iterator:
|
|
x = self.p1[0] + k*(self.p2[0]-self.p1[0])
|
|
y = self.p1[1] + k*(self.p2[1]-self.p1[1])
|
|
pts.append((x, y))
|
|
|
|
pts = np.array(pts)
|
|
return pts
|
|
|