Complete XYZAC LinuxCNC WASM parity and smooth 3D preview

This commit is contained in:
2026-08-28 06:24:50 +08:00
parent e8fe323aab
commit 1a7995fa9b
181 changed files with 36854 additions and 215 deletions

View File

@@ -117,7 +117,13 @@ int sim_posemath_segment_validate(const sim_posemath_segment *segment) {
if (segment->velocity < 0.0 || segment->acceleration < 0.0 || segment->velocity > 1e9 || segment->acceleration > 1e12) return SIM_POSEMATH_ERR_RANGE;
length_sq = (segment->end.tran.x - segment->start.tran.x) * (segment->end.tran.x - segment->start.tran.x) +
(segment->end.tran.y - segment->start.tran.y) * (segment->end.tran.y - segment->start.tran.y) +
(segment->end.tran.z - segment->start.tran.z) * (segment->end.tran.z - segment->start.tran.z);
(segment->end.tran.z - segment->start.tran.z) * (segment->end.tran.z - segment->start.tran.z) +
(segment->end.a - segment->start.a) * (segment->end.a - segment->start.a) +
(segment->end.b - segment->start.b) * (segment->end.b - segment->start.b) +
(segment->end.c - segment->start.c) * (segment->end.c - segment->start.c) +
(segment->end.u - segment->start.u) * (segment->end.u - segment->start.u) +
(segment->end.v - segment->start.v) * (segment->end.v - segment->start.v) +
(segment->end.w - segment->start.w) * (segment->end.w - segment->start.w);
if (!isfinite(length_sq) || (length_sq <= 1e-24 && segment->motion_type != SIM_POSEMATH_CIRCULAR)) return SIM_POSEMATH_ERR_DEGENERATE;
if (segment->motion_type == SIM_POSEMATH_CIRCULAR) {
normal_sq = segment->normal.x * segment->normal.x + segment->normal.y * segment->normal.y + segment->normal.z * segment->normal.z;