Найти центр окружности по 3 точкам по периметру — преобразовать код C # в G-КОД

#geometry #points #g-code

#геометрия #Очки #g-код

Вопрос:

Я новичок в G-code — Пытаюсь преобразовать код c # в синтаксис G-code — Нахожу центр круга по 3 точкам по периметру, чтобы найти центр круга.

Попытка преобразовать код c # в синтаксис G-кода — нахождение центра окружности по 3 точкам по периметру, чтобы найти центр окружности.


 using System;
using System.Globalization;
namespace ConsoleApp1
{
class Program
{
    static void Main()
    {
        double x1 = 2, y1 = 3;
        double x2 = 2, y2 = 4;
        double x3 = 5, y3 = -3;
        findCircle(x1, y1, x2, y2, x3, y3);
        Console.ReadKey();
    }
    static void findCircle(double x1, double y1,
                           double x2, double y2,
                           double x3, double y3)
    {
        NumberFormatInfo setPrecision = new NumberFormatInfo();
        setPrecision.NumberDecimalDigits = 3; // 3 digits after the double point

        double x12 = x1 - x2;
        double x13 = x1 - x3;

        double y12 = y1 - y2;
        double y13 = y1 - y3;

        double y31 = y3 - y1;
        double y21 = y2 - y1;

        double x31 = x3 - x1;
        double x21 = x2 - x1;

        double sx13 = (double)(Math.Pow(x1, 2) -
                        Math.Pow(x3, 2));

        double sy13 = (double)(Math.Pow(y1, 2) -
                        Math.Pow(y3, 2));

        double sx21 = (double)(Math.Pow(x2, 2) -
                        Math.Pow(x1, 2));

        double sy21 = (double)(Math.Pow(y2, 2) -
                        Math.Pow(y1, 2));

        double f = ((sx13) * (x12)
                  (sy13) * (x12)
                  (sx21) * (x13)
                  (sy21) * (x13))
                / (2 * ((y31) * (x12) - (y21) * (x13)));
        double g = ((sx13) * (y12)
                  (sy13) * (y12)
                  (sx21) * (y13)
                  (sy21) * (y13))
               / (2 * ((x31) * (y12) - (x21) * (y13)));

        double c = -(double)Math.Pow(x1, 2) - (double)Math.Pow(y1, 2) -
                                    2 * g * x1 - 2 * f * y1;
        double h = -g;
        double k = -f;
        double sqr_of_r = h * h   k * k - c;

        // r is the radius
        double r = Math.Round(Math.Sqrt(sqr_of_r), 5);

        Console.WriteLine("Center of a circle: x = "   h.ToString("N", setPrecision)   
        ", y = "   k.ToString("N", setPrecision));
        Console.WriteLine("Radius: "   r.ToString("N", setPrecision));
        }
        }
        }
 

Комментарии:

1. Stackoverflow — это не служба написания кода. Не могли бы вы объяснить, что вы пробовали и с какими проблемами столкнулись?

2. Я перефразирую: могу ли я добавить макрос в G-code, который запускает код c # и считывает из него центр и радиус окружности?

3. Нет. Вы не предоставили никакой информации о том, какое управляющее оборудование и программное обеспечение вы используете.

4. Какую платформу вы используете? e.g. Siemens has a Cycle for this = CYCLE116: Berechnung von Mittelpunkt und Radius eines Kreises