java – 方程驱动平滑阴影同心圆形

背景

期待创造有趣的视频转换(灰度)。

问题

给出了表示封闭对称形状的equations,绘制轮廓并将其形状朝向其中心同心。

考虑以下公式:

x = 16 * sin(t)^3
y = 13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t)
t = [0:2 * pi]

绘制时:

当阴影时,它将类似(未显示完全阴影,但足以显示想法):

请注意,阴影在外部是最暗的(例如,#000000 RGB十六进制),然后在填充到中心时变亮。中心将是白色(例如#FFFFFF)点。

问题

>生成高分辨率,同心圆度的灰度图像是最方便的方法,比如上面阴影的心脏是什么?
什么是正式称为封闭的,对称的形状?

谢谢!

思路

>使用库,如http://code.google.com/p/jmathplot/
>使用GNUPlot
>使用R
>使用Wolfram Alpha绘制,使用ImageMagick创建较小的同心版本

在R中试试

# create palette
greyScale <- colorRampPalette(c("black","white"))

# function to draw shape
plotHeart <- function(r, col){
  t <- seq(0,2*pi,length.out=100)
  x <- r*sin(t)^3
  y <- (13*r/16)*cos(t) - (5*r/16)*cos(2*t) - (2*r/16)*cos(3*t) - (r/16)*cos(4*t)
  polygon(x,y,col=col,border=NA)
}



# create new plot canvas
plot.new()
# limits are approximate here
plot.window(xlim=c(-16,16),ylim=c(-16,13))

# use mapply to loop
mapply(plotHeart,seq(16,0,length.out=100),greyScale(100))

其结果如下:

这通过反复绘制尺寸减小和颜色不同的填充多边形。回答你的问题:

(1)这是由我的机器(一个适度的Core 2双核笔记本电脑)在0.09秒内生产的。他们可能是其他更快的语言/实现,但对我来说似乎很快。

(2)由不与其他线交叉的线构成的平面形状通常被称为简单多边形。

http://stackoverflow.com/questions/6542825/equation-driven-smoothly-shaded-concentric-shapes

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 方程驱动平滑阴影同心圆形