• R/O
  • SSH

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

修订版0215a98b26e7b59f4203ce9f60b7e9e4edb9f643 (tree)
时间2023-02-07 08:17:57
作者Lorenzo Isella <lorenzo.isella@gmai...>
CommiterLorenzo Isella

Log Message

A function to create artwork.

更改概述

差异

diff -r 626baeef9bc4 -r 0215a98b26e7 R-codes/artwork_function.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/R-codes/artwork_function.R Tue Feb 07 00:17:57 2023 +0100
@@ -0,0 +1,91 @@
1+rm(list=ls())
2+
3+library(data.table)
4+library(scattermore)
5+library(viridis)
6+
7+makeStreams <- function(startpos,m=100,FUN,d=0.1){
8+ pos=matrix(nrow=length(startpos), ncol=m)
9+ pos2=matrix(nrow=length(startpos), ncol=m)
10+ pos[,1] <- startpos
11+ pos2[,m] <- startpos
12+ for(i in 2:m){
13+ v <- FUN(pos[,i-1])
14+ pos[,i] <- pos[,i-1] + d * v/Mod(v)
15+ }
16+ for(i in (m-1):1){
17+ v <- FUN(pos2[,i+1])
18+ pos2[,i] <- pos2[,i+1] - d * v/Mod(v)
19+ }
20+ pos <-cbind(pos,pos2) |> as.vector()
21+ cbind(Re(pos),Im(pos))
22+}
23+
24+flowFunction <- function(z) {
25+ fz = z-zeros[1]
26+ for(i in zeros[-1]) fz = fz * (z-i)
27+ for(i in poles) fz = fz / (z-i)
28+ fz/Mod(fz)
29+ }
30+
31+
32+
33+set.seed(1211)
34+
35+## polesandzeros <- seq(-1,1,l=40)-0.5i*seq(-1,1,l=40) +
36+## .7i*seq(-1,1,l=40)^2 - .3i
37+
38+
39+polesandzeros <- seq(-1,1,l=40)-0.5i*seq(-1,1,l=40) ## +
40+ ## .7i*seq(-1,1,l=40)^2 - .3i
41+
42+
43+pole = rbinom(39, 1,0.2 ## 0.5
44+ )
45+poles = polesandzeros[pole==1]
46+zeros = polesandzeros[pole==0]
47+
48+
49+
50+
51+
52+
53+N=60000
54+startZ <- c(
55+ 0.5*exp(2i * pi * seq(0,1,l=N/6)),
56+ 0.3*exp(2i * pi * seq(0,1,l=N/6)),
57+ 0.4*exp(2i * pi * seq(0,1,l=N/6)),
58+ 0.6*exp(2i * pi * seq(0,1,l=N/6)),
59+ 0.8*exp(2i * pi * seq(0,1,l=N/6)),
60+ 1.0*exp(2i * pi * seq(0,1,l=N/6))
61+ )
62+
63+pos <- makeStreams(startZ,m= 500
64+ ,FUN=flowFunction,d=0.0025 ## 0.005
65+ )
66+
67+## col=rep(c(hsv(0, 1,0.5,0.4),
68+## hsv(0.0,1,0.5,0.4),
69+## hsv(0.1,1,0.5,0.4),
70+## hsv(0.9,1,0.5,0.4),
71+## hsv(0.8,1,0.5,0.4),
72+## hsv(1, 1,0.5,0.1)
73+## ), each=N/6)
74+
75+
76+col=rep(mako(10)[1:6], each=N/6)
77+
78+
79+col <- rep(col,1000)
80+
81+png("my_artwork.png", width=5000, height=5000)
82+par(mar=0.1*c(1,1,1,1), bg="#dddddd")
83+scattermoreplot(pos,size=c(3000,3000),
84+ xlim=c(-1,1),
85+ ylim=c(-1,1),
86+ col=col,
87+ axes=F)
88+dev.off()
89+
90+
91+print("So far so good")