From d9b39e99a596c3a503daecde31ce89b513f2eb6d Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Thu, 15 Oct 2026 20:02:19 +0800 Subject: [PATCH] =?UTF-8?q?chore(debug):=20Scene3D=20=E6=AF=8F=E5=B8=A7?= =?UTF-8?q?=E6=8C=81=E7=BB=AD=E6=89=93=E5=8D=B0=20time=20=E4=B8=8E?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=20sinf=20=E9=87=87=E6=A0=B7=E5=80=BC?= =?UTF-8?q?=E4=BD=8D=E6=A8=A1=E5=BC=8F=20-=20=E6=8A=93=E6=9B=B2=E7=BA=BF?= =?UTF-8?q?=E5=8F=98=E5=B9=B3=E6=97=B6=E5=88=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Apps/Scene3D/main.vp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Apps/Scene3D/main.vp b/Apps/Scene3D/main.vp index 24e9a6c..f1146f1 100644 --- a/Apps/Scene3D/main.vp +++ b/Apps/Scene3D/main.vp @@ -25,6 +25,26 @@ _time_val: float = float(0.0) # (x 变大后相邻采样点的相位差被量化 ⇒ 曲线塌成一条平线、热力图颜色失去层次)。 define TIME_WRAP = float(12.566370614359172) +# [临时探针] 每帧打印 time 与两个 sinf 采样值的位模式: +# 正常时 a/b 随 time 变化且互不相同;"曲线变平"时应能看到 a==b(相位被量化)或三者一起冻结。定位后删除。 +_tk_hex: t.CArray[char, 17] = "0123456789ABCDEF" + +def _dbg_puts(s: const str): + syscall._syscall1(uint64(syscall.SERIAL_PUTS), uint64(s)) + +def _dbg_hex32(slot: char, val: uint32): + buf: t.CArray[char, 12] + buf[0] = slot + buf[1] = '=' + i: int = 7 + while i >= 0: + buf[2 + i] = _tk_hex[int(val & uint32(0xF))] + val = val >> 4 + i -= 1 + buf[10] = ' ' + buf[11] = 0 + _dbg_puts(&buf[0]) + def _render_thread(arg: t.CPtr): global _time_val root: vpui.Tk* = _root_ptr @@ -36,6 +56,15 @@ def _render_thread(arg: t.CPtr): if _time_val >= TIME_WRAP: _time_val = _time_val - TIME_WRAP root.update() process.yield_cpu() + # [临时探针] 每帧打印:time / sinf(0.5-ws) / sinf(3.0-ws) 的位模式(定位后删除) + ws: float = _time_val * float(2.0) + sa: float = math.sinf(float(0.5) - ws) + sb: float = math.sinf(float(3.0) - ws) + _dbg_puts("[s3d] ") + _dbg_hex32('t', *(uint32*(&_time_val))) + _dbg_hex32('a', *(uint32*(&sa))) + _dbg_hex32('b', *(uint32*(&sb))) + _dbg_puts("\n") @c.Attribute(t.attr.section(".text.startup"), t.attr.aligned(16)) def _start() -> int | t.CExport: