如何使具有20条直线的椭圆形重复出现?

问题描述 投票:-1回答:2

我需要为一个拼凑程序创建此形状,该程序以特定的图案重复该补丁。我不确定从哪里开始创建此内容,因为它仅使用20条直线,因此任何帮助都将非常棒。

enter image description here

python algorithm patchwork
2个回答
0
投票

实际上是一个数学系列。只需查看直线的起点和终点以及它们如何增加和减少,就可以找到解决方案。

s = 1000
img = np.full((s,s,3), 255, dtype='uint8')
inc = 10

color = [0,0,255]
for i,j in zip(range(0,s+1,inc), range(0,s+1,inc)):
    cv2.line(img, (i,1), (s,i), color, 2)
    cv2.line(img, (1,j), (j,s), color, 2)

cv2.imshow('img', img)
cv2.waitKey(0)

0
投票

这将为您绘制一组线条:

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

@dataclass
class Line:
    p1: Point
    p2: Point

def lower_left_mesh(height, width, n):
    return [
        Line(
            Point(0, i * (height - 1) // n),
            Point((i + 1) * (width - 1) // n, height - 1)
        )
        for i in range(n)
    ]

因此,例如:

>>> lower_left_mesh(101, 101, 10)

[Line(p1=Point(x=0, y=0),  p2=Point(x=10, y=100)),
 Line(p1=Point(x=0, y=10), p2=Point(x=20, y=100)),
 Line(p1=Point(x=0, y=20), p2=Point(x=30, y=100)),
 Line(p1=Point(x=0, y=30), p2=Point(x=40, y=100)),
 Line(p1=Point(x=0, y=40), p2=Point(x=50, y=100)),
 Line(p1=Point(x=0, y=50), p2=Point(x=60, y=100)),
 Line(p1=Point(x=0, y=60), p2=Point(x=70, y=100)),
 Line(p1=Point(x=0, y=70), p2=Point(x=80, y=100)),
 Line(p1=Point(x=0, y=80), p2=Point(x=90, y=100)),
 Line(p1=Point(x=0, y=90), p2=Point(x=100, y=100))]
© www.soinside.com 2019 - 2024. All rights reserved.