diff --git a/README.md b/README.md index 0e58ddd..e5ae74c 100644 --- a/README.md +++ b/README.md @@ -749,6 +749,27 @@ Polster genau auf der Spitze sass. Jetzt zaehlt DECKUNG: das aeussere Fuenftel gilt als gedeckt, wenn dort eine Card-Mitte naeher ist als eine halbe Cardlaenge. +### Kronenradius: ueberall das Perzentil, nicht das Maximum + +Von der Spielseite gemeldet, hier nachgemessen: seit den Bueschel-Schalen +streut der Kronenradius viel breiter als vorher. + +| Preset (S4) | p50 | p90 | max | +|---|---|---|---| +| Obstbaum | 1.35 | 2.12 | 3.17 | +| Eiche | 1.12 | 1.69 | 2.37 | +| Tanne | 1.17 | 2.49 | 3.91 | + +Das Maximum haengt an einer einzelnen 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 der Test +fuehrt. Das Breitenprofil rechnete laengst mit p90; der Kronenzylinder war die +Stelle, die uebersehen wurde. + +Der Kronenradius fuer die Frucht-Bedingung (>= 1.80 m) bleibt das Maximum ueber +die RINDE - Bark ist von den Schalen nicht betroffen, dort aendert sich nichts. + ### Kugel-Kennwert relativ, Bbox-Kriterium ersetzt Die Bueschel-Schalen schieben jede Card um bis zu einen Kappenradius vom Ast diff --git a/blender_manifest_tree.toml b/blender_manifest_tree.toml index 9017e76..0a57db4 100644 --- a/blender_manifest_tree.toml +++ b/blender_manifest_tree.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "stylized_tree_generator" -version = "1.46.0" +version = "1.46.1" name = "Stylized Tree Generator" tagline = "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen" maintainer = "D4rkst3r" diff --git a/dist/index.html b/dist/index.html index 94c29f5..a53300b 100644 --- a/dist/index.html +++ b/dist/index.html @@ -50,7 +50,7 @@ 34.5KB - stylized_tree_generator-1.46.0 + stylized_tree_generator-1.46.1 Stylized Tree Generator Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen link @@ -61,6 +61,6 @@ -

Built 2026-08-07, 10:21

+

Built 2026-08-07, 10:40

diff --git a/dist/index.json b/dist/index.json index dcd9cbf..e78b892 100644 --- a/dist/index.json +++ b/dist/index.json @@ -82,7 +82,7 @@ "id": "stylized_tree_generator", "name": "Stylized Tree Generator", "tagline": "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen", - "version": "1.46.0", + "version": "1.46.1", "type": "add-on", "maintainer": "D4rkst3r", "license": [ @@ -98,9 +98,9 @@ "Mesh", "Modeling" ], - "archive_url": "./stylized_tree_generator-1.46.0.zip", - "archive_size": 54250, - "archive_hash": "sha256:1a8edadf9d76525c7b27aabbeb14e5197f153592eb5ce1fb3f9d4c343e986a18" + "archive_url": "./stylized_tree_generator-1.46.1.zip", + "archive_size": 54254, + "archive_hash": "sha256:5860c1f85899dea531bcb44e88060fe61f44906aabf924dd37b8109f81fd364a" } ] } \ No newline at end of file diff --git a/dist/stylized_tree_generator-1.46.0.zip b/dist/stylized_tree_generator-1.46.0.zip deleted file mode 100644 index 368c4ab..0000000 Binary files a/dist/stylized_tree_generator-1.46.0.zip and /dev/null differ diff --git a/dist/stylized_tree_generator-1.46.1.zip b/dist/stylized_tree_generator-1.46.1.zip new file mode 100644 index 0000000..d4808ce Binary files /dev/null and b/dist/stylized_tree_generator-1.46.1.zip differ diff --git a/stylized_tree_generator.py b/stylized_tree_generator.py index 586edba..da02ec8 100644 --- a/stylized_tree_generator.py +++ b/stylized_tree_generator.py @@ -1,7 +1,7 @@ bl_info = { "name": "Stylized Tree Generator", "author": "D4rkst3r", - "version": (1, 46, 0), + "version": (1, 46, 1), "blender": (4, 2, 0), "location": "View3D > Sidebar > Tree Gen", "description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen", diff --git a/tests/test_obstbaum.py b/tests/test_obstbaum.py index 2d43d74..e023c4e 100644 --- a/tests/test_obstbaum.py +++ b/tests/test_obstbaum.py @@ -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))