From f987458a15c2490959f1eb0d70e9add2d396bf25 Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Tue, 9 Dec 2025 09:47:34 -0800 Subject: [PATCH] Use fractional coordinates to improve angular movement accuracy --- images/apple/PLEIADES-2.20.po | Bin 33553920 -> 33553920 bytes images/apple/PLFORTH.po | Bin 143360 -> 143360 bytes src/libsrc/turtle.pla | 26 +++++++++++++++++--------- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/images/apple/PLEIADES-2.20.po b/images/apple/PLEIADES-2.20.po index 0efe123f82bdc6dea97c8b8a64da9e8134204b8f..75679ec978801e1fbed4b82357e3dac99e29730a 100644 GIT binary patch delta 2374 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 b@l^aRo{8t;g?K4miPx@8>2u$>!aDy0m%%2C diff --git a/images/apple/PLFORTH.po b/images/apple/PLFORTH.po index 500acd0eb3f8e488379f67195c3ab74061b9e0d7..ecfb56daa1c245d42340555cb51c55e22fe568c9 100644 GIT binary patch delta 1487 zcmZvbPfQa*6vp37*JUdKH#CZ=4L1BU8fjudu~lMdL0Vb1OS>2(93+7T8xs>SM7>D8 z7!wa5hfN6Xkr-p5kp_$>5qm<5F$xDR!~+M@i=Mntd|lYePTS<`&d$#7y>DjTo7@s6 zw}dxAuHs3v#}2Rp?)+dz;hZhz4CDtCniQ!$*3<5Z-H553JpjASPzHAn8(;r}dNH^W z3r53=8iW1ckqi(3S^$l~OqO$2S~JcNntjW=ZgYks_gG!Q;~t@mF&=$z?0P_Im%GhO zkdrV~FJV&Y#bC7*k-M(-C?=Vc5qt~`m@NT@qE{nPHB|G1MeKQvxsz9B5D z&0aGQK<+MZuycs<@VXeR?d&+XX~^A&&d$$1aEWos&uTX>kdcQDNVr5{E>VMj zafnlONsNQAw+0_I;sDpr6JyN;HC9b<_?BOjaErM0M;H$04^GsGqxGU>iA>`hMjqh% zDT%|Bx?MFu;aMP_F}M8!E6g+)Bzw?<$4lchn~8C+ZjKH|j5Hm%=o) zT}tvcNZL`N4W=D7f3h0KPLvzffbyVxs4J)r?cGJ9*KJpQSzAwkTwYn-SpL=_cpYEU znIDSKmVbU)+mMBT0}pR_(NA0+qwh5LC}A2;Q%2b9Z9PzgS7bKHqliD<0`X2 KsDsSw&=H%Zh0 delta 1444 zcmZvbPe>GT6vyB1x09}lI_#3hwrq==_6HSG%XYPcuI6sd&Q7~ym~_a4i!DK*UGn6X z;H5+6VJ^!YB_b$tQ3wy2?IEmH0u>TOx&*OwDCiJ4^_+G#=Qlg>n8&>N{NDHX{!H!J zr}peGgIx7=`$-O96}$(|oW!|0j4yEDP-u~ao_M6EHGU&5_eTK!v_m=Et<E@FjJ^=|T zFX2m%PI~xZZio_$B_QeL@rn=hp9;Rb>=>rz`1GOpw7jfzcalK$t^=rs=5Ye`Ej{cc z-f07m3_Oiy0*RYsn4!CHnO=*$?kFD``!AsX!kj>A~TBt;%?QKN%4*m zW}6ggjO|kf&IF@kINI7_j5qfh$Kx409%?C4Z}1`V4U!`)nJ+;eFHDuea#`%~BW9tL zz-_{8lrn;!%;S=Qv+`g}7W$2|fct> 4, turtleYp4 >> 4, x, y) fin - turtleX = x - turtleY = y + turtleXp4 = x << 4 + turtleYp4 = y << 4 end export def moveForward(dist)#0 - moveTo(turtleX + mulcos(dist, turtleAngle), turtleY + mulsin(dist, turtleAngle)) + var oldX, oldY + + oldX = turtleXp4 >> 4 + oldY = turtleYp4 >> 4 + turtleXp4 = turtleXp4 + mulcos(dist << 4, turtleAngle) + turtleYp4 = turtleYp4 + mulsin(dist << 4, turtleAngle) + if pen + clipLine(turtleXp4 >> 4, turtleYp4 >> 4, oldX, oldY) + fin end export def moveBackward(dist)#0 - moveTo(turtleX - mulcos(dist, turtleAngle), turtleY - mulsin(dist, turtleAngle)) + moveForward(-dist) end export def penUp#0