We want to find a perspective camera lookat
direction
World local up
vector:
Camera lookat
vector:
// Fast sixel encoder for indexed color bitmap terminal graphics | |
// Copyright 2025- Juha Järvi | |
// | |
// Permission to use, copy, modify, and/or distribute this software for any | |
// purpose with or without fee is hereby granted. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH | |
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | |
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, | |
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM |
// Copyright 2025- Juha Järvi | |
// | |
// Permission to use, copy, modify, and/or distribute this software for any | |
// purpose with or without fee is hereby granted. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH | |
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | |
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, | |
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | |
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR |
const std = @import("std"); | |
pub const Sizes = @Vector(4, u6); | |
const debug = true; | |
pub const BitReader = struct { | |
word_buf: [*]const u32, | |
bit_count: u6, | |
bits: u64, |
/* | |
Map index along 2D Hilbert curve to coordinates (x,y) and back, | |
branchless using bit twiddling. | |
Copyright 2012, 2024 Juha Järvi | |
Permission to use, copy, modify, and/or distribute this software for any | |
purpose with or without fee is hereby granted. | |
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH |
Copyright 2024- Juha Järvi | |
Permission to use, copy, modify, and/or distribute this software for any | |
purpose with or without fee is hereby granted. | |
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH | |
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | |
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, | |
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | |
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR |
import { LCS, Interned } from './lcs'; | |
export class Histogram<Token> { | |
constructor(before: Token[], after: Token[]) { | |
let prefix = 0; | |
let beforeEnd = before.length; | |
let afterEnd = after.length; | |
// Skip common prefix. |
We want to find a perspective camera lookat
direction
World local up
vector:
Camera lookat
vector:
const std = @import("std"); | |
/// Given an example struct with methods, create a function that produces vtables for similarly shaped structs. | |
/// A vtable contains function pointers to all the struct methods, with the struct type erased. | |
/// All structs should have an init function that takes an allocator as the first parameter and stores it in a field called "allocator". | |
/// At most 2 parameters are supported for methods (in addition to the initial self parameter). | |
pub fn VTableShape(comptime Template: type) type { | |
var fields = @typeInfo(struct { // | |
deinit: *const fn (*anyopaque) void, | |
}).Struct.fields; |
Copyright (c) 2020- Juha Järvi | |
Permission to use, copy, modify, and/or distribute this software for any | |
purpose with or without fee is hereby granted. | |
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH | |
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | |
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, | |
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | |
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR |
import { Widget } from '@phosphor/widgets'; | |
import { ElementExt } from '@phosphor/domutils'; | |
export class IframePanel extends Widget { | |
constructor(iframe?: HTMLIFrameElement | null) { | |
super({ node: IframePanel.createNode() }); | |
if(!iframe) iframe = document.createElement('iframe'); | |
this.iframe = iframe; |