Skip to main content

ThresholdFloor

ThresholdFloor is a geolocated simulation of light, shadow, and sky.

It answers a very old question:

If I stand here, what is the sky doing right now?

Where MoonTime tracks cycles, and AetherField tracks positions, ThresholdFloor brings those movements down to Earth — into light, into shadow, into place.


🌍 What It Does

ThresholdFloor creates a virtual “floor” at a real location on Earth and lets you observe:

  • ☀️ The Sun’s angle across the sky
  • 🌗 The shifting length and direction of shadows
  • 🌅 Sunrise and sunset behavior
  • 🌞 Seasonal turning points (equinoxes, solstices)
  • 🌌 Zodiac regions above and below the horizon

It turns celestial motion into something physical:

light touching ground


🧭 Core Idea

In many ancient systems, knowledge of time and season did not come from clocks.

It came from:

  • shadows on the ground
  • the angle of light
  • where the sun rose and set

ThresholdFloor recreates that perspective computationally.

Instead of asking:

What time is it?

You can ask:

Where is the light?


🚀 Quick Example

from thresholdfloor import ThresholdFloor as tf

def test_one():

    tfloor = tf(
        name="meow meow tehran",
        latitude=35.6892,
        longitude=51.3890,
        tz="Asia/Tehran"
    )

    print(tfloor.get_phase())  # Shadow-based phase

    tfloor.sigil()  # Visual representation of current state

    hkfloor = tf(
        "meow meow hongkong",
        22.3027,
        114.1772,
        "Asia/Hong_Kong",
        elevation_m=958
    )

    sigil = hkfloor.sigil(show=False)

    print(hkfloor.get_sunrise())  # Sunrise angle

    bfloor = tf(
        "meow meow beijing",
        39.9075,
        116.3972,
        "Asia/Shanghai",
        elevation_m=50
    )

    print(bfloor.as_above())  # Zodiac above horizon
    print(bfloor.so_below())  # Zodiac below horizon

    tofloor = tf(
        "meow meow tokyo",
        35.68972,
        139.69222,
        "Asia/Tokyo"
    )

    print(tofloor.now())      # Local MoonTime
    print(tofloor.observe())  # Current solar geometry

🌞 Solar Cycle Example

def test_two():

    jfloor = tf(
        "Jericho",
        latitude=31.871,
        longitude=35.443,
        tz="Asia/Jerusalem"
    )

    # Configure observation point
    jfloor.configure_gatehouse(31.8720, 35.4440, -245.0, bearing_deg=90.7)

    # Compute solstice anchors
    summer, winter = jfloor.compute_solstice_anchors()

    # Lay out solar markers across the year
    jfloor.auto_layout_gate_posts_across_solar_range(
        start_date=winter,
        days=366,
        num_pegs=7,
    )

    # Scan solar cycle into months
    result = jfloor.scan_solar_cycle_for_months(winter, days=366)

    for m in range(1, 13):
        print(f"Month {m}: first hit on {result['first_hits'][m]}")

🧩 Core Concepts

Floor

A Floor is a fixed location defined by:

  • latitude
  • longitude
  • timezone
  • optional elevation

It represents a real place on Earth.


Observation

tfloor.observe()

Returns the current solar position relative to the floor:

  • altitude
  • azimuth
  • light direction

Phase

tfloor.get_phase()

A shadow-based phase derived from solar geometry.


Sigil

tfloor.sigil()

Generates a visual encoding of the current state of the floor.

This is an evolving feature and may expand in future releases.


Horizon Mapping

tfloor.as_above()
tfloor.so_below()

Maps zodiac regions relative to the local horizon.


Local Time

tfloor.now()

Returns the current moment expressed relative to the floor.


🌌 Design Philosophy

ThresholdFloor is built around a simple inversion:

Modern systems:

  • abstract time
  • global reference
  • detached observation

ThresholdFloor:

  • grounded time
  • local reference
  • embodied observation

It does not ask you to synchronize with a global clock.

It lets you observe what is happening where you are.


🧬 Ecosystem

ThresholdFloor builds on:

  • moontime → temporal cycles
  • aetherfield → celestial positions

Together they form:

  • Time → MoonTime
  • Sky → AetherField
  • Ground → ThresholdFloor

🧪 Status

Alpha release.

Core functionality is in place, but APIs and visual systems (such as sigils) are still evolving.


🕯️ Closing Note

There was a time when people did not need instruments to understand the day.

They could look at a shadow and know:

  • how far the sun had traveled
  • what season they were in
  • where they stood in the cycle

ThresholdFloor is an attempt to rebuild that intuition.

Not by replacing modern systems —

but by letting light and shadow speak again.

Release files for thresholdfloor 0.3.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for thresholdfloor 0.3.5
File Size Uploaded
thresholdfloor-0.3.5.tar.gz 1.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for thresholdfloor 0.3.5
File Interpreter ABI Platform
thresholdfloor-0.3.5-py3-none-any.whl Python 3 none any Details

Total release size: 3.5 MB

Release files / thresholdfloor-0.3.5.tar.gz

Download URL thresholdfloor-0.3.5.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
d937a8b313b2679f4fbe14787cf2bb56fcb2129769dc4d29c5f0a5a46a0b8f96
BLAKE2b-256 checksum
How to use checksums
28651120327c939d3339772020f784b4dad24731286d6843107e0dd5bd8f1b60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / thresholdfloor-0.3.5-py3-none-any.whl

Download URL thresholdfloor-0.3.5-py3-none-any.whl
Size 1.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
7444ce47bf37d2f066797804f18949a1f4ce422cfd58d0a09093e1dada10045e
BLAKE2b-256 checksum
How to use checksums
a1d2c519fa149032403c518aa9045b3868e248b0bd3366fbb8146b90abe76903
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

0.3.5 This release

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

1 release file

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.9

1 release file

0.0.8

1 release file

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page