CLWFK深追い

 実際のところ、これは深追いとは呼ばないのだろう。深く潜ってないからね。ただただ翻弄されているだけだ。
 もう疲れてきたのでメモ書きだけ書いて帰る。もしくは寝る。以下は正常状態でcrosspointに渡される引数

part1 →
(YOKO 1
      (LINES
       (((ANGLE 130.61415 177.03464) (ANGLE 216.90329 177.03464))
        *1
   ((ANGLE 225.76527 132.91481) (ANGLE 225.76527 170.50897)
    (ANGLE 225.76527 170.50897) (BEZIER 225.76527 189.69159)
    (BEZIER 216.17368 199.28317) (ANGLE 196.99107 199.28317))))) 

以下は失敗の場合。

part1 →
(YOKO 1
      (LINES
       (((ANGLE 130.61415 177.03464) (ANGLE 216.90329 177.03464))
        *2
   ((ANGLE 229.46164 132.91481) (ANGLE 229.46164 166.8126)
    (ANGLE 229.46164 166.8126) (BEZIER 229.46164 188.45944)
    (BEZIER 216.46138 199.28317) (ANGLE 190.46164 199.28317))))) 

 見てわかる通り、TATEHANEの数値が微妙に(微妙というか、実際のところは割と大きく)ずれているのがわかる。これが原因で(linecross line0 line2)でnilが返ってくることになっていると考えて間違いなさそうだ。
 しかし、この問題、発生したりしなかったりの条件が微妙だ。さざなみフォントのmakeall.lで(setq allkanji (append hojo67 hojo68))と設定するとこのエラーが発生するが、(setq allkanji (append hojo68 hojo67))と順番を変えるとエラーが出なくなる。
 原因としては、hojo67の処理中にグローバル変数が書き換えられてしまい、この数値の微妙なずれが発生しているのではないかと思われるのだが、もちろん確証は無い。
 ここまでで、skeleton2listからcrosspointが呼び出される際には引数のデータがおかしくなっている、という事が確認できた。これからskeleton2listを探ってゆきたいが、この関数は250行もあるので読むのが難しい。己の無能さを心より恥じる。

 そして寝る。今度こそ寝る。

*1:ANGLE 130.61415 158.42737) (ANGLE 216.90329 158.42737))))) part2 → (TATEHANE 2 (LINES (((ANGLE 207.158 132.91481) (ANGLE 207.158 170.50897) (ANGLE 207.158 170.50897) (BEZIER 207.158 177.28687) (BEZIER 200.6677 180.6759) (ANGLE 187.68744 180.6759

*2:ANGLE 130.61415 158.42737) (ANGLE 216.90329 158.42737))))) part2 → (TATEHANE 2 (LINES (((ANGLE 203.46164 132.91481) (ANGLE 203.46164 166.8126) (ANGLE 203.46164 166.8126) (BEZIER 203.46164 171.12627) (BEZIER 194.7948 173.28317) (ANGLE 177.46164 173.28317