Added more point generation stuff

This commit is contained in:
Alexander Munch-Hansen 2018-10-16 14:51:51 +02:00
parent c9f4182529
commit bdbdfa624d

View File

@ -2,6 +2,7 @@ import random
from collections import namedtuple from collections import namedtuple
from enum import Enum, auto from enum import Enum, auto
from typing import Set from typing import Set
from math import cos, sin, sqrt, pi
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
@ -32,6 +33,33 @@ def display(points: Set[Point], hull: Set[Point]):
plt.show() plt.show()
def gen_circular_point(lower : int = 0, upper: int = 10, radius: int = 5) -> Point:
a = random.uniform(lower, upper) * 2 * pi
r = radius * sqrt(random.uniform(lower, upper))
x = r * cos(a)
y = r * sin(a)
return Point(x,y)
def gen_weird_point(lower : int = 0, upper: int = 10) -> Point:
x = random.uniform(lower, upper)
y = x**2
return Point(x,y)
def gen_triangular_point(left : Point, right : Point, top : Point):
r1 = random.uniform(0,1)
r2 = random.uniform(0,1)
return Point((1 - sqrt(r1)) * left.x + (sqrt(r1) * (1 - r2)) * right.x + (sqrt(r1) * r2) * top.x,
(1 - sqrt(r1)) * left.y + (sqrt(r1) * (1 - r2)) * right.y + (sqrt(r1) * r2) * top.y)
def display_line_only(points: Set[Point], slope: float, intercept: float, line_points: Set[Point]): def display_line_only(points: Set[Point], slope: float, intercept: float, line_points: Set[Point]):
x = [point.x for point in points] x = [point.x for point in points]
y = [point.y for point in points] y = [point.y for point in points]