java - 方程驱动的平滑阴影同心形状

标签 java r math parametric-equations

背景

希望创建有趣的视频过渡(灰度)。

问题

给定 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)点。

问题

  1. 生成高分辨率、同心阴影灰度图像(例如上面的阴影心形)最方便的方法是什么?
  2. 这种封闭、对称的形状正式名称是什么?

谢谢!

想法

最佳答案

在 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))

结果:

Filled heart plot

这是通过重复绘制尺寸减小且颜色不同的填充多边形来实现的。回答您的问题:

(1) 这是由我的机器(一台普通的 Core 2 duo 笔记本电脑)在 0.09 秒内生成的。它们可能是其他更快的语言/实现,但这对我来说似乎足够快。

(2) 由不相交的线组成的平面形状通常称为简单多边形。

关于java - 方程驱动的平滑阴影同心形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542825/

相关文章:

r - 在 R 中没有重复组星座的子组中对多个个体进行采样

曲线的 "flattness"的数学指标?

java - 中位数算法的中位数不能始终如一地工作

java - 使用 HTTPS URL 连接到远程 mysql 数据库

r - 对子组内 R 数据框中的数据进行排序

r - mutate_if、summary_at 等强制 data.table 到 data.frame

php - 将数学放入 sql 查询中

algorithm - 仅使用三个乘法的复数乘积

java - 使用其他包名称导入 eclipse 项目? - eclipse /安卓

java - 从接口(interface)对象转换为实现它的类的对象?