Skip to main content

A floor below for tuning to what's above

Project description

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.as_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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thresholdfloor-0.2.5.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

thresholdfloor-0.2.5-py3-none-any.whl (1.7 MB view details)

Uploaded Python 3

File details

Details for the file thresholdfloor-0.2.5.tar.gz.

File metadata

  • Download URL: thresholdfloor-0.2.5.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for thresholdfloor-0.2.5.tar.gz
Algorithm Hash digest
SHA256 4d5192e68d43ea0851cf391c1531b7f129bc6c702d06a5472c0240bba3cd36a0
MD5 d0077f2231893bfb3cfff05a7e64c76f
BLAKE2b-256 7357f9f97af9b4870714eb0a0ebb52c016ee8ad7d9ca79f733fe153dcf9eec17

See more details on using hashes here.

File details

Details for the file thresholdfloor-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: thresholdfloor-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for thresholdfloor-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 9c54f66e4af62b77ed594dbcd76db3fbe3414aaef25f2d290950f1db8e240f42
MD5 af7e46f73095390f386f0b68877f2a60
BLAKE2b-256 b7e910f44754c9cd0aa631a5ced1f03e4662e9f516816c98ff0c4d56396c80ce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page