A simple C library implementing the compression algorithm for isosceles triangles.

Overview

orvaenting

Summary

A simple C library implementing the compression algorithm for isosceles triangles.

License

This project's license is GPL 2 (as of June 1991). The whole license text can be found in LICENSE in the main directory of this repository. The brief version of the license is as follows:

Copyright (C) 2021 Kevin Matthes

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

When compiling a printable version of this documentation using pandoc, the full license will be attached automatically to the resulting document.

Introduction

Isosceles triangles have the interesting property of being compressible into a single real number within the range $(0, 2)$. When keeping at least one side's length, both its side lengths and angles can be restored without any loss of information.

This approach, the Örvænting Theorem, allows speeding up calculations regarding isosceles triangles.

Let $A, B, C \in \mathbb R ^ d, , d \in [2, \infty) \cap \mathbb N$ form an isosceles triangle assuming the Fifth Euclidian Postulate to be fulfilled. Then, \begin{align*} \textit {\textrm \th} &= 2 \cdot \sin \left( \frac \gamma 2 \right) \ \gamma &= 2 \cdot \arcsin \left( \frac {\textit {\textrm \th}} 2 \right) \end{align*} describe the instructions in order to compress and decompress the resulting isosceles triangle with

  • $\textit {\textrm \th} = \frac g s$ being the Side Ratio of Main Side $g$ and Further Side $s$.
  • $\gamma$ being the angle facing $g$.

This repository provides three sample C implementations for each of these formulas.

Build Instructions

liborvaenting.a

The library with all utility functions can be created by calling

make liborvaenting.a

orvaenting.pdf

In order to create a printable version of this documentation, just call

make orvaenting.pdf

Citing this Repository

When referring to this repository, please use the following Bib\TeX\ entry:

@online{orvaenting,
    author      =   {{M}atthes, {K}evin},
    title       =   {\"{O}rv\ae nting},
    subtitle    =   {{T}he {C}ompression {A}lgorithm for {I}sosceles {T}riangles},
    url         =   {https://github.com/kevinmatthes/orvaenting},
}
You might also like...
A variation CredBandit that uses compression to reduce the size of the data that must be trasnmitted.

compressedCredBandit compressedCredBandit is a modified version of anthemtotheego's proof of concept Beacon Object File (BOF). This version does all t

Data compression utility for minimalist demoscene programs.

bzpack Bzpack is a data compression utility which targets retrocomputing and demoscene enthusiasts. Given the artificially imposed size limits on prog

gzip (GNU zip) is a compression utility designed to be a replacement for 'compress'

gzip (GNU zip) is a compression utility designed to be a replacement for 'compress'

A C++ static library offering a clean and simple interface to the 7-zip DLLs.

bit7z A C++ static library offering a clean and simple interface to the 7-zip DLLs Supported Features • Getting Started • Download • Requirements • Bu

Simple data packing library (written in C99)

Features Compressed file pack creation Runtime file pack reading Supported operating systems Ubuntu MacOS Windows Build requirements C99 compiler CMak

miniz: Single C source file zlib-replacement library, originally from code.google.com/p/miniz

Miniz Miniz is a lossless, high performance data compression library in a single source file that implements the zlib (RFC 1950) and Deflate (RFC 1951

Fork of the popular zip manipulation library found in the zlib distribution.

minizip-ng 3.0.0 minizip-ng is a zip manipulation library written in C that is supported on Windows, macOS, and Linux. Developed and maintained by Nat

Fork of the popular zip manipulation library found in the zlib distribution.

minizip-ng 3.0.1 minizip-ng is a zip manipulation library written in C that is supported on Windows, macOS, and Linux. Developed and maintained by Nat

PhysFS++ is a C++ wrapper for the PhysicsFS library.

PhysFS++ PhysFS++ is a C++ wrapper for the excellent PhysicsFS library by Ryan C. Gordon and others. It is licensed under the zlib license - same as P

Owner
Kevin Matthes
Kevin Matthes
Zstandard - Fast real-time compression algorithm

Zstandard, or zstd as short version, is a fast lossless compression algorithm, targeting real-time compression scenarios at zlib-level and better comp

Facebook 19.2k Jan 1, 2023
Better lossless compression than PNG with a simpler algorithm

Zpng Small experimental lossless photographic image compression library with a C API and command-line interface. It's much faster than PNG and compres

Chris Taylor 214 Dec 23, 2022
Multi-format archive and compression library

Welcome to libarchive! The libarchive project develops a portable, efficient C library that can read and write streaming archives in a variety of form

null 1.9k Jan 8, 2023
LZFSE compression library and command line tool

LZFSE This is a reference C implementation of the LZFSE compressor introduced in the Compression library with OS X 10.11 and iOS 9. LZFSE is a Lempel-

null 1.7k Jan 4, 2023
Small strings compression library

SMAZ - compression for very small strings ----------------------------------------- Smaz is a simple compression library suitable for compressing ver

Salvatore Sanfilippo 1k Dec 28, 2022
A massively spiffy yet delicately unobtrusive compression library.

ZLIB DATA COMPRESSION LIBRARY zlib 1.2.11 is a general purpose data compression library. All the code is thread safe. The data format used by the z

Mark Adler 4.1k Dec 30, 2022
Advanced DXTc texture compression and transcoding library

crunch/crnlib v1.04 - Advanced DXTn texture compression library Public Domain - Please see license.txt. Portions of this software make use of public d

null 775 Dec 26, 2022
Brotli compression format

SECURITY NOTE Please consider updating brotli to version 1.0.9 (latest). Version 1.0.9 contains a fix to "integer overflow" problem. This happens when

Google 11.7k Dec 29, 2022
Lossless data compression codec with LZMA-like ratios but 1.5x-8x faster decompression speed, C/C++

LZHAM - Lossless Data Compression Codec Public Domain (see LICENSE) LZHAM is a lossless data compression codec written in C/C++ (specifically C++03),

Rich Geldreich 641 Dec 22, 2022
A bespoke sample compression codec for 64k intros

pulsejet A bespoke sample compression codec for 64K intros codec pulsejet lifts a lot of ideas from Opus, and more specifically, its CELT layer, which

logicoma 34 Jul 25, 2022