from math import sqrt class LineSegment: def __init__(self, x1, y1, x2, y2): self.x1 = x1 self.y1 = y1 self.x2 = x2 self.y2 = y2 def length(self): return sqrt((self.x1 - self.x2)**2 + (self.y1 - self.y2)**2) # Create a LineSegment with starting point (0, 0) and ending point (3, 4) line = LineSegment(0, 0, 3, 4) # Output the length of the line print(line.length()) # Output: 5.0
class LineSegment: def __init__(self, x1, y1, x2, y2): self.x1 = x1 self.y1 = y1 self.x2 = x2 self.y2 = y2 def intersection(self, other): # Compute the intersection point of two line segments # Return None if the line segments do not intersect def det(a, b): return a[0]*b[1] - a[1]*b[0] def between(a, b, c): return min(a[0], b[0]) <= c[0] <= max(a[0], b[0]) and min(a[1], b[1]) <= c[1] <= max(a[1], b[1]) A = (self.x1, self.y1) B = (self.x2, self.y2) C = (other.x1, other.y1) D = (other.x2, other.y2) if det((B[0]-A[0], C[0]-D[0]), (B[1]-A[1], C[1]-D[1])) == 0: return None T = det((C[0]-A[0], D[0]-A[0]), (C[1]-A[1], D[1]-A[1])) / det((B[0]-A[0], D[0]-C[0]), (B[1]-A[1], D[1]-C[1])) if between(A, B, (A[0]+T*(B[0]-A[0]), A[1]+T*(B[1]-A[1]))) and between(C, D, (C[0]+T*(D[0]-C[0]), C[1]+T*(D[1]-C[1]))): return (A[0]+T*(B[0]-A[0]), A[1]+T*(B[1]-A[1])) return None # Create two LineSegments that intersect line1 = LineSegment(-1, 0, 1, 0) line2 = LineSegment(0, -1, 0, 1) # Output the intersection point print(line1.intersection(line2)) # Output: (0, 0)In this example, we define a LineSegment class that has an `__init__` method to initialize the starting and ending points, and an `intersection` method to compute the intersection point of two LineSegments using the determinant method. We then create two LineSegment objects that intersect and call the `intersection` method of one LineSegment with the other LineSegment as an argument to output the intersection point. The Package libraries are not used in the code.