こんにちは、私の質問は、離散的なステップを使用して空間の任意の弧のプロットに関連
離散的なステップにおけるアーク
背景をプロットします。しかし、私は典型的な意味でキャンバスに描かれていないという点でユニークです。私が設計しているファームウェアは、コマンドをステッピングモーターの動きに変換するCNCミル用のgcodeインタプリタです。今、私はすでにこのサイトで同様の質問を見つけましたが、提案された方法論(Bresenham's Algorithm)は、宇宙でオブジェクトを動かすためには互換性がないように見えます。残りの対称軸についてさらに、2つの任意の角度の間でアークを計算する所定の方法は、三角法(私はマイクロコントローラ上に実装しており、可能であれば高価な三角関数を避けたい)に依存し、単純に範囲外のステップをとらない。最後に、このアルゴリズムは、1つの回転方向(例えば反時計回り)で動作するようにのみ設計されている。実際の質問へのだから、
質問
、:誰もがまだ角度方向(CW /への尊敬の念を与えながら、離散ステップで任意の弧を「描く」ために使用できる汎用アルゴリズムを知っていますCCW)?最終的な実装はC言語で行われますが、質問の目的の言語は無関係です。
ありがとうございます。
参照
SOブレゼンハムのアルゴリズムを使用して、単純な円を描くに投稿:実装されるサークルのためのブレゼンハムのアルゴリズムを説明
"Drawing" an arc in discrete x-y steps
Wikiページを
http://en.wikipedia.org/wiki/Midpoint_circle_algorithm
Gコード命令(参照してください。 G2、G3)
http://linuxcnc.org/docs/html/gcode.html
は、マイクロコントローラは、ハードウェアでサポートされている浮動小数点演算を持っているのですか? – titus
はい、いいえ。私が現在サポートしているコントローラにはハードウェアFPはありませんが、適度に最適化されたソフトウェアFPライブラリ(AVR Mega32)はあります。私は、ハードウェアFPをサポートするより肥大な32ビットAVRにアップグレードすることを検討してきました。実際には、座標を整数ステップに変換し、FP誤差アキュムレータに頼るだけで、モーターのステップに "ラインアップ"しないと、FPのほとんどの要素を取り巻くことになっていました。しかし、私はこの時点で何かを開いています。何か違いがあれば、4000ステップ/インチになります。 – phobos51594
ああ、固定小数点もオプションです。私が使用している安価な機械部品を使用すると、解像度が0.005であると見なされるだけではありません。それを過ぎていくつかの場所は、おそらく私の車よりもコストがかかる可能性があり、誤差蓄積に十分な機械の領域です。 – phobos51594