以数为弦,鸣奏山水清音
“智者乐水,仁者乐山”。山水,是中国传统文化中非常重要的意象,同样也是地理信息可视化中重要的数据载体。
“智者乐水,仁者乐山”。山水,是中国传统文化中非常重要的意象,同样也是地理信息可视化中重要的数据载体。数据是逻辑与参数的产物,山水则是水墨晕染出的化外之境,是写意的情怀。要用理性的数据表现感性的山水,就要找到他们之间编码的通道。
数据的编码与解码
“一画之间,变起伏于锋杪;一点之内,殊衄挫于毫芒。”笔画线条在二维的纸面上演变出悬针垂露、奔雷坠石诸般变化;笔画的粗细转折,对应的则是三维空间中笔的提按绞转;从时间的维度上讲,运腕的迟速又形成了飞白的枯浓变化。可以说,书法是一种四维的艺术。

书法家将三维空间中的提按、运腕的迟速具象化为纸面的万千变化,我们可以将之理解为数据的可视化编码与存储;而我们在欣赏或者临摹一幅书法作品时,又会进入创作者的角色,从二维的线条中反推出笔在空间中的运动轨迹与速度,即数据的解码。当然,对于复杂的书法创作而言,这个数据模型是非常粗略的。
书法中运笔的高下映射为线条的粗细,与此类似的是,为了便于地形信息的存储与运用,我们把海拔的数值映射为颜色的深浅。因此,三维的地形元素也可以使用二维的形式进行存储,x轴、y轴、像素明度分别对应了经度、纬度和海拔。(因常见图像格式仅支持28个亮度数量级,因此用于存储地形信息的图像格式需支持216或更高的图形动态范围。)

普通地形图仅包含海拔高度的信息,因而仅用一个灰度通道即可存储地形信息。若要存储更多维度的信息,如降雨、人口等,则可加入更多的色彩通道,不同的色彩通道根据用途,又有不同大小的动态范围。无数个点位的数据形成一幅图像,反过来说,一幅图像即是一份以矩阵形式组合的数据。

广义地讲,任何可以用数字的形式存储的文档类型,如图像、模型、声音等,都是数据,所不同的是数据的组织形式。一幅画、一段乐曲、一句文案,经由眼耳鼻舌身意,唤起人类朴素的情感;而一旦转换为像素、频谱、字段等数字化的形式,就可以被程序进行运算、加工乃至生成演化出无穷可能。
数据的处理、加工与演化
这里我们以地形图为例,阐述一下如何用数据处理的手法解决设计中的问题。如上文所述,一张黑白地形图中,每一个像素的灰度值映射了海拔的高度。绘制一幅等高线地形图,也就等价为寻找一幅图中灰度接近的点。

将像素的灰度值同时映射为线条的高度,则群山巍峨,浮于纸面。

同理,若要绘制一幅色调分离的地形图,则是将灰度值介于特定区间的像素绘制为同一种色彩。比如将明度处于 60~80 范围内的像素,统一重绘为 70.

将海拔高度映射为颜色,再将镜头置于山谷,则可见山随平野尽,江入大荒流。

以上是从海拔的维度对数据进行处理,如果我们从经纬度出发,譬如将纬度处于特定数值的像素进行单独呈现,并映射对应的海拔,就可以看见起伏的群山脉络。

正弦曲线
除了引用现有的数据进行加工,我们也可以生成数据,以满足特定的需求。一段正弦曲线,y=sin(x) ,通过调整频率和振幅,亦可生出万千变化。


无数条正弦曲线组合成《秋水回波》的浩渺。

Perlin 噪声
如果想要更为多变自然的效果,可以使用 perlin 噪声生成一系列的自然序列。映射为高度则形成山峦的侧影。

多条噪声曲线则渲染出云山叠嶂。


一维的噪声再加一个维度,则形成二维的杂色,再在时间的维度上以perlin曲线震荡,则形成不断翻涌的涟漪,选取亮度等高线,化成粼粼波光。

声音
将一段声音的旋律解析出来,可以发现频谱如山脉一样高低起伏。反过来说,一组数字序列,同样可以转化为声音。

从画笔到数据
由数据驱动可以绘制图形,反过来说,我们在软件的画布中绘制图形同样也是在生成数据。一条飘逸流畅的线条,就是一连串节点与锚点。

通过控制特定的节点实现山脉的起伏。

单独或成组的线条也可以赋予独占的 id ,以进一步关联参数、设定样式、控制显隐。

在立体的场景中,为每一座山峰起一个名字,就可以关联相关的数据,配以镜头,就可以在群山中自由穿行。

通感
钟子期从俞伯牙的琴声里听到了魏巍泰山和洋洋江河,这是从听觉里品味出了视觉的意象。朱自清形容荷塘里斑驳的月色,“如梵婀玲上奏着的名曲”,则是从视觉上品味出音乐的韵律。色声香味触产生了流转腾挪,颜色似乎有温度,声音似乎有形象,冷暖似乎有重量。不同的感官可以感知到相同的感觉,其间的脉络便是数据。若能以数据解构万物,则万物皆可关联参数、向前进化。








































![ZAOV|各[苹]本事](https://img.zcool.cn/community/68d247ffa534901h5u6ly05445.png?x-oss-process=image/resize,m_fill,w_520,h_390,limit_1/auto-orient,1/sharpen,100/quality,q_80)

































