• R/O
  • SSH

タグ
未設定

よく使われているワード(クリックで追加)

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

ファイル情報

Rev. 63e30f22681ad7c0e878b9a6acc3578230c8ccdb
サイズ 2,202 バイト
日時 2023-03-02 01:59:18
作者 Lorenzo Isella
ログメッセージ

I added a new script to generate 2D attractors.

内容

rm(list=ls())

library(Rcpp)
library(tidyverse)


cppFunction('DataFrame createTrajectory(int n, double x0, double y0, 
            double a1, double a2, double a3, double a4, double a5, 
            double a6, double a7, double a8, double a9, double a10, 
            double a11, double a12, double a13, double a14) {
            // create the columns
            NumericVector x(n);
            NumericVector y(n);
            x[0]=x0;
            y[0]=y0;
            for(int i = 1; i < n; ++i) {
            x[i] = a1+a2*x[i-1]+ a3*y[i-1]+ a4*pow(fabs(x[i-1]), a5)+ a6*pow(fabs(y[i-1]), a7);
            y[i] = a8+a9*x[i-1]+ a10*y[i-1]+ a11*pow(fabs(x[i-1]), a12)+ a13*pow(fabs(y[i-1]), a14);
            }
            // return a new data frame
            return DataFrame::create(_["x"]= x, _["y"]= y);
            }
            ')
## a1 <- -0.8
## a2 <- 0.4
## a3 <- -1.1
## a4 <- 0.5
## a5 <- -0.6
## a6 <- -0.1
## a7 <- -0.5
## a8 <- 0.8
## a9 <- 1.0
## a10 <- -0.3
## a11 <- -0.6
## a12 <- -0.3
## a13 <- -1.2
## a14 <- -0.3

opt <-  theme(legend.position  = "none",
            panel.background = element_rect(fill="white", color="black"),
            plot.background  = element_rect(fill="white"),
            axis.ticks       = element_blank(),
            panel.grid       = element_blank(),
            axis.title       = element_blank(),
            axis.text        = element_blank())


a1 <- -0.7
a2 <- 0.4
a3 <- -1.1
a4 <- 0.4
a5 <- -0.6
a6 <- -0.1
a7 <- -0.5
a8 <- 0.8
a9 <- 0.96
a10 <- -0.3
a11 <- -0.55
a12 <- -0.2
a13 <- -1.1
a14 <- -0.5



df <- createTrajectory(10000000, 1, 1, a1, a2, a3, a4, a5, a6, 
                       a7, a8, a9, a10, a11, a12, a13, a14)

mx <- quantile(df$x, probs = 0.05)
Mx <- quantile(df$x, probs = 0.95)
my <- quantile(df$y, probs = 0.05)
My <- quantile(df$y, probs = 0.95)

df %>% filter(x > mx, x < Mx, y > my, y < My) -> df

plot <- ggplot(df) +
      geom_point(aes(x, y), shape=46, alpha=0.01, size=0, color="black") +
      scale_x_continuous(expand = c(0,0))+
      scale_y_continuous(expand = c(0,0))+
      coord_fixed() + 
      opt

ggsave("strange.png", plot, height = 4, width = 4, units = 'in', dpi = 1200)

print("So far so good")