Skip to content

Instantly share code, notes, and snippets.

View av01d's full-sized avatar

Arjan Haverkamp av01d

View GitHub Profile
@av01d
av01d / Point2PointDistance.js
Created February 21, 2024 08:30
Javascript Point2PointDistance: Caculate distance (in m) between 2 lat/lng points
const Point2PointDistance = (lat1, lon1, lat2, lon2) => {
const toRad = num => num * Math.PI / 180; // Converts numeric degrees to radians
const R = 6371000, // earth radius, in m
dLat = toRad(lat2 - lat1),
dLon = toRad(lon2 - lon1);
lat1 = toRad(lat1);
lat2 = toRad(lat2);
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
@av01d
av01d / Point2PointBearing.js
Last active February 22, 2024 09:33
Javascript Point2PointBearing: Caculate bearing between 2 lat/lng points
/**
* Calculate bearing (in degrees, 0-360) between two lat/lng points.
*/
const Point2PointBearing = (lat1, lng1, lat2, lng2) => {
const toRad = num => num * Math.PI / 180;
const toDeg = num => num * 180 / Math.PI;
lat1 = toRad(lat1);
lng1 = toRad(lng1);
lat2 = toRad(lat2);
@av01d
av01d / base62.class.php
Last active January 28, 2023 16:48
PHP Base62 encoder/decoder
<?php
class Base62 {
private $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
public function base62Encode(int $num): string {
$res = '';
do {
$res = $this->chars[$num % 62] . $res;
@av01d
av01d / convertDataURItoBinary.js
Created January 20, 2022 13:15
Convert base64 string to Uint8Array (one liner)
/**
* One liner to convert a base64 string to a binary Uint8Array
*
* Example:
* const dataURL = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2w....';
* console.log(convertDataURIToBinary(dataURL));
*/
const convertDataURIToBinary = dataURI =>
Uint8Array.from(window.atob(dataURI.replace(/^data[^,]+,/,'')), v => v.charCodeAt(0));
@av01d
av01d / ColorSteps.js
Last active February 27, 2024 15:42
Javascript calculate color steps (gradient) between two colors
const ColorSteps = (() => {
/**
* Convert any color string to an [r,g,b,a] array.
* @author Arjan Haverkamp (arjan-at-avoid-dot-org)
* @param {string} color Any color. F.e.: 'red', '#f0f', '#ff00ff', 'rgb(x,y,x)', 'rgba(r,g,b,a)', 'hsl(180, 50%, 50%)'
* @returns {array} [r,g,b,a] array. Caution: returns [0,0,0,0] for invalid color.
* @see https://gist.github.com/av01d/8f068dd43447b475dec4aad0a6107288
*/
const colorValues = color => {
@av01d
av01d / colorValues.js
Last active February 9, 2024 16:01
Javascript: Convert any color (hex, hexa, rgb, rgba, hsl, named) to [r,g,b,a] array
/**
* Convert any color string to an [r,g,b,a] array.
* @author Arjan Haverkamp (arjan-at-avoid-dot-org)
* @param {string} color Any color. F.e.: 'red', '#f0f', '#ff00ff', 'rgb(x,y,x)', 'rgba(r,g,b,a)', 'hsl(180, 50%, 50%)'
* @returns {array} [r,g,b,a] array. Caution: returns [0,0,0,0] for invalid color.
*/
const colorValues = color => {
const div = document.createElement('div');
div.style.backgroundColor = color;
document.body.appendChild(div);
@av01d
av01d / getClients.sh
Last active January 15, 2021 09:20
Commandline Bash script for retrieving connected clients from cable modem/router Compal CH7465LG (Ziggo)
#!/bin/bash
#
#--------------------------------------------------------------------
# This script retrieves a list (in XML format) of connected clients
# on a Compal CH7465LG modem/router.
# This modem is provided by various ISPs, a.o:
# - UPC Connect Box (CH)
# - Irish Virgin Media Super Hub 3.0 (IE)
# - Ziggo Connectbox (NL)
# - Unitymedia Connect Box (DE)
@av01d
av01d / jquery.filedropper.js
Created July 23, 2020 07:50
Super simple jQuery file drop plugin
/**
* Very simple file drop plugin
* @author Arjan Haverkamp - webgear.nl
* @date 2019-01-21
*/
(function($) {
$.fn.FileDropper = function(options) {
var settings = $.extend({
// These are the defaults.
@av01d
av01d / convert-canvas-image.js
Created July 23, 2020 07:47
Javsacript: Convert canvas to image, image to canvas
function convertImageToCanvas(image) {
var canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;
canvas.getContext("2d").drawImage(image, 0, 0);
return canvas;
}
function convertCanvasToImage(canvas) {
var image = new Image();
@av01d
av01d / file2bitmap.js
Created July 23, 2020 07:46
File to Bitmap (on canvas)
/* HTML:
<input type="file" id="filepicker">
<canvas id="outCanvas"></canvas>
*/
filepicker.addEventListener("change", () => {
createImageBitmap(filepicker.files[0])
.then(response => {
outCanvas.width = response.width;
outCanvas.height = response.height;