powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Прямая в массив
18 сообщений из 18, страница 1 из 1
Прямая в массив
    #39212107
bobsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые .
Есть координаты двух точек , есть ли в нет возможность получить массив координат всех
точек лежащих на прямой ?
...
Рейтинг: 0 / 0
Прямая в массив
    #39212108
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Прямая в массив
    #39212115
bobsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,
Спасибо , поверить не мог что нарисовать линию нет может, а вернуть точки не хочет .
...
Рейтинг: 0 / 0
Прямая в массив
    #39212118
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobsoftЗдравствуйте уважаемые .
Есть координаты двух точек , есть ли в нет возможность получить массив координат всех
точек лежащих на прямой ?

Прямая бесконечна. Но пусть мсье ошибся, и нужны координаты точек отрезка. И тут тоже казус - у отрезка бесконечное количество точек.

поверить не мог что нарисовать линию нет может


удаляй этот мерзкий "нет"
...
Рейтинг: 0 / 0
Прямая в массив
    #39212119
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не поверишь: он и нарисовать не может. Рисует ОС, а .net только координаты концов ей передает.
...
Рейтинг: 0 / 0
Прямая в массив
    #39212137
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisПрямая бесконечна. Но пусть мсье ошибся, и нужны координаты точек отрезка. И тут тоже казус - у отрезка бесконечное количество точек.
Дак ТС наверное в целых числах хочет, а не вещественных.
...
Рейтинг: 0 / 0
Прямая в массив
    #39212168
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobsoftЗдравствуйте уважаемые .
Есть координаты двух точек , есть ли в нет возможность получить массив координат всех
точек лежащих на прямой ?


Алгоритм Брезенхема

В net - нету, пишите и обрящете
...
Рейтинг: 0 / 0
Прямая в массив
    #39212180
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вычислить математическую модель прямой по 2 точкам (формулу проще говоря) и в цикле добавлять в массив.
...
Рейтинг: 0 / 0
Прямая в массив
    #39212188
bobsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,
Про бесконечность пойду своему бухгалтеру расскажу , пусть к балансу применит .
...
Рейтинг: 0 / 0
Прямая в массив
    #39212210
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobsoft,

держи нас в курсе
...
Рейтинг: 0 / 0
Прямая в массив
    #39212267
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobsoft,
что я вам дал, не рисует линию, ему нужно концы отрезка скармливать и в ответ получать точки.
у вас точно руки не из ж..ы растут( заботливо так)
ничего корме копипаста..
Код: 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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
  class Program
    {
        internal class Point
        {
            private int p1;
            private int p2;

            public Point(int p1, int p2)
            {
                // TODO: Complete member initialization
                this.p1 = p1;
                this.p2 = p2;
            }
             
        }
        public static IEnumerable<Point> GetPointsOnLine(int x0, int y0, int x1, int y1)
        {
            bool steep = Math.Abs(y1 - y0) > Math.Abs(x1 - x0);
            if (steep)
            {
                int t;
                t = x0; // swap x0 and y0
                x0 = y0;
                y0 = t;
                t = x1; // swap x1 and y1
                x1 = y1;
                y1 = t;
            }
            if (x0 > x1)
            {
                int t;
                t = x0; // swap x0 and x1
                x0 = x1;
                x1 = t;
                t = y0; // swap y0 and y1
                y0 = y1;
                y1 = t;
            }
            int dx = x1 - x0;
            int dy = Math.Abs(y1 - y0);
            int error = dx / 2;
            int ystep = (y0 < y1) ? 1 : -1;
            int y = y0;
            for (int x = x0; x <= x1; x++)
            {
                yield return new Point((steep ? y : x), (steep ? x : y));
                error = error - dy;
                if (error < 0)
                {
                    y += ystep;
                    error += dx;
                }
            }
            yield break;
        }
    
        static void Main(string[] args)
        {
            List<Point> points = GetPointsOnLine(0, 10, 30, 30).ToList();

        }
    }
...
Рейтинг: 0 / 0
Прямая в массив
    #39212313
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, координаты начальной и конечной точки не обязаны быть целочисленными
...
Рейтинг: 0 / 0
Прямая в массив
    #39212766
bobsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,
Спасибо за готовый класс , у Где-о в степи в ссылке есть класс с ограничением
количества возвращаемых точек .
...
Рейтинг: 0 / 0
Прямая в массив
    #39212807
bobsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем откликнувшимся.
Задача была найти все фигуры которые пересекает прямая .
Есть два решения .
1 если прямая лежит параллельно одной оси координат то проще
взять rectangle из координат начала и конца отрезка и использовать
нетовский isvisible(rectangle)
2 Использовать приведенный класс .
Кому-нибудь поможет , для меня тема закрыта .
...
Рейтинг: 0 / 0
Прямая в массив
    #39212809
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobsoftЗадача была найти все фигуры которые пересекает прямая .а как фигуры заданы?
...
Рейтинг: 0 / 0
Прямая в массив
    #39212880
bobsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,
Квадрат и трапеции вокруг квадрата, все выровнено относительно осей , и главное
о точности беспокоиться не надо, размеры позволяют .
...
Рейтинг: 0 / 0
Прямая в массив
    #39212914
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobsoftЗадача была найти все фигуры которые пересекает прямая .


Офигеть решение xD
...
Рейтинг: 0 / 0
Прямая в массив
    #39212978
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobsoftИзопропил,
Квадрат и трапеции вокруг квадрата, все выровнено относительно осей , и главное
о точности беспокоиться не надо, размеры позволяют .

растрово фигуры заданы или векторно?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Прямая в массив
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]