ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Hans Hagen via ntg-context <ntg-context@ntg.nl>
To: Henning Hraban Ramm via ntg-context <ntg-context@ntg.nl>
Cc: Hans Hagen <j.hagen@freedom.nl>
Subject: Re: [NTG-context] Kaktovik numerals
Date: Tue, 18 Apr 2023 15:01:03 +0200	[thread overview]
Message-ID: <36ebea96-afba-0f82-fcf3-a8b267eecbbc@freedom.nl> (raw)
In-Reply-To: <9cea297c-2d20-f3fc-2fd6-5a46a974873f@fiee.net>

[-- Attachment #1: Type: text/plain, Size: 682 bytes --]

On 4/18/2023 10:57 AM, Henning Hraban Ramm via ntg-context wrote:
> I just came across this thread about the base-20 system of the Inuit 
> people and the numerals invented for it in the 1990s:
> https://mathstodon.xyz/@johncarlosbaez/110215432175491555
> 
> This makes simple calculations just beautiful.
interesting ... quick hack attached

Hans

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------

[-- Attachment #2: meta-imp-kaktovik.pdf --]
[-- Type: application/pdf, Size: 13815 bytes --]

[-- Attachment #3: meta-imp-kaktovik.mkxl --]
[-- Type: text/plain, Size: 4328 bytes --]

%D \module
%D   [       file=meta-imp-kaktovik,
%D        version=2023.04.18,
%D          title=\METAPOST\ Graphics,
%D       subtitle=Kaktovik Numbers,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

%D Just a quick hack for Hraban (after a post on the mailing list).

\startMPcalculation{simplefun}

    path kaktovik_glyphs[] ;

    def InitializeKaktovik =

        save p, d, u ;

        pair p[] ; numeric d ; d := .1 ; numeric u ; u := .15 ;

      % d := getparameterdefault "mpsfont" "d" .10 ;
      % u := getparameterdefault "mpsfont" "u" .15 ;

        p[0] := (0,1) ;
        p[1] := (1,0) ;
        p[2] := (2,1 -  d) ;
        p[3] := (3,0) ;
        p[4] := (4,1 - 2d) ;

        p[5] := (4,1 +  u) ;
        p[6] := (0,1 + 2u) ;
        p[7] := (4,1 + 4u) ;

        kaktovik_glyphs[0] := (1,1)  { right } .. { left } (2,1/2) { left } .. { right } (3,1);

        for i= 1 upto 4 :
            kaktovik_glyphs[i] := p[0] for j=1 upto i : -- p[j] endfor ;
        endfor ;

        kaktovik_glyphs[ 5] := p[5] -- p[0] ;                for i= 6 upto  9 : kaktovik_glyphs[i] := p[5] -- kaktovik_glyphs[i-5] ; endfor ;
        kaktovik_glyphs[10] := p[6] -- kaktovik_glyphs[ 5] ; for i=11 upto 14 : kaktovik_glyphs[i] := p[6] -- kaktovik_glyphs[i-5] ; endfor ;
        kaktovik_glyphs[15] := p[7] -- kaktovik_glyphs[10] ; for i=16 upto 19 : kaktovik_glyphs[i] := p[7] -- kaktovik_glyphs[i-5] ; endfor ;

    enddef ;

    vardef Kaktovik(expr i) =
        draw image (
            draw kaktovik_glyphs[i]
                xscaled (10/20 -1/20)
                yscaled (25/20 -2/20)
                withpen (pencircle xscaled 1/20 yscaled 5/20) rotated -(2*20)
              % withpen (pencircle xscaled 1/40 yscaled 5/40) rotated -(2*20)
              % withpen (pencircle xscaled 2.5/40 yscaled 5/40) rotated -(2*20)
            ;
        ) shifted (2/20,2/20)
    enddef ;

    lmt_registerglyphs [
        name     = "kaktovik",
        units    = 2,
        usecolor = true,
        width    = 2,
        height   = 2,
        depth    = 0,
        preamble = "InitializeKaktovik"
    ] ;

    for i=0 upto 19 :
        lmt_registerglyph [
            category = "kaktovik",
            unicode  = 119488 + i, % "0x1D2C0"
            code     = "Kaktovik(" & decimal i & ")"
        ] ;
    endfor ;

\stopMPcalculation

\startluacode
    interfaces.implement {
        name      = "kaktoviknumerals",
        arguments = "integer",
        actions   = function(n)
            local digits = { }
            local count  = 1
            while true do
                digits[count] = utf.char(0x1D2C0 + (n % 20))
                n = n // 20
                if n == 0 then
                    break;
                end
                count = count + 1
            end
            context("%t",digits)
        end
    }
\stopluacode

\unprotect

\permanent\def\kaktoviknumerals#1{\clf_kaktoviknumerals\numexpr#1\relax}

\defineconversion [kaktoviknumerals] [\kaktoviknumerals]
\defineconversion [K]                [\kaktoviknumerals]

\definefontfeature
  [kaktovik]
  [metapost=kaktovik]

\protect

\continueifinputfile{meta-imp-kaktovik.mkxl}

\definefontfeature
  [default]
  [default]
  [metapost=kaktovik]
% [metapost={category=kaktovik,u=.25,d=.20,x=}]

\setupbodyfont[dejavu]

% \nopdfcompression

\startTEXpage[offset=1ts,width=3es]

    \start
    \showglyphs
        KAKTOVIK
        \dostepwiserecurse{0}{19}{1}{\kaktoviknumerals{#1}\space }
    \stop

    kaktovik \start
        \red\glyphxscale 700
        \dostepwiserecurse{0}{19}{1}{\kaktoviknumerals{#1}\space }
    \stop

    \startitemize[packed,K][color=orange,stopper=]
        \startitem first  \stopitem
        \startitem second \stopitem
        \startitem third  \stopitem
    \stopitemize

    KAKTOVIK \start
        \red  \kaktoviknumerals{2023} --
        \green\kaktoviknumerals{4}    --
        \blue \kaktoviknumerals{18}
    \stop

    KAKTOVIK
\stopTEXpage



[-- Attachment #4: Type: text/plain, Size: 496 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : https://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : https://contextgarden.net
___________________________________________________________________________________

  parent reply	other threads:[~2023-04-18 13:01 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-18  8:57 Henning Hraban Ramm via ntg-context
2023-04-18  9:23 ` Arthur Rosendahl via ntg-context
2023-04-18 13:01 ` Hans Hagen via ntg-context [this message]
2023-04-18 13:52   ` Willi Egger via ntg-context
2023-04-19 12:29   ` Henning Hraban Ramm via ntg-context
2023-04-18 13:41 ` Willi Egger via ntg-context
2023-04-18 15:50 ` Rudolf Bahr via ntg-context
2023-04-18 17:19 ` Otared Kavian via ntg-context
2023-04-19 15:17 ` Willi Egger via ntg-context
2023-04-19 18:36 ` Willi Egger via ntg-context
2023-04-19 18:58   ` Gavin via ntg-context
2023-04-19 20:45     ` Willi Egger via ntg-context
2023-04-19 21:41       ` Hans Hagen via ntg-context
2023-04-20 16:06         ` Willi Egger via ntg-context

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=36ebea96-afba-0f82-fcf3-a8b267eecbbc@freedom.nl \
    --to=ntg-context@ntg.nl \
    --cc=j.hagen@freedom.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).