Skip to content

Instantly share code, notes, and snippets.

View coolbutuseless's full-sized avatar

mikefc coolbutuseless

View GitHub Profile
@coolbutuseless
coolbutuseless / pong.R
Created July 24, 2022 00:57 — forked from Enchufa2/pong.R
Pong in R
# remotes::install_github("coolbutuseless/eventloop")
Pong <- R6::R6Class(
"pong",
public = list(
initialize = function(width=10, height=7, speed=0.02) {
require(grid)
private$width <- width
private$height <- height
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Use x11() device as Rstudio device has "issues" with grid.locator()
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
library(grid)
x11(type = 'cairo')
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Some linear-ish points in range/domain [0,1]
@coolbutuseless
coolbutuseless / reactive.Rmd
Created May 5, 2022 21:09
Reactive objects with eventloop
---
title: "Reactive Objects"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Reactive Objects}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# ##### ### # #####
# # # # # # # # #
# # # # # # # #
# ##### # # # # #####
# # # # ####### # #
# # # # # # #
# ####### ### # #####
@coolbutuseless
coolbutuseless / mutate.listframe
Created April 19, 2021 09:47 — forked from MyKo101/mutate.listframe
Application of the mutate method to a listframe
listframe <- function(...){
structure(
tibble(...),
class = c("listframe","tbl_df","tbl","data.frame")
)
}
lf <- listframe(
a = list(1,c("a","b","c"),matrix(1:4,2,2)),
@coolbutuseless
coolbutuseless / ray-tracer.Rmd
Last active July 22, 2021 11:48
Simple ray tracer in Base R
MIT Licensed. Copyright (c) 2021 [email protected]
Share and Enjoy.
## Introduction
This code was a personal challenge to write a simple ray-tracer in pure R.
Ray tracing is an example of something which is really silly to do in base R,
and I'd be interested to see how others would approach this problem.
@coolbutuseless
coolbutuseless / chess-game.R
Created November 5, 2020 20:33
Chess game in R using the stockfish engine
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#' Convert a FEN string to a char matrix representing the chess board.
#'
#' @param fen fen string
#'
#' @return 8x8 character matrix representing the chess board
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fen_to_matrix <- function(fen) {
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@coolbutuseless
coolbutuseless / RTriangle-bug.R
Created October 4, 2020 22:31
RTriangle bug reprex
raw_vec <- as.raw(
c(0x42, 0x0a, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04,
0x00, 0x00, 0x05, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x55, 0x54,
0x46, 0x2d, 0x38, 0x13, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
0x0e, 0x02, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x46, 0x17, 0x5d,
0x74, 0xd1, 0x45, 0xa7, 0x3f, 0x8b, 0x2e, 0xba, 0xe8, 0xa2, 0x8b,
0xee, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x74,
0xd1, 0x45, 0x17, 0x5d, 0x74, 0xd1, 0x3f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xe0, 0x3f, 0x46, 0x17, 0x5d, 0x74, 0xd1, 0x45, 0xe7,
@coolbutuseless
coolbutuseless / RTriangle-segfault.R
Created October 1, 2020 10:26
Input that will segfault RTriangle
S <- structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L,
13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L,
26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L,
39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L,
52L, 53L, 54L, 55L, 56L, 57L, 58L, 59L, 60L, 61L, 62L, 63L, 64L,
65L, 66L, 67L, 68L, 69L, 70L, 71L, 72L, 73L, 74L, 75L, 76L, 77L,
78L, 79L, 80L, 81L, 82L, 83L, 84L, 85L, 86L, 87L, 88L, 89L, 90L,
91L, 92L, 93L, 94L, 95L, 96L, 97L, 98L, 99L, 100L, 101L, 102L,
103L, 104L, 105L, 106L, 107L, 108L, 109L, 110L, 111L, 112L, 113L,
114L, 115L, 116L, 117L, 118L, 119L, 120L, 121L, 122L, 123L, 124L,
@coolbutuseless
coolbutuseless / self-intersecting-polygon-triangulation.R
Last active September 13, 2020 07:10
Triangulation of self-intersecting polyons
library(ggplot2)
df <- data.frame(
x = c(0, 1, 0, 1),
y = c(0, 0, 1, 1)
)
p <- ggplot(df, aes(x, y)) +
geom_polygon() +
geom_point(colour = 'tomato', size = 3) +