差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
| 直骨架的研究 [2025/09/25 21:28] – 张叶安 | 直骨架的研究 [2025/10/16 11:17] (当前版本) – 张叶安 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | https:// | ||
| + | |||
| + | {{ : | ||
| + | |||
| - [[直骨架的研究: | - [[直骨架的研究: | ||
| - [[直骨架的研究: | - [[直骨架的研究: | ||
| 行 72: | 行 76: | ||
| - [[直骨架的研究: | - [[直骨架的研究: | ||
| + | {{pasted: | ||
| + | |||
| + | 利用原始多边形和由它导出的摩托图,我们构建一个平面图,即为扩展的波前, | ||
| + | |||
| + | 在整个算法中,我们对波前中的边进行离散事件模拟,即维护一个最小优先级队列,波前中所有的边构成队列的元素(事件),边的消失时间为对应事件的优秀级。我们从初始的拓展波前$W*(G, | ||
| + | |||
| + | | ||
| + | |||
| + | Edge Event: 两个凸点 u,v 间的边 e 消亡,如图 9(a) 所示。我们将 e 从原图中删除,并将 u,v 点合并为一个新的凸点 w。 | ||
| + | 与点 w 相连的两条边将决定 w 的速度,因此,我们需要更新与 w 相连的两条边的消亡时间,并在 Q 中修改相应的项。当w 的两条边平行的时候,如果按这两条边来求 w 得速度,w的速度将趋向于无穷大,这将会导致后续的计算出现问题。我们对这种情况做特殊处理,将 w 的速度设为 0。最后,我们需要向直骨架中添加两条边 vw 和 uw。 | ||
| + | |||
| + | Split Event: | ||
| + | |||
| + | Start Event: | ||
| + | 一般情况下 Start Event 不会向直骨架中贡献一条边,特殊情况(1)中三角形消失,其中的凸点会给直骨架增加一条边。 | ||
| - | Run completed on your latest polygon log and diagnostics saved. Here’s the short summary and what I recommend next. | ||
| - | What I ran | + | Switch Event:一个凸点u和一个凹点或一个 moving Steiner 点v之间的边e消亡,如图9(d)所示。v点将从u的一条邻边跳到u的另一条邻边上,u和v的速度都将发生改变,需要更新u、v的邻边的消失时间。有一种特殊情况需要考虑:u的一条邻边、e和v的另一条不在原多边形上的邻边构成一个三角形,Switch Event发生时,该三角形消失。如果 Switch Event 发生在凸点与凹点之间,需要为直骨架增加边,如果Switch Event发生在凸点与Moving Steiner之 间,不需要为直骨架增加边。在特殊情况中消失的三角形会增加直骨架边。 |
| - | • Executed the harness with your latest available log (selected: C: | + | |
| - | • Generated full diagnostics (boundary/ | + | |
| - | Key results | + | Multi Start Event:一个 moving Steiner 点 v和一个 multi Steiner 点u之间的边e消亡,如图9(e)所示。设其他与u相邻的顶点为u1,u2,..,u1,相应的u1,u2,..,ul与u形成的边为e1,e2,..,el,并且e1,e2,..,el按逆时针排序。u对应多个摩托相撞点,e边先消失,意味着这多个摩托不可能一起相撞,而是将v的多边形邻边进行分裂,即引入新的Moving Steiner点V2,V2.……,Vl,它们之间形成边viVi+1,(i=1,……,i—1),另外原来与v相邻的两个多边形顶点与v1,v相连,形成两条边。Multi Start Event 不直接产生直骨架边。 |
| - | • Completed: True | + | |
| - | • Boundary vertices parsed: 18 (note: it’s | + | |
| - | • Skeleton segments: 12 | + | |
| - | • Triangles: 48 | + | |
| - | • Wavefront samples: 7 | + | |
| - | • Time: 0.343s | + | |
| - | • ValleySummary: | + | |
| - | ◦ Warnings: ValleyMissing for reflex at (319,171) with two different IDs (duplicate entries) | + | |
| - | Why the two “missing” valleys appear | + | Multi Split Event: |
| - | • Your boundary in the log contains two identical loops (the same 9 vertices repeated). That creates duplicate reflex vertices at the same location with different IDs. The algorithm writes one valley for the “real” instance and then reports the duplicate as “missing.” This is a parsing artifact, not an algorithmic failure. | + | l1,r1,...ll, |
| - | Diagnostics location (most relevant files) | + | Remainning Event:如果两个 Moving Steiner Vertex 构成的边 e消失,直接删除相应的边以及顶点即可。该事件不会增加直骨架边。 |
| - | • D:\在家加班\骨架库(最新20250923)\骨架库(最新20250917)(1)\HDSkeleton\Harness\bin\Debug\diag_runs_harness\FROM_LOG\ | + | 除了上面七种事件外,其他的点的组合构成的事件不会发生。 |
| - | ◦ from_log_boundary.csv (parsed boundary that was fed into the run) | + | |
| - | ◦ from_log_skeleton.csv (aggregated skeleton segments) | + | |
| - | ◦ run_20250925_212154_592\ | + | |
| - | ▪ boundary.csv, | + | |
| - | Recommendations | + | [[直骨架的研究:代码分析]] |
| - | • Let me add a normalization pass to the log loader so it: | + | |
| - | ◦ Removes consecutive duplicate points | + | |
| - | ◦ If the list is two identical halves, keeps only the first half | + | |
| - | ◦ Drops a final vertex if it equals the first (implicit closure) | + | |
| - | • Then rerun. Expected effect: the duplicate (319,171) entries collapse to one, clearing the two ValleyMissing warnings. | + | |
| - | • Optional follow-ups: | + | |
| - | ◦ Add a --csv < | + | |
| - | ◦ If you want to investigate the “calcMovingSteinerSpeed: | + | |
| - | How to rerun locally | + | [[直骨架的研究:鞋带公式]] |
| - | • Latest log: D: | + | |
| - | • Specific log file: HDSkeletonHarness.exe --log "C:\path\to\your\skeleton_debug_YYYYMMDD_HHMMSS.log" | + | |
| - | Would you like me to implement the de-duplication in the log loader now and rerun to verify the ValleyMissing warnings disappear? | + | [[直骨架的研究: |
| + | [[直骨架的研究: | ||
| + | [[直骨架的研究: | ||