|
1 / 1 / 0
Регистрация: 04.05.2011
Сообщений: 14
|
|
Попадает ли точка в треугольник04.05.2011, 11:19. Показов 23032. Ответов 12
Метки нет (Все метки)
Всем привет!!! Пожалуйста, помогите с решением задачи на Microsoft Visual C++ 6.0
Нужно определить, попадает ли точка внутрь треугольника. Координаты вершин треугольника и точки задаются пользователем. Заранее всем огромное спасибо за помощь!
1
|
|
| 04.05.2011, 11:19 | |
|
Ответы с готовыми решениями:
12
Треугольник задан координатами вершин х 1 у1 х 2 у 2 х 3 у 3 точка а задана координатами х у требуется написать программу определяющую попадает ли указанная точка в заданный треугольник Определить, попадает ли точка M(x,y) в треугольник с вершинами А(1;5) В(7;6) и С(4;1) Определить, попадает ли точка в заданный треугольник |
|
Программист
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
|
|
| 04.05.2011, 11:46 | |
|
0
|
|
|
Freelance
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
|
|
| 04.05.2011, 15:52 | |
|
Masha2011, Точка в треугольнике
0
|
|
|
1 / 1 / 0
Регистрация: 04.05.2011
Сообщений: 14
|
|
| 04.05.2011, 18:01 [ТС] | |
|
Ребят, спасибо вам огромное =)
0
|
|
|
6 / 5 / 2
Регистрация: 27.07.2013
Сообщений: 22
|
||||||
| 04.08.2013, 15:03 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 9
|
||||||||||||||||
| 29.12.2013, 03:24 | ||||||||||||||||
|
y=x*(x1+x2)/(y1+y2)
Точка на отрезке , на двух отрезках получается по точке , если оба игрека выше точка не входит если оба ниже так же если один y Выше другой ниже то входит получается и так ![]() y=y*(y1+y2)/(x1+x2)
пока еще только получаю код , надо проверять на ошибки а картинка этого простого метода на моей странице в вк есть http://cs413922.vk.me/v4139228... H-wshI.jpg Добавлено через 1 час 50 минут
Все теперь работает, можна конечно для точек сделать условия с включением точек работать будет чуток медленее но будет работать и напротив вершин треугольника можна применить и для отрисовки треугольника в реальном времени yp1 и yp2 точки треугольника напротив x так я наверно и сделаю , так как при соствлении таблицы величина треугольников ограничена а если пробивать весь квадрат по точкам то это занимает больше времени а так как на принтере только на экране
0
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 9
|
|
| 31.12.2013, 21:34 | |
|
Вобщем для графики это особенно хорошо поэтому пишу сюда , я нашел возможность
оптимизации деления Пусть дана пара чисел которую необходимо поделить A и B Необходимо вычислить A/B многие программеры знают насколько деление может повлиять на скорость исполнения кода Так вот задача сводится к нахождению 1/B Задача : найти 1/B Мы всегда можем найти в десятичной системе 1/1000 скажем простым сдвигом ничего не считая Пусть есть некоторое 1/(B+d) = 10, 100 , 1000 или 1 0000 000 т.е. ближайшему 10 в степени (для двоичных будет 2 в степени , 2 , 4, 8, 16 и т.д.) обозначим это число "k" Получим выражение 1/(B+d) = k Скажем можна применять числа Long представляя целые как дробные скажем 5 как 50 000 000 Точность в 7 знаков, только на 2 в степени такие числа не будут читаться только если сдвинуть, но вот вычисляться просто таки на ура теперь найдем что необходимо сделать с "k" чтобы получить "1/B" получаем 1/B = 1/(1/k -d)=k/(1-d); остается найти 1/(1-d) есть такой ряд лорана когда d<1(Единицу при вычислениях можна представить как 2 в степени только не забываем что если мы умножили два таких числа то их необходимо поделить на 2 в степени или если мы поднесли их в степень то необходимо столько раз поделить на 2 в степени в какую стеень мы поднесли) т.е. число 5 может быть представленно как 5000 скажем или 50 000 Итак ряд лорана : 1/(1+a)=1-a + a^2 -a^3+a^4... Как видим тут только умножения и суммы да разности причем a^4 можна получить из a^3 , a^3 из a^2 и т.д. ... Таким образом мы находим 1/(1-d) , находим 1/B умножив его на k Останется только произвести умножение A*(1/B)
0
|
|
|
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 9
|
||||||
| 02.01.2014, 20:22 | ||||||
|
Тот ряд Лорана медленно сходится , я его преобразовал теперь сходится куда быстрее
(степень в около 2,5 раза за каждый такт) Да и нахождение самой функции сделал попроще дано 1/b представляем в виде 1/(b-a+a); число а - это ближайшее кратное 10 или 2 смотря в какой системе счисления и которое больше нашего числа "b" преобразуем к виду (1/a)*( 1/( ( b-a/a) +1) ) Ряд Лорана вместе с коэфициентом 1/a запишу сразу для простоты (1/a)*(1+ (1-b/a)+(1-b/a)^2+(1-b/a)^3...) но я обнаружил его очень медленную сходимость поэтому преобразовал его обозначну (1-b/a) через "k" - чтобы не переписывать его по 100 раз (1/a)*(k+1)(1+ (k^2+1)*(k^4+1)*(k^8+1)...*k^2) Этот ряд сходится хорошо и у меня получилось получить результат и очень кстати точный В качестве примера например у нас есть число 5 которое делится на 4--— > 5/4 Десятичное число до которого будем дополнять 10 k=1-b/10 = 0.6 подставим в выражение данное значение 1+(k^2+1)*(k^4+1)*(k^8+1)...*k^2 после 4 циклов программы получим получим 1.5625... подставим в (1+k) = 1.6 теперь все это в полную формулу (1/a)*(1+ (1-b/a)+(1-b/a)^2+(1-b/a)^3...) 1/b = 1.6*1.5625 = 2.5 поделим на 10 , это(1/a) получим 0.25 А само деление 5/4 выполняется с помощью умножения 0,25 * 5 Вобщемто оно так и реализовано ,деление умножением Добавлено через 8 часов 1 минуту А вот и простенький код реализующий это его еще поправлять и поправлять но уже реализует деление на целые положительные
0
|
||||||
|
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 9
|
||||||
| 03.01.2014, 17:14 | ||||||
|
Тут тема графики , где нашел туда и пишу
Можна и на Си переписать Получилось , получил на лонгах деление 1/b через ряд Лорана с улучшеной сходимостью рядапосле 20 знака идет целая часть до 20 знака(где то 6 знаков после запятой) идет дробная часть на глаз нечитабельно вычисляется на ура для умножения функция mul функция del для получения 1/b Если очень хочется узнать что же это за число необходимо поделить его на 1<<20
0
|
||||||
|
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 9
|
|
| 04.01.2014, 04:00 | |
|
Увидел еще одну возможность так как это число записано как целое
то в нем возможно представить 0.1 или добавить 0.1 так же как 10 можна добавить к 100 если 100 принять за единицу Добавлено через 16 минут десятиричные числа в двоичном целом формате с двоичным сдвигом при вычислениях и десятичной точкой ![]() и все правильно, так как я этот алгоритм проверял
0
|
|
|
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 9
|
|
| 02.06.2018, 01:03 | |
|
А что если сделать чтобы наша точка стала с координатами (1 : 1)
У нас есть три уравнения такого вида если раскрыть скобки x0y1-y0x1 x0y2-y0x2 x0y3-y0x3 все три больше/меньше нуля так вот мы берем переводим координаты остальных точек и нашей точки таким образом чтобы координаты нашей точки стали (1:1) один-один т.е. получаем три уравнения :y1-x1 y2-x2 y3-x3 Как вам такое ? Дальше ко всем координатам начинаем добавлять/отнимать по единичке по Х и по У сколько надо и проверять это условие пока не переберем все точки прямоугольника в который вписан треугольник
0
|
|
| 02.06.2018, 01:03 | |
|
Помогаю со студенческими работами здесь
13
Нужно определить попадает ли заданная точка в треугольник Условный оператор: проверить, попадает ли точка с координатами X,Y в треугольник с вершинами в заданных точках Попадает или не попадает точка с заданными координатами в указанную область?
Дана ограниченная область и точка A(x0, y0). Написать программу, которая проверяет, попадает ли точка с координатами пол Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Архитектура слоя интернета для сервера слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|