Skip to content

Instantly share code, notes, and snippets.

View Erkaman's full-sized avatar

Eric Arnebäck Erkaman

View GitHub Profile
@Erkaman
Erkaman / partition_of_unity.cpp
Last active April 22, 2018 11:02
Program that provides empirical evidence that the clamped cosine lobes 0.5cos^2 and (5/6)cos^4 form a partition of unity over the unit sphere. This is related to the ambient dice paper: http://www.ppsloan.org/publications/AmbientDice.pdf
#include <stdio.h>
#include <math.h>
float max(float x, float y) {
return x > y ? x : y;
}
class vec3 {
public:
float x;
@Erkaman
Erkaman / kmeans_color_quantization.cpp
Last active January 29, 2018 09:14
This program implements color quantization with K-means clustering using Lloyd's algorithm
/*
The MIT License (MIT)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
@Erkaman
Erkaman / broken.cpp
Created November 14, 2017 18:47
Program that results in "An internal error has occurred in the compiler" for VC++ in VS 15.4.4
class Foo{};
int main(){
Foo foos[1] = { Foo()};
auto lambdaFunctionThatDoesNothing = [foos]() { };
}
@Erkaman
Erkaman / shoelace.cpp
Last active October 29, 2017 17:42
Accompanying source code for my article: https://erkaman.github.io/posts/area_convex_polygon.html
/*
This software is released under the MIT license:
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
/*
The MIT License (MIT)
Copyright (c) 2017 Eric Arnebäck
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
/*
The MIT License (MIT)
Copyright (c) 2017 Eric Arnebäck
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
@Erkaman
Erkaman / fragment_shader.glsl
Last active April 5, 2017 19:37
broken shader. please check the comments at end of fragment shader.
#version 430
#define GLUINT_MAX 4294967295
#define NULL_NODE (GLUINT_MAX - 0)
#define SUBDIVIDE_NODE (GLUINT_MAX - 1)
#define LEAF_NODE (GLUINT_MAX - 2)
// node in the octree.
struct OctNode {
@Erkaman
Erkaman / broken_shader.fs
Created February 20, 2017 16:39
broken_shader.vs is the broken shader.
// empty fragment shader.
void main()
{
}
@Erkaman
Erkaman / gist:84403e52ce194a168e5112b13ca4e85a
Created January 29, 2017 13:10
Cholesky Decomposition Explanation.
############################################################
How to solve a matrix equation with Cholesky Decomposition
############################################################
We want to solve the matrix equation Ax=b. So we want x. The Cholesky decomposition of A is just
the matrix product A = L(L^T). Where L is some lower triangular matrix, and L^T is its transpose.
So L^T is upper triangular. See wikipedia an example of such a decomposition:
https://en.wikipedia.org/wiki/Cholesky_decomposition#Example
If we now substitute our decomposition of A into our equation we get
/*
The MIT License (MIT)
Copyright (c) 2016 Eric Arnebäck
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is