Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Прямая в массив / 18 сообщений из 18, страница 1 из 1
11.04.2016, 06:48
    #39212107
bobsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прямая в массив
Здравствуйте уважаемые .
Есть координаты двух точек , есть ли в нет возможность получить массив координат всех
точек лежащих на прямой ?
...
Рейтинг: 0 / 0
11.04.2016, 07:08
    #39212108
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прямая в массив
...
Рейтинг: 0 / 0
11.04.2016, 07:35
    #39212115
bobsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прямая в массив
Где-то в степи,
Спасибо , поверить не мог что нарисовать линию нет может, а вернуть точки не хочет .
...
Рейтинг: 0 / 0
11.04.2016, 07:49
    #39212118
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прямая в массив
bobsoftЗдравствуйте уважаемые .
Есть координаты двух точек , есть ли в нет возможность получить массив координат всех
точек лежащих на прямой ?

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

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


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


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

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

держи нас в курсе
...
Рейтинг: 0 / 0
11.04.2016, 10:22
    #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
11.04.2016, 11:06
    #39212313
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прямая в массив
кстати, координаты начальной и конечной точки не обязаны быть целочисленными
...
Рейтинг: 0 / 0
11.04.2016, 16:00
    #39212766
bobsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прямая в массив
Где-то в степи,
Спасибо за готовый класс , у Где-о в степи в ссылке есть класс с ограничением
количества возвращаемых точек .
...
Рейтинг: 0 / 0
11.04.2016, 16:22
    #39212807
bobsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прямая в массив
Спасибо всем откликнувшимся.
Задача была найти все фигуры которые пересекает прямая .
Есть два решения .
1 если прямая лежит параллельно одной оси координат то проще
взять rectangle из координат начала и конца отрезка и использовать
нетовский isvisible(rectangle)
2 Использовать приведенный класс .
Кому-нибудь поможет , для меня тема закрыта .
...
Рейтинг: 0 / 0
11.04.2016, 16:23
    #39212809
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прямая в массив
bobsoftЗадача была найти все фигуры которые пересекает прямая .а как фигуры заданы?
...
Рейтинг: 0 / 0
11.04.2016, 17:19
    #39212880
bobsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прямая в массив
Изопропил,
Квадрат и трапеции вокруг квадрата, все выровнено относительно осей , и главное
о точности беспокоиться не надо, размеры позволяют .
...
Рейтинг: 0 / 0
11.04.2016, 17:48
    #39212914
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прямая в массив
bobsoftЗадача была найти все фигуры которые пересекает прямая .


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

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


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