私の問題の簡単な説明
3D 印刷用に、G1 命令から G2 および G3 ( http://www.cnccookbook.com/CCCNCGCodeArcsG02G03.htm ) へのGCODE 自動リファクタリングを実装する必要があります。
G1 は、印刷に伴う直線の移動です (パスはベクトルで記述されます)。
指定されたベクトルパスに基づいて、円/円弧(特に中点)を近似するアルゴリズムを探しています。G2 と G3 は、円の一部ではない曲線を印刷できないことに注意してください。そのため、すべてのベクトル パスがこの方法で近似できるわけではありません。
私の問題の長い説明
ベクトルパス(正多角形、その一部、または非正多角形部分)の一部(またはすべて)を円(円弧)で近似する方法を探しています。しかし、最初は、正多角形に焦点を当てましょう。
写真では、この問題のさまざまなケースを描きました。
注:すべてのポリゴンはベクトルによって構築されます (ポイント 5 のように)。
- 完全な x-gon での近似。
- 片側が異なる部分x-gonの近似
- 2 つの辺が異なるが互いに等しい x-gon の近似値
- 2 つの辺が異なる (互いに等しくない) 等しくない x-gon の近似値
- すべての辺が等しい部分 x-gom の近似
それは話の始まりではありません...いくつかの基準があります:
- 円の始点/終点は、ベクトル パスの始点/終点にある必要があります。
- 円の中点を知る必要があります。
私が見つけた解決策(良い点と悪い点):
1) と 5) - 私の簡単な解決策
これは最も簡単なケースです。1 つの意見を共有する各側の間の半径を数えることができます。それらが同じ長さを持ち、それぞれの間の角度が等しい場合、私は円の中点を計算することができます(垂直な中線に属する点として、辺ごとに1つの中線)、必要なものはすべてあります:始点、終点、中点点。
ただし、このソリューションはケース 1 と 5 でのみ機能します。
ケース2、3、4または不規則なポリゴンの部分がある場合、どうすればよいか本当にわかりません