import cv2
import numpy as np
from PIL import Image, ImageDraw
class Point2D(object):
def __init__(self, x=0., y=0.):
self.x = x
self.y = y
@property
def x(self):
return self._x
@x.setter
def x(self, value):
self._x = value
@property
def y(self):
return self._y
@y.setter
def y(self, value):
self._y = value
def __str__(self):
return '(X:{}, Y:{})'.format(self.x, self.y)
def __repr__(self):
return 'Point({}, {})'.format(self.x, self.y)
def slope(self, target):
#k = y2-y1/x2-x1
try:
return (target.y - self.y) / (target.x - self.x)
except ZeroDivisionError:
return None
def y_segment(self, target):
k = self.slope(target)
return self.y - k * self.x
def line_function(self, target):
k = self.slope(target)
b = self.y_segment(target)
if k:
# y = k*x+b
def fn(x):
return k * x + b
else:
# if k=None -> k is infinity
def fn(x):
p1 = Point2D(1., -18.9)
p2 = Point2D(1., -17.)
p3 = Point2D(1., -13.)
fn_x = p1.line_function(p2)
if p3.y == fn_x(p3.x):
print('Belongs to line')
Like this:
Like Loading...
Related