Форум программистов, компьютерный форум, киберфорум
Наши страницы

Найти точку пересечения двух отрезков - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти произведение всех делителей введенного числа n http://www.cyberforum.ru/cpp-beginners/thread177771.html
Найти произведение всех делителей введенного числа n. C использованием while! помогите плиз)
C++ Ошибка в программе Вот код: /*--------------------------------------------------------------- БИБЛИОТЕКИ */ #include <iostream> #include <fstream> #include <vector> #include <math.h> ... http://www.cyberforum.ru/cpp-beginners/thread177769.html
C++ функция обмена переменных
помогите написать функцию которая меняет переменные местами, но не через swap, а через новую переменную,очень нужно. срочно.
Нужно сгенерировать элементы массива случайным образом с помощью функции rand C++
Нужно сгенерировать элементы случайным образом с помощью функции rand. Определить индексы максимального элемента матрицы. Вычислить произведение элементов над главной диагональю. Я сделал но не...
C++ Вычисление косинуса http://www.cyberforum.ru/cpp-beginners/thread177749.html
: Всем добрового время суток, я пока только начинаю изучать C++ и у меня поэтому много вопросов. Дана программа которая используя разложения косинуса, вычисляет его различные значения x: ...
C++ Рандомизация Необходимо случайным образом выбрать число от 0 до 0.9 включительно, и записать в a"" с шагом в 0.1. Что бы итоге "а" могло быть = 0 или 0.1 или 0.2 или 0.3 или 0.4 или 0.5 или 0.6 или 0.7 или 0.8... подробнее

Показать сообщение отдельно
Anton Nazarov
21.04.2011, 19:03
Есть готовая функция на C# для нахождения точки пересечения двух отрезков, заданных точками, один из которых горизонтальный или вертикальный, может кому пригодится. http://pastie.org/1819393

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 // нахождение точки пересечения отрезка, заданного точками p1 p2 c вертикальным/горизонтальным отрезком, заданным точками p3 p4
        public Point Crossing(Point p1, Point p2, Point p3, Point p4)
        {
            if (p3.X == p4.X)   // вертикаль
            {
                double y = p1.Y + ((p2.Y - p1.Y) * (p3.X - p1.X)) / (p2.X - p1.X);
                if (y > Math.Max(p3.Y, p4.Y) || y < Math.Min(p3.Y, p4.Y) || y > Math.Max(p1.Y, p2.Y) || y < Math.Min(p1.Y, p2.Y))   // если за пределами отрезков
                    return new Point(0, 0);
                else
                    return new Point(p3.X, (int)y);
            }
            else            // горизонталь
            {
                double x = p1.X + ((p2.X - p1.X) * (p3.Y - p1.Y)) / (p2.Y - p1.Y);
                if (x > Math.Max(p3.X, p4.X) || x < Math.Min(p3.X, p4.X) || x > Math.Max(p1.X, p2.X) || x < Math.Min(p1.X, p2.X))   // если за пределами отрезков
                    return new Point(0, 0);
                else
                    return new Point((int)x, p3.Y);
            }
        }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru