ああー、あのもっと根本的な話で、圧力角や歯の寸法をかなりでたらめに設定している上、歯先が円に沿っていないのは、単純に点同士をGLINE関数で繋げたからです。恐らく、ここで一次変換の一種である回転移動をうまくプログラムに組み込めば、多分今よりはましになるでしょう。