Skip to content

Instantly share code, notes, and snippets.

View TheSeamau5's full-sized avatar

Hassan Hayat TheSeamau5

  • Entrepreneur
  • Austin, TX
View GitHub Profile
@TheSeamau5
TheSeamau5 / HelloTriangle.elm
Created May 5, 2014 02:06
Hello Triangle in WebGL in Elm
import MJS (..)
import Graphics.WebGL (..)
main = webgl (400, 400) scene
type Point = {point : V3}
toPoint vector = { point = vector }
triangle : V3 -> V3 -> V3 -> Triangle Point
triangle p1 p2 p3 = (toPoint p1, toPoint p2, toPoint p3)
@TheSeamau5
TheSeamau5 / JuliaSets.elm
Created May 7, 2014 22:13
Julia Sets in Elm
------------------------------------------------
-- GLOBAL VARIABLES TO PLAY WITH
------------------------------------------------
-- number of iterations of the Julia Set
maxIterations : Int
maxIterations = 100
-- The constant c used in the julia function
@TheSeamau5
TheSeamau5 / IsometricBoard.elm
Last active December 29, 2015 21:52
How to make a simple isometric 2D Board in Elm
------------------------------------------------
-- 2D Point Type
type Point = {
x : Float,
y : Float
}
-- Convert Point to a tuple of floats
toTuple : Point -> (Float, Float)
toTuple point = (point.x, point.y)
@TheSeamau5
TheSeamau5 / HexagonalGrid.elm
Last active August 29, 2015 14:10
How to make a simple hexagonal grid in Elm
import List (..)
import Graphics.Collage (..)
import Graphics.Element (..)
import Color (..)
------------------------------------------
-- 2D Point Type
type alias Point = {
x : Float,
y : Float
@TheSeamau5
TheSeamau5 / RotatingCube.elm
Created December 3, 2014 16:50
Idea for making 3D objects
import Graphics.WebGL as GL
import Math.Vector3 as GL
import Math.Matrix4 as GL
type Point = {
x : Float,
y : Float,
z : Float
}
@TheSeamau5
TheSeamau5 / SimpleRotatingCube.elm
Created December 5, 2014 06:03
Simple Rotating Cube in Elm
import Graphics.WebGL (..)
import Math.Vector3 (..)
import Math.Matrix4 (..)
type Attribute = {position : Vec3}
type Uniform = { rotationMatrix : Mat4}
type Varying = {}
mapMesh : (a -> b) -> [Triangle a] -> [Triangle b]
mapMesh = map << mapTriangle
@TheSeamau5
TheSeamau5 / Quickcheck.elm
Last active August 29, 2015 14:11
Quickcheck in Elm
quickCheck : Generator a -> Int -> (a -> Bool) -> String
quickCheck randomGenerator numberOfCases testingCondition =
let listGenerator = list numberOfCases <| randomGenerator
testInputs = fst <| generate listGenerator (initialSeed 1)
getOutput input = (input, testingCondition input)
testOutputs = map getOutput testInputs
failingOutputs = filter (\x -> (snd x) == False) testOutputs
successString = "Ok, passed " ++ (toString numberOfCases) ++ " tests."
failingString fail = "The following input has failed the test: " ++ (toString fail)
in
@TheSeamau5
TheSeamau5 / Interleave.elm
Last active August 29, 2015 14:11
Interleave two lists in Elm
interleave : List a -> List a -> List a
interleave list1 list2 =
case list1 of
[] -> list2
x :: xs ->
case list2 of
[] -> list1
y :: ys -> y :: x :: interleave xs ys
@TheSeamau5
TheSeamau5 / CatmullClarkSubdivision2D.elm
Last active August 29, 2015 14:11
2D Catmull Clark Subdivision in Elm
import Graphics.Collage (move, filled, circle, Form, collage)
import Graphics.Element (Element)
import List (map, map2, (::), head, tail)
import Color (rgb)
--- GLOBALS YOU CAN MESS WITH
pointSize = 3 -- THE SIZE OF THE POINTS
pointColor = rgb 255 100 0 -- THE COLOR OF THE POINTS
iterations = 5 -- NUMBER OF ITERATIONS OF CATMULL-CLARK SUBDIVISION
@TheSeamau5
TheSeamau5 / MapAll.elm
Created December 17, 2014 23:12
MapAll Function in Elm. Applies a 2-ary function to each element in a list to each element in a list
mapAll : (a -> a -> a) -> List a -> List (List a)
mapAll f list =
let innerMapAll f tempList =
case tempList of
[] -> []
x :: xs -> map (f x) list :: innerMapAll f xs
in innerMapAll f list