Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 17.01.2013
Сообщений: 59
1

Вписывание кривой (best fit curve)

27.04.2014, 22:59. Показов 1207. Ответов 2
Метки нет (Все метки)

Очень нужна программа для вписывания дуги чрез точки:
Вписывание кривой (best fit curve)

В качестве исходных данных имеется массив точек с координатами X и Y. В качестве решения должны получиться координаты X и Y центра кривой и ее радиус.
Уже второй день не могу найти пример на VB или C# ((
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2014, 22:59
Ответы с готовыми решениями:

Перезапись данных из одно fit файла в другой fit файл
Помогите пожалуйста составить программу, которая брала бы имеющийся файл in.fit и переписовала бы...

WPF и Curve график
Коллеги, подскажите пожалуйста. Нужно построить график по нескольким точкам. В WFA есть такая шняга...

Шифрование Elliptic Curve DSA
RSA алгоритм (класс RSACryptoServiceProvider в Net) позволяет шифровать массивы байт , а вот...

Нарисовать фрактал Dragon Curve
Прошу помочь. Проект прикреплен снизу. Вот сам текст задачи: "Алгоритм построения фрактала...

2
46 / 42 / 14
Регистрация: 18.02.2012
Сообщений: 82
03.05.2014, 03:11 2
Лучший ответ Сообщение было отмечено leshiy_t как решение

Решение

Вот очень упрощенный вариант. Работает правильно только на небольшом количестве исходных точек. Чем выше кучность, тем будет выше погрешность. Но уверен, что как отправная точка сгодится.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public class Point
{
    public Point (double x, double y)
    {
        X = x;
        Y = y;
    }
 
    public double X;
    public double Y;
}
 
public static class FitCurve
{
    public static bool GetArcInfo (Point[] points, out double x, out double y, out double r)
    {
        x = 0;
        y = 0;
        r = 0;
        if (points == null)
            return false;
        if (points.Length <= 2)
            return false;
        int n = 0;
        for (int i = 0; i < points.Length-1; ++i)
            for (int j = 0; j < points.Length-1; ++j) {
                if (points [i].Y == points [i + 1].Y)
                    continue;
                if (points [j].Y == points [j + 1].Y)
                    continue;
                double Ai = (points [i].X - points [i + 1].X) / (points [i + 1].Y - points [i].Y);
                double Aj = (points [j].X - points [j + 1].X) / (points [j + 1].Y - points [j].Y);
                double Bi = (Math.Pow (points [i + 1].X, 2) - Math.Pow (points [i].X, 2) + Math.Pow (points [i + 1].Y, 2) - Math.Pow (points [i].Y, 2)) / (2 * (points [i + 1].Y - points [i].Y));
                double Bj = (Math.Pow (points [j + 1].X, 2) - Math.Pow (points [j].X, 2) + Math.Pow (points [j + 1].Y, 2) - Math.Pow (points [j].Y, 2)) / (2 * (points [j + 1].Y - points [j].Y));
                if (Ai == Aj)
                    continue;
                double x0 = (Bj - Bi) / (Ai - Aj);
                double y0 = (Ai * Bj - Aj * Bi) / (Ai - Aj);
                x += x0;
                y += y0;
                r += Math.Sqrt (Math.Pow (points [i].X - x0, 2) + Math.Pow (points [i].Y - y0, 2));
                r += Math.Sqrt (Math.Pow (points [j].X - x0, 2) + Math.Pow (points [j].Y - y0, 2));
                ++n;
            }
        if (n == 0)
            return false;
        r = r / (2 * n);
        x /= n;
        y /= n;
        return true;
    }
}
1
0 / 0 / 0
Регистрация: 17.01.2013
Сообщений: 59
08.05.2014, 09:06  [ТС] 3
Спасибо! Пример работает, и для меня пока вполне годиться
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2014, 09:06

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Автоматическое вписывание данных
Здравствуйте, подскажите как можно реализовать подобное? В общем нужно чтобы (не реклама...

Вписывание загруженного приложение
Например, я кликаю по программе Skype , и в это время все данные ,что я кликал по программам...

Вписывание эллипса в четырёхугольник
Нужна программа, где задаётся четырёхугольник точками с соответствующими координатами. После чего...

Процедура Curve() для построения графика
Кто-нибудь использовал ее для построения графиков? Если не жалко, скиньте пример использования.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.