Answer the question
In order to leave comments, you need to log in
How to find the intersection points of 2 figures with ++?
The task is to randomly set the points of a rectangle, triangle and circle. I did this. I can't find the intersection points of the rectangle and triangle.
#include <stdlib.h>
#include <ctime>
// нужен для вызова функции time()
#include <time.h>
using namespace std;
//задаем структуру точек
struct Point
{
int x;
int y;
};
//структурируем точки треугольника
struct Triangle
{
Point p1;
Point p2;
Point p3;
};
//структурируем точки прямоугольника
struct Rectangle
{
Point p1;
Point p2;
Point p3;
Point p4;
};
//структурируем центр и радиус окружности
struct Circle
{
Point p;
int radius;
};
//функция генерации рандомного числа
int GetRandomint(int min,int max)
{
return (min + rand() % (max-min+1));
};
// задаем случайную генерацию ординаты и абсциссы точки
Point GetRandomPoint(int min,int max) {
Point p;
p.x = GetRandomint(min,max);
p.y = GetRandomint(min,max);
return p;
}
//задаем функцию генерации трех точек треугольника
Triangle GetRandomTriangle(int min,int max)
{
Triangle trian;
trian.p1 = GetRandomPoint( min,max);
trian.p2 = GetRandomPoint( min, max);
trian.p3.x = trian.p2.x;
trian.p3.y = trian.p1.y;
return trian;
}
//печать координаты точки
void Print_point(Point p)
{
cout << "p(" << p.x << ";" << p.y << ")/n";
}
// печать координат треугольника
void Print_triangle(Triangle trian)
{
Print_point(trian.p1);
Print_point(trian.p2);
Print_point(trian.p3);
cout << "\n\n";
}
//выводим точки прямоугольника на экран( обращаем внимание,что третья точка строится по такому принципу: ордината третьей точки равна ординате 2-ой точки
//а ее абсцисса = абсциссе 1-ой точки) - таким образом создастся перпендикуляр и прямой угол нашему треугольнику
void Print_trian(Triangle trian)
{
cout << trian.p1.x << " " << trian.p1.y << "\n";
cout << trian.p2.x << " " << trian.p2.y << "\n";
cout << trian.p3.x << " " << trian.p3.y << "\n\n";
}
//рандом точки прямоугольника (2-ух точек - они образуют диагональ)
Rectangle GetRandomRectangle(int min,int max)
{
Rectangle rect;
rect.p1 = GetRandomPoint(min,max);
rect.p2 = GetRandomPoint(min,max);
rect.p3.x = rect.p2.x;
rect.p3.y = rect.p1.y;
rect.p4.y = rect.p2.y;
rect.p4.x = rect.p1.x;
return rect;
}
// печать координат прямоугольника
void Print_rectangle(Rectangle rect)
{
Print_point(rect.p1);
Print_point(rect.p2);
Print_point(rect.p3);
Print_point(rect.p4);
cout << "\n\n";
}
//выводим точки на экран на двук осях координат (в данном случае принцип идентичен приципу с прямоуг.треугольником)
void Print_rectan(Rectangle rect)
{
cout << rect.p1.x << " " << rect.p1.y << "\n";
cout << rect.p2.x << " " << rect.p2.y << "\n";
cout << rect.p3.x << " " << rect.p3.y << "\n";
cout << rect.p4.x << " " << rect.p4.y << "\n\n";
}
//Задаем рандомный центр и радиус (для центра - точку,для радиуса - целочисленное значение)
Circle GetRandomCircle(int min,int max)
{
Circle circle;
circle.p = GetRandomPoint(min,max);
circle.radius = GetRandomint(min,max);
return circle;
}
//Печать центра и радиуса
void Print_cir(Circle circle)
{
Print_point(circle.p);
cout << "radius = " << circle.radius << "\n";
}
//Выводим центр и радиус на экран
void Print_circle(Circle circle)
{
cout << circle.p.x << " " << circle.p.y << "\n";
cout << circle.radius << " " << "\n\n";
}
int main()
{
//подключаем русский язык и выводим конечный результат получения точек вершин наших фишур
setlocale(LC_CTYPE, "rus");
srand(time(NULL));
Triangle trian = GetRandomTriangle(0,6);
Rectangle rect = GetRandomRectangle(-10,10);
Circle circle = GetRandomCircle(1,8);
cout << "Координаты треугольника:\n";
Print_trian(trian);
cout << "Координаты прямоугольника:\n";
Print_rectan(rect);
cout << "Координаты центра окружности и его радиус:\n";
Print_circle(circle);
return 0;
}
Answer the question
In order to leave comments, you need to log in
Here it is well painted about the intersection of two segments. You only need to iterate over all pairs of segments of the rectangle X of the triangle.
upd: The same site has everything you need to check the intersection of a circle and segments.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question