解名缰 鸟倦飞

我的中国心®

2009 年 10 月 06 日 | 分类于 R

国庆那天ID为微微的朋友在COS论坛的R版发了一个帖子,名叫“灌灌水庆庆生”,里面是用随机点图描绘的一幅漂亮的中国心。当时突然想起来以前在百度贴吧看到的一个帖子,是用一个曲面方程画出一颗立体的心形,于是乎,我就委托Mr. R照着方程的样子也画了一颗。

方程的形式虽然简洁,但画起来可不容易,每画一个点就要解一个方程,而且经常出现斜率不存在的点,所以如果只从一个方向上来画,难免会得出NA解,使得原本光滑的曲面出现很多漏洞(如下图)。

h01h02

就因为这样,暂时的解决办法就是从两个相互垂直的方向分别画出曲面,然后把它们重叠起来,将各自的漏洞都填补好。最后再利用rgl包的贴图功能,在心上“贴好”五星红旗,一颗中国心就完成了。

heart_snapshot01 heart_snapshot02 heart_snapshot03

附:R源文件和用来贴图的国旗(因为贴图的位置需要做了镜像变换)。点击这里下载。

运行程序时设好工作空间,可能会有些慢,想要加快些速度可以把程序中的n=100改小一些,当然图形的精细度会略微差些。

另:老大说可以放到fun包里,那是不是得“普世”一点了?比如贴个R上去?:)