42 / 42 / 3
Регистрация: 11.04.2010
Сообщений: 177
|
|
1 | |
Дана точка А(х, у). Определить, принадлежит ли она треугольнику11.04.2010, 15:19. Показов 15013. Ответов 17
Метки нет (Все метки)
Дана точка А(х, у). Определить, принадлежит ли она треугольнику с вершинами в точках (х1, у1), (х2, у2), (x3, y3).
0
|
11.04.2010, 15:19 | |
Ответы с готовыми решениями:
17
Определить принадлежит ли данная точка треугольнику Принадлежит ли точка треугольнику Определить, принадлежит ли точка отрезку Определить, принадлежит ли точка области |
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 23
|
|
11.04.2010, 17:17 | 2 |
Точка принадлежит многоугольнику, если она пересекает его стороны нечетное число раз.
Если к примеру треугольник нарисован на битмапе и ты заведомо знаешь цвет фона, цвет границ треугольника, то достаточно попиксельно пройти от точки А до границы битмапа слева направо, сравнивая цвет. Это будет легко, если нарисован только треугольник. Если привязки к графике нет никакой, просто есть координаты - то задача сводится к сравниванию координат, исходя из этого же правила
0
|
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
|
||||||
11.04.2010, 18:58 | 3 | |||||
pro100saniok,
вариантов проверки принадлежности точки полигону вообще (не только треугольнику) есть штук пять-шесть. но самым быстрым (да и по коду компактней выходит) считается алгоритм трассировки лучей. В общем вот тебе пример - это переделанный под C# код на lua который я в одной игре использовал - там он отлично работал вычисляя находится ли персонаж в нужной зоне или нет В шарпе я сам новичок - поэтому если кто то увидит недочеты - поправьте.
да чуть не забыл - координаты (если я не ошибаюсь) нужно вписывать в порядке обхода вершин по часовой стрелке.
1
|
42 / 42 / 3
Регистрация: 11.04.2010
Сообщений: 177
|
||||||
12.04.2010, 00:04 [ТС] | 4 | |||||
[QUOTE=erlik;654513]pro100saniok,
[/CSHARP] этот код ствится на началу кода програмы или нет, а то у меня програма не хочет работать.
0
|
14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
||||||
12.04.2010, 00:24 | 5 | |||||
Как-то так:
0
|
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
|
|
12.04.2010, 01:13 | 6 |
pro100saniok,
у меня там скобка закрывающая (перед методом Main) не в том месте стоит - нужно включить метод Main в границы класса - то есть переставить ее в конец. просто у меня в файле куча функций и классов (вложенных друг в друга)- поэтому не уследил за этой мелочью. Добавлено через 14 минут NightmareCode, а к чему приведена функция вычисления площади треугольника вместо заданной задачи? если уж вычислять по площади (долго и нудно) то выкладывай продолжение - а это только начало пути.
1
|
1319 / 992 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
||||||
12.04.2010, 03:23 | 7 | |||||
Не по теме: 1) нет разметки кода (ну эт не шарп, конечно, но убить можно) 2) нарушение инкапсуляции - все поля класса должны быть приватны (а доступ уж через аксессоры (свойства)) 3) очень плохое именование переменных/параметров. в C# - паскаль (верблюжья) нотация действует: вместо Tri - Triangle, вместо Res - Result, поля начинаются с "_" : _pointA; 4) нарушение логики: в свободный метод передаются параметры этой самой точки - бред 5) глупый тернарный оператор : text==true ? ... не проще ли text ? ... ну и разумеется имя переменной text не отражает ничего, кроме собственной несостоятельности 6) не зависящие от контекста методы не статичны 7) пространства имён НЕТ 8) нарушение логики: обязательный вызов метода из внутреннего кода в итоге - суперНЕувиресальное решение: а в шарпе все наоборот. надо максимально дифференцировать логику с минимизацией стороннего функционала и выдержкой обобщенности Добавлено через 7 минут Не по теме: и еще очень много чего. в т.ч. критичного Добавлено через 13 минут Не по теме: на здоровье. посмотри на обрамления всех элементов
0
|
42 / 42 / 3
Регистрация: 11.04.2010
Сообщений: 177
|
||||||||||||||||
12.04.2010, 09:15 [ТС] | 8 | |||||||||||||||
етот код находится в конце ??
0
|
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
|
||||||
12.04.2010, 12:20 | 10 | |||||
Mikant,
Спасибо за пояснение- только не мог бы ты указывать на ошибки более корректным тоном. Я понимаю -после года изучения языка чувствуешь себя наверно МегаГУРУ, однако я его изучаю всего два месяца - и мои ошибки это обычные ошибки любого новичка. С ООП я пока толком не работал поэтому создавать универсальные модели не умею. Кстати в lua этот код вообще занимает 14 строчек, а не сотню как выходит с твоей разметкой. Я же хотел как покороче - ну в общем как привык работая с lua. Если не считать того что это вспомогательный сценарный язык - то гибче и компактнее его трудно найти. pro100saniok, не важно куда ставить метод Main() главное чтобы он входил в требуемые границы разметки кода - или как там это правильно сказать - в общем входил в созданное тобой пространство имен или класс. у меня никакой ошибки от вставки кода Mikant'а, не появляется. Добавлено через 1 час 3 минуты Mikant, раз уж взялся разбирать код по косточкам - давай разберем до конца. вот скажи чем так уж плох такой вариант?(приведенный ниже) зачем все эти сложности в твоем коде? там кстати если ты не заметил нужно всю функцию определения принадлежности точки полигону (у меня вообще то метод под все полигоны работает, а не только под треугольник) переписывать под твой вариант. Только давай корректно. Мы тут все учимся - и мы не партсобрании - чтобы кидаться фразами что товарищ "несостоятелен" и его нужно исключить из славного сообщества любителей программирования (я всего лишь любитель - и это мое хобби, а профессия у меня другая - очень далекая от этой сферы)
0
|
26 / 25 / 2
Регистрация: 26.02.2010
Сообщений: 96
|
|||||||||||
12.04.2010, 16:56 | 11 | ||||||||||
2
|
42 / 42 / 3
Регистрация: 11.04.2010
Сообщений: 177
|
|
31.05.2010, 04:09 [ТС] | 12 |
кто то может по этой теме сделать итоги,и написать полностью код програми на С# ?
0
|
42 / 42 / 3
Регистрация: 11.04.2010
Сообщений: 177
|
||||||
14.06.2010, 23:32 [ТС] | 13 | |||||
я попробовал сам подбить итоги по этому заданию, кто может исправить если что не так ))
помогите написать алгоритм решения к етой задачи !
0
|
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
|
|||||||||||
15.06.2010, 13:28 | 14 | ||||||||||
странный этот метод:
и для проверки ввёл точку (0, 20) и получил false нашел у себя еще одну функцию для нахождения принадлежности точки фигуре (но она громозкая):
0
|
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
|
|
16.06.2010, 20:17 | 15 |
kuroiryuu,
у меня нормально работала (я это дело в игре применял - для отслеживания попадания NPC в определенную зону - на выпуклых полигонах она работает как надо, - на прочих - точно не помню) - это же трассировка лучей - самый компактный и (наверно)быстрый способ - почитай о нем как-нить на досуге.
0
|
kuroiryuu
|
17.06.2010, 11:43
#16
|
Не по теме: erlik, я описал, то что обнаружил при тестировании кода и не более.
0
|
42 / 42 / 3
Регистрация: 11.04.2010
Сообщений: 177
|
|
20.06.2010, 18:33 [ТС] | 17 |
мне надо узнать принадлежит ли двумерная точка треугольнику с двумерными координатами?
вот ссылка Алгоритм по данной теме Как проверить принадлежит ли точка треугольнику?
0
|
42 / 42 / 3
Регистрация: 11.04.2010
Сообщений: 177
|
|||||||||||
23.06.2010, 00:41 [ТС] | 18 | ||||||||||
вот решения по данной формуле выше, решил не я
namespace zadacha_2
вот эту я сам писал,но только ошибку вибивает Operator '==' cannot be applied to operands of type 'bool' and 'int'
0
|
23.06.2010, 00:41 | |
23.06.2010, 00:41 | |
Помогаю со студенческими работами здесь
18
Определить, принадлежит ли точка прямой Определить, принадлежит ли точка Q, Z многоугольнику Определить, принадлежит ли точка области Определить принадлежит ли точка окружности Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |