def regPlot(x_points, y_points, line_color=(1, 0, 0), point_color=(0, 0, 1), axes_color=(0, 1, 0), final_x=500, plot_points=False): # Draw axes gl.glColor3f(*axes_color) drawDDA((0, 0), (0, 500)) drawDDA((0, 0), (500, 0)) # build regression model reg_model = LinearRegression().fit(x_points.reshape(-1, 1), y_points) slope = reg_model.coef_[0] intercept = reg_model.intercept_ initial_y = int(intercept) final_y = int(slope * final_x + intercept) # Draw regression line gl.glColor3f(*line_color) drawDDA((0, initial_y), (final_x, final_y)) if plot_points: #Draw Points gl.glColor3f(*point_color) for x, y in zip(x_points, y_points): drawDot(x, y)
def mouseClicked(button, button_state, cursor_x, cursor_y): if (button == glut.GLUT_LEFT_BUTTON and button_state == glut.GLUT_DOWN): global clicked if not clicked: #Draw Points gl.glColor3f(*point_color) for x, y in zip(x_points.astype(int), y_points.astype(int)): drawDot(x, y) clicked = True gl.glFlush()
def display_circle(): center1 = (200, 250) center2 = (310, 250) radius = 50 drawDot(*center1) drawCircle(center1, radius) drawDot(*center2) drawBresCirle(center2, radius) gl.glFlush()
def drawDDA(p1, p2): dx = p2[0] - p1[0] dy = p2[1] - p1[1] step = max(abs(dx), abs(dy)) x_inc = dx/step y_inc = dy/step x, y = p1 for _ in range(step): drawDot(approx(x), approx(y)) x += x_inc y += y_inc
def drawBressenham(p1, p2): dx = p2[0] - p1[0] dy = p2[1] - p1[1] if abs(dy) < abs(dx): if p2[0] - p1[0] < 0: p1, p2 = p2, p1 x = p1[0] y = p1[1] p = 2*dy - dx while(x < p2[0]): drawDot(x, y) x += 1 if p<0: p += 2*dy else: p += 2*(dy-dx) y += 1 else: if p2[1] - p1[1] < 0: p1, p2 = p2, p1 x = p1[0] y = p1[1] p = 2*dx - dy while(y < p2[1]): drawDot(x, y) y += 1 if p<0: p += 2*dx else: p += 2*(dx-dy) x += 1
def drawSymmetry(center, pt): xc = center[0] yc = center[1] x = pt[0] y = pt[1] drawDot(xc + x, yc + y) drawDot(xc - x, yc + y) drawDot(xc + x, yc - y) drawDot(xc - x, yc - y) drawDot(xc + y, yc + x) drawDot(xc - y, yc + x) drawDot(xc + y, yc - x) drawDot(xc - y, yc - x)