我写了这个函数来画三角形网格:
def create_triangles(side_length):
result = []
half_width = int(side_length / 2)
# height = int(side_length * math.sqrt(3) / 2)
height = side_length
max_width = 15 * side_length
max_height = 10 * height
for i in range(0, max_height, height):
if (i / height) % 2 == 0:
for j in range(0, max_width-half_width, half_width):
if j % side_length == 0:
triangle = (i-height/2, j-half_width, i+height/2, j, i-height/2, j+half_width)
else:
triangle = (i-height/2, j, i+height/2, j+half_width, i+height/2, j-half_width)
result.append(triangle)
else:
for j in range(half_width, max_width, half_width):
if j % side_length == 0:
triangle = (i-height/2, j-2*half_width, i+height/2, j-half_width+2, i-height/2, j)
else:
triangle = (i-height/2, j-half_width, i+height/2, j, i+height/2, j-2*half_width)
result.append(triangle)
return result
电流输出如下:
正如你所看到的,有些三角形没有对齐,但我不明白为什么。你知道吗
如注释中所述,浮点会给出错误的结果;您需要确保表示两个相邻三角形顶点的共享点是并发的。一个简单的方法是将点坐标减少到整数,并组织计算,这样误差就不会增加。你知道吗
在下面的示例中,校正了未对齐,画布上的每个三角形都由多边形表示,并单独绘制;因此,当鼠标移到上面时,可以引用每个三角形,或者通过索引或映射(未实现)来寻址。你知道吗
我添加了一个活动填充属性,当鼠标移到上面时,它将更改每个三角形的颜色。你知道吗
相关问题 更多 >
编程相关推荐