Tree Gen 1.46.1: Kronenzylinder mit p90 statt Maximum

Befund der Spielseite beim Umbau ihrer Frucht-Streuung, hier nachgemessen: seit
den Bueschel-Schalen streut der Kronenradius viel breiter.

    Obstbaum S4   p50 1.35   p90 2.12   max 3.17
    Eiche S4      p50 1.12   p90 1.69   max 2.37
    Tanne S4      p50 1.17   p90 2.49   max 3.91

Das Maximum haengt an EINER weit aussen sitzenden Card. Die Deckungs-Zahl faellt
damit 2.3-mal pessimistischer aus (Obstbaum 1.2 statt 2.8 m2/m3) - und weil das
Verhaeltnis max/p90 je Art verschieden ist (Tanne 1.57, Eiche 1.40), verzerrt es
auch den VERGLEICH gegen die Eiche, den dieser Test fuehrt.

Das Breitenprofil rechnete seit 1.41 mit p90; der Kronenzylinder der
Deckungs-Messung war die Stelle, die ich damals uebersehen habe. Jetzt beide
gleich.

Der Kronenradius fuer die Frucht-Bedingung (>= 1.80 m) bleibt bewusst das
Maximum ueber die RINDE: Bark ist von den Schalen nicht betroffen, die Zahl
bedeutet dort unveraendert dasselbe.

Nur Messung, keine Geometrie-Aenderung - die Deckungswerte verschieben sich von
2.6-4.5 auf 3.5-5.5 m2/m3, das Verhaeltnis zur Eiche von 104-179 % auf
86-136 %. Alle Schranken halten.

27 Tests bestehen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-07 12:40:36 +02:00
co-authored by Claude Opus 4.8
parent 6ed2257085
commit 9f4aad03ea
8 changed files with 41 additions and 10 deletions
+12 -2
View File
@@ -115,7 +115,15 @@ def deckung_messen(preset, seed):
# removed") - die Kugel-Rechnung stand zuerst danach.
pts = [v.co.copy() for v in m.vertices]
ev.to_mesh_clear()
lr = max(math.hypot(x, y) for x, y, _z in mitten)
# 90. PERZENTIL statt Maximum, wie beim Breitenprofil. Von der Spielseite
# gemeldet und hier nachgemessen: seit den Bueschel-Schalen streut der
# Kronenradius viel breiter (Obstbaum p50 1.35 / p90 2.12 / max 3.17), und
# das Maximum haengt an einer einzelnen weit aussen sitzenden Card. Mit max
# faellt die Deckung 2.3-mal pessimistischer aus - und weil das Verhaeltnis
# max/p90 je Art verschieden ist (Tanne 1.57, Eiche 1.40), verzerrt es auch
# den VERGLEICH gegen die Eiche, den dieser Test fuehrt.
lr = sorted(math.hypot(x, y) for x, y, _z in mitten)
lr = lr[min(len(lr) - 1, int(0.9 * (len(lr) - 1)))]
lz = [z for _x, _y, z in mitten]
vol = math.pi * lr ** 2 * (max(lz) - min(lz))
# Kugel-Kennwert mit DERSELBEN Formel wie unten: Kronenhoehe geteilt durch
@@ -205,7 +213,9 @@ for seed in SEEDS:
sum(p.z for p in pts) / len(pts)))
ev.to_mesh_clear()
if mitten:
lr = max(math.hypot(x, y) for x, y, _z in mitten)
# p90 wie oben - dieselbe Formel wie beim Massstab Eiche.
lr = sorted(math.hypot(x, y) for x, y, _z in mitten)
lr = lr[min(len(lr) - 1, int(0.9 * (len(lr) - 1)))]
lz = [z for _x, _y, z in mitten]
kron_zyl = math.pi * lr ** 2 * (max(lz) - min(lz))