#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