N久前看了蓝枫斑竹的太极图后想起来画的,现在正好给祖国庆生。

在下的代码先就不放了,因为我在网上见过其他版本的心——答案是丰富多彩的,感兴趣的同学不妨一试。

顺便给个疑似心形的方程,仅供参考。

17x216xy+17y2=22517x^2-16|x|y+17y^2=225

这两天想利用这方程再做一个版本,因为解二次方程无能而未遂……
所以恳请各位前辈指教R怎样解二次方程?

可以试试polyroot。分x>=0和x<0分别算。
赞!

有艺术细胞的人就是不一样啊!
多谢楼上的各位版大!其实那灵感完全是从蓝枫那儿来的~多谢呀

乐意分享🙂

# heart
n <- 30000
p <- sort(runif(n, min = 0, max = pi))
p <- sin(p) + rnorm(n)
plot(sort(rnorm(n)), -p,
  col = "red", pch = "·", axes = F, ylab = "",
  xlab = paste("By 微微", Sys.Date()), main = "Happy Birthday"
)
# stars
p <- c()
q <- c()
rr <- c(0.68, rep(0.32, 4))
# locator()定的下面坐标,精确但不准确。
m <- c(-1.2511927, -0.7707085, -0.5538095, -0.6129638, -0.8293381)
n <- c(-0.079779159, 0.42312375, 0.05632304, -0.45719796, -0.8440031)
for (k in c(1:5))
{
  r <- rr[k]
  for (i in 1:5)
  {
    p[2 * i - 1] <- sin(pi * 18 / 90) / sin(pi * 54 / 90) * r * sin(pi * (i * 72 + 36) / 90)
    q[2 * i - 1] <- sin(pi * 18 / 90) / sin(pi * 54 / 90) * r * cos(pi * (i * 72 + 36) / 90)
    p[2 * i] <- sin(pi * 18 / 90) / sin(pi * 54 / 90) * 0.38 * r * sin(pi * (i * 72 + 18) / 90)
    q[2 * i] <- sin(pi * 18 / 90) / sin(pi * 54 / 90) * 0.38 * r * cos(pi * (i * 72 + 18) / 90)
  }
  x <- c(p[1], p[2], p[5], p[6], p[9], p[10], p[3], p[4], p[7], p[8], p[1])
  y <- c(q[1], q[2], q[5], q[6], q[9], q[10], q[3], q[4], q[7], q[8], q[1])
  x <- x + m[k]
  y <- y + n[k]
  polygon(x, y, col = "yellow", border = "yellow")
}

我也来凑凑热闹,做了一个rgl版的“我的中国心”,资料来源:http://tieba.baidu.com/f?ct=335675392&tn=baiduPostBrowser&sc=5158824889&z=511497934&pn=0&rn=30&lm=0&word=%CA%FD%D1%A7#5158824889



这个帖子给出了心形的曲面方程,形式比较简洁,但画起来比较困难,因为有很多斜率不存在的点,因此只能从多个方向同时贴图才能画出来。代码比较长,就放附件里了,运行的时候记得把工作空间设在代码所在的文件夹中,因为有个贴图文件flag.png。程序运行可能比较慢,耐心等会儿,也可以把里面的n调小一点,用精细度换取时间。这里给出几张截图。

厉害呀!引得良玉了~~

看来咱COS里也有不少同志混数学吧涅,没准儿还能有仰慕过的几枚马甲 [s:13]  
加入fun包吧。每个月给r-pkgs发一封邮件,大家肯定会感兴趣的,哈哈
9 天 后

我把这两个例子都发到fun包中了,过两天R-Forge编译好了之后大家可以install.packages("fun", repos="http://R-Forge.R-project.org"),然后demo("ChinaHeart3D")看Ihavenothing的3D版本,demo("ChinaHeart2D")看微微的2D版本。

Linux用户或者装了Rtools的Windows用户可以自己下载源代码编译(svn checkout)。

    10 年 后