万花筒画图应用:探索对称之美

万花筒画图应用是一个创新的工具,它不仅能够作为冥想的辅助,也能为用户带来无目的的娱乐。利用超极本和Windows 8的特性,如手势、触摸、加速度计、陀螺仪和环境光传感器,用户可以增强应用的互动性,并且绘制出美丽的图案。

主要功能

全新的Metro风格磁贴界面,支持创建令人惊叹的对称图案和图画。

支持Windows 8的Snap视图、Fill视图和Full视图。

使用触摸进行绘制,手势进行放大和缩小。

利用加速度计和陀螺仪进行时间线导航。

环境光传感器用于背景设置和应用内的屏幕保护程序。

完全兼容鼠标和键盘。

能够通过Skydrive、Facebook、Twitter等分享创作。

保存图片到图片库,加载不同的背景。

应用概览

万花筒画图应用(也称为5分钟万花筒)是一个简单的应用,它允许创建无限数量的万花筒图案。

基于管状的万花筒是在1816年由苏格兰出生的大卫·布鲁斯特爵士(一位科学家和发明家)发明的。他从希腊语中选择了“kalos”(美丽)、“eidos”(形式)和“scopes”(观察者)这几个词来命名他的发明,简而言之,万花筒就是“美丽的形式观察者”。

万花筒是一种迷人的装置,它的迷人之处来自于对称和多彩的设计,这些设计来自于包含彩色玻璃碎片和镜子的管子旋转时产生的效果。

这个应用被创建出来就是为了揭示这种对称性。这个应用绘制出无尽的对称和多彩的设计。

目前,这个应用将其绘图区域划分为15个象限。在第一个象限中随机定位并绘制彩色线条。通过将那个象限的线条反射到其他14个象限中来实现对称。

应用的主屏幕被划分为14个象限。

万花筒只需要一个类,一个包含构造函数和Paint()方法的类。

这个应用广泛使用了循环,因为新的形状不断地出现在万花筒的绘制屏幕上。在这个应用中,屏幕被划分为15个三角形,它们共享屏幕中心的一个公共点。最终的划分看起来有点像英国国旗,有十五个三角形。在十五个三角形中的每一个绘制的对象,也会在其他十四个三角形中以透视的方式绘制,即翻转、旋转和/或镜像。

对于每次迭代A,用户选择的颜色被选中;然后随机选择两对坐标。对于每次子迭代B,检查随机点,如果它们位于三角形之外,那么再次选择这对坐标,直到它们都位于三角形内。迭代B结束。现在,随机选择两个“步长”,这些数字位于0和4之间。对于40次迭代C,第一对之前选择的坐标不断通过step1(x和y)递增,对于第二对使用step2也是如此。迭代C结束。在50次迭代A、B和C之后,屏幕从左到右滑动,算法重新开始。

在30秒内完成绘制。

示例算法

首先随机选择三角形的两个顶点。将称第一个三个顶点为 (x1, y1) 和 (x2, y2)。

这是“父”点。所有反射的版本都被称为“子”。其他位置的子点计算起来相当容易。只需取每个(x,y)坐标,并否定它们,或者以所有可能的方式洗牌:

(x,y), (-x,y), (x,-y), (-x,-y), (y,x), (-y,x), (y,-x), (-y,-x).

这产生了万花筒对称性。为了确保最初选择的三角形的随机点落在平面的三角形区域内,实际上在(x,y)对中随机选择的“x”大于“y”时交换“x”和“y”。伪代码显示了如何做到这一点。

如何创建计算机万花筒

DO FOR i = 1 to 15 x1 = random; y1 = random x2 = random; y2 = random x3 = random; y3 = random /* 将初始图案限制在右下角象限 */ if ( x1 > y1 ) then (save=x1; x1=y1; y1=save;) if ( x2 > y2 ) then (save=x2; x2=y2; y2=save;) if ( x3 > y3 ) then (save=x3; x3=y3; y3=save;) DrawTriangleAt(x1,y1,x2,y2,x3,y3) /* 创建7个反射图像 / DO FOR j = 1 to 7 翻转 (x,y) 点如文本所述 DrawTriangleAt (x1,y1,x2,y2,x3,y3) END END

颜色设置

通过摇动屏幕来重新绘制并改变颜色,屏幕会被清除。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485