3
画一个随机的六字形
上面的图像称为六字形。六字形是我在DiffEq课堂上涂鸦时制作的一些很酷的图案。制作方法如下: 考虑以下点集,它们的形状像规则六边形。内部的六边形将包含最终的字形,而外部的6个点将形成星形,这是我们开始绘制线条的地方。 从外部的六个点中,随机选择一对。为了提高效率,两个选定的点之间应该至少有一个其他点(否则,它将对最终图形没有影响)。然后,从两个点中的每个点向另一个方向投射射线。该光线被前几行遮挡了。 重复此过程,直到形成所有9个边缘,如以下几幅图像所示。 这是光线被遮挡的示例。射线段的末端仍然可见,但是中间部分被我们绘制的前两个段所遮挡。 这两条光线也被“阻挡”,但这不会造成任何可见的差异,因为它们被同一条其他线阻挡了。 快进直到画完所有9条线。如果您想对这些跳过的步骤进行更详细的说明,我可以进行阐述。 最后,删除星星的点。为了使其看起来更漂亮,还将删除粗点。 挑战 您面临的挑战是输出随机六字形的视觉表示。这是代码高尔夫球,最少的字节获胜。 所有可能的六字形都应以一定的概率出现。通过更改绘制9条边的顺序来生成不同的六字形。 此外,程序输出的所有图像都必须是有效的六字形。某些样式(例如内部六边形的完整轮廓)可能无法显示为六字形,因此您编程时不得输出这些样式。 输出应为图形图像(打印到屏幕或文件)。 六边形必须是规则的,但可以以任何方向出现。 反射/旋转不是唯一的。(这可能使要求1易于遵循)。