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

### Related tags

Compression orvaenting

# 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},
}

##### 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

###### 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

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

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

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-

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

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

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

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

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),

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

34 Jul 25, 2022