Я использую opencv2
для создания полигонов разных сторон.После других обсуждений я могу создать треугольник, квадрат, шестиугольник, пятиугольник и т. Д. С учетом радиуса и центра.Следующий код делает это:
def polygon(center, sides, radius=1, rotation=0, translation=None):
one_segment = math.pi * 2 / sides
points = [
(int(round(center[0] + math.sin(one_segment * i + rotation) * radius, 0)),
int(round(center[1] + math.cos(one_segment * i + rotation) * radius, 0)))
for i in range(sides)]
if translation:
points = [[sum(pair) for pair in zip(point, translation)]
for point in points]
return points
Возвращает набор вершин, которые можно использовать для создания изображения.Но, как я делаю неправильные треугольники.То есть создайте острый угловой треугольник, тупой треугольник, прямоугольный треугольник, равносторонний треугольник.
Как мы генерируем вершины заданного типа в диапазоне координат x и y, а также в области площади треугольника.Я понимаю, что треугольники не уникальны и могут быть много.Как только у нас есть очки, мы можем сделать изображение, используя:
def makePolygon(center, sides, radius):
points = polygon(center, sides, radius)
pointsList = [list(a) for a in points]
p1 = np.array(pointsList)
img = np.zeros((256, 256, 3), dtype='int32')
cv2.fillPoly(img, pts =[p1], color=(255,0,0))
return img