51 / 51 / 14
Регистрация: 12.01.2013
Сообщений: 779
|
|
1 | |
Попадание точки в фигуру на плоскости04.09.2014, 20:35. Показов 7895. Ответов 40
Метки нет (Все метки)
Мой друг, поступил в ВУЗ на программиста, и вот им дали, им лабу, и он попросил меня помочь, эта задача на первом курсе, после первой лекции
Задача то легкая вроде бы кажеться, но я не могу понять к чему там цвета, и как их проверять, не могу ваше понять как ее решать может вы подскажите ?
0
|
04.09.2014, 20:35 | |
Ответы с готовыми решениями:
40
Функция, проверяющая попадание точки с заданными координатами в фигуру попадание точки на плоскости в заданную область Написать условие попадание точки в фигуру Определить попадание точки в заштрихованную область плоскости |
|
05.09.2014, 23:25
Попадание точки в фигуру на плоскости
#21
|
0
|
4 / 4 / 2
Регистрация: 25.08.2014
Сообщений: 36
|
||||||
06.09.2014, 04:08 | 22 | |||||
-=ЮрА=-, я видел вашу ссылку, но для меня написанное там - темный лес, пока что.
По поводу вашего задания. Еще раз, я не спорю, что мой метод решения задачи ТС очень примитивен и не подходит для более сложных случаев. Возможно, дальше Вы будете смеяться , но попробую ответить на вопрос, решая задачу, как аналог задачи ТС: 1. Проведу условную координатную сетку; 2. Сниму координаты вершин фигур - насколько я понял из задания, они задаются по умолчанию, т.е. я должен их как-то описать. Фигур насчитал 6 + общая зона. 3. Далее ввожу точку. 4. Начинаю проверку, например, с треугольников (самый маленький я представил как часть общей зоны). Раскладываю на векторы и проверяю, находится ли точка в треугольниках. 5. Далее перехожу на прямоугольники. Тут понадобиться КУЧА условий, но ничего принципиально сложного не вижу. 6. Наиболее сложное, эллипс и незамкнутое кольцо...С первого взгляда, здесь придется поломать голову и освежить геометрию. С кругом проблем не должно быть (Пифагор). Да, в итоге будет миллион if'ов, else'ов и т.д. Но, по-моему, задачу решит. -=ЮрА=-, надеюсь, удовлетворил ваше любопытство Я не собираюсь с Вами спорить, у нас разные весовые категории, буду рад только спрашивать советы в данном форуме, по мере необходимости. После того, как решу задачу ТС, Вы сможете увидеть этот примитивный алгоритм в действии, ТС, надеюсь, подчерпнет идеи...А я, наконец-то, пойду начинать изучать циклы Добавлено через 3 часа 33 минуты Решение задачи ТС. Алгоритм (я полностью понимаю, что это, глазами опытного программиста, может выглядеть как жутко-длинный бесполезный велосипед, но я постарался логически разобрать эту задачу, наиболее просто и наглядно для такого же новичка, как и я ): 1. раскладываю вписанный квадрат (в программе он фигурирует как ромб) на отрезки-векторы и проверяю, как относительно них лежит наша точка, идя против часовой стрелки. Если все значения одного знака (в данном случае + )значит точка лежит внутри контура, 0 означает, что точка лежит на прямой. Если условие выполняется - цвет белый; 2. Далее проверяю наличие точки на окружности и сравнением координат четвертей с точкой, определяю цвет (красный или синий). Теорема Пифагора; 3. Далее, проверяю на наличие точки в описанном квадрате. Если есть, далее сравнением координат во II четверти окружности, задаю белый цвет; 4. Все остальное - желтое; На граничных участках решил сделать главным цвет, описанный в коде первее, чем остальные. Программу проверил на всех характерных точках - работает
Надеюсь, ТС и его друг уже сами во всем разобрались....
0
|
06.09.2014, 04:19 | 23 | |||||
Может я не правильно понял, что имел в виду -=ЮрА=-, и мой алгоритм однозначно нельзя назвать оптимальным по скорости и памяти, но это то, то получилось в лоб - и заливает всё что только можно
1
|
Rookie Hose
|
06.09.2014, 04:25
#24
|
Не по теме: здорово! Но мне до этого как до Китая пока :(
0
|
06.09.2014, 04:31 | 25 |
Rookie Hose, если вы внимательно всмотритесь в мой алгоритм, то увидите, что он тривиален и дубов - я просто беру цвет заданного стартового пикселя (ловлю его координаты по щелчку мыши) и делаю такое "растекающееся пятно", проверяя цвет соседних пикселей - пока он совпадает с цветом стартового пикселя
1
|
Заблокирован
|
|
06.09.2014, 10:26 | 26 |
_Ivana, у тебя реализован алгоритм для правила EvenOdd работающий в целочисленном растре и разбивающийся в хлам для пиксельной сетки меньше 20 пт, не говоря уже о том что о сглаживании при таком построении речи быть не может. Повторюсь для простого может работать всё что угодно, общий алгоритм я приводил выше, остальное дело сугубо личное.
0
|
|
06.09.2014, 10:31
#27
|
Не по теме: На счёт тетриса - чисто моё имхо - катастрофически неверный концепт отрисовки.
0
|
Заблокирован
|
|
06.09.2014, 10:44 | 28 |
- нет не буду это решение подходит для частного случая рассматриваемого в теме(всего лишь 1-го случая для конкретной конфигруации), поэтому я и привёл настоящий алгоритм который используют растеризаторы ВИН, КанджиТолк и др
Добавлено через 7 минут Добавлено через 50 секунд Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома
1
|
4 / 4 / 2
Регистрация: 25.08.2014
Сообщений: 36
|
||||||
06.09.2014, 13:31 | 29 | |||||
На 29 строке забыл добавить второе условие для переменной tmp4. Т.к. не могу отредактировать сообщение, приведу тут строчку:
_Ivana и -=ЮрА=-, большое спасибо за разъяснения. Ссылки сохранил, я к этому обязательно вернусь, сейчас же мне пока надо подучить элементарные основы
0
|
06.09.2014, 13:35 | 30 |
Сразу возникает комментарий и вопрос:
к: "критикуешь - предлагай" (С) Предложите верный концепт отрисовки. в: вы судите о концепте отрисовки моего тетриса по приведенному коду заливки? В моей теме про тетрис представлен код первого релиза, там можно посмотреть как я его отрисовываю. ЗЫ с ваших постов с примерами линий в консоли и началось мое рисование
0
|
06.09.2014, 13:53 | 32 |
Хотите с Безье и сплайнами, причем все руками без готовых функций графических библиотек? Хорошо, подумаю.
ЗЫ а в Тетрисе все беспощадно прямоугольное, там нет места для сложностей и подобных изысков
0
|
Заблокирован
|
|
06.09.2014, 14:09 | 33 |
- я думал и работал над этим окло 8 месяцев, в итоге получил растеризатор эквивалетный ВИН 3.1 (касательно отрисовать - с нахрапу не получится даже меньше 30 пт хоть как то приемлимо отобразить даже простенький глиф, не говоря уже о глифах канджи).
- Тетрис рисуется объектами а не попиксельно. На счёт рисовать линию - линия это тоже кривая безье (1-t)P0 + t*P1
0
|
51 / 51 / 14
Регистрация: 12.01.2013
Сообщений: 779
|
|
06.09.2014, 21:31 [ТС] | 34 |
это точно рабочий, код моей задачи ?
Добавлено через 3 минуты самое интересное что программа консольная
0
|
Заблокирован
|
|
06.09.2014, 21:38 | 35 |
CSharp, вообще решать задачу следует по теории множеств, ниже привожу каких, остальное - дело техники.
Выделяем 5 белых треугольников, и пересекаем с 2-мя множествами (красным и синим), которые образует кривая окружности. Каждое вхождение точки проверяем на принадлежность какому либо из множеств.
0
|
2 / 2 / 1
Регистрация: 17.05.2013
Сообщений: 688
|
|
06.09.2014, 21:52 | 36 |
так какое правельно решение? мне как программисту интересно, я сам не могу понять как ее решать? а что за теория множист?
0
|
4 / 4 / 2
Регистрация: 25.08.2014
Сообщений: 36
|
|
06.09.2014, 23:44 | 37 |
CSharp, ну блин, а ты не удосужился скомпилировать и проверить? ...
Мое решение работает, но оно очень примитивное и преподу может не понравится сам метод. Делал я ее для себя лично, в целях самообразования. Я бы на твоем месте прислушался к -=ЮрА=- и сделал бы задачу сам.
0
|
2 / 2 / 1
Регистрация: 17.05.2013
Сообщений: 688
|
|
08.09.2014, 09:33 | 38 |
А мне кажется что бы работала программа, а алгорит пофиг какой должен быть
0
|
51 / 51 / 14
Регистрация: 12.01.2013
Сообщений: 779
|
|
13.09.2014, 16:55 [ТС] | 39 |
Сколько не вводил значения, никогда не появлялась красная и синяя зона. Все время желтая (ну тут понятное дело, она наиболее большая) и белая.
0
|
2 / 2 / 1
Регистрация: 17.05.2013
Сообщений: 688
|
|
16.09.2014, 13:01 | 40 |
в решенной задачи нету формулы окружности
0
|
16.09.2014, 13:01 | |
16.09.2014, 13:01 | |
Помогаю со студенческими работами здесь
40
Попадание точки в область плоскости. вывод формулы Попадание в фигуру Попадание в фигуру (консоль) Написать уравнение плоскости, проходящей через точки P и Q и перпендикулярной к заданной плоскости: Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |