IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Как построить стороны треугольников и закрасить область, принадлежащую треугольнику
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Константин

Репутация: -  0  +


Даны действительные числа x[1..6], y[1..6]. Точки с координатами (x[1],y[1]),(x[2],y[2]),(x[3],y[3]) рас-
cматриваются как вершины первого треугольника, точки с координатами (x[4],y[4]),(x[5],y[5]),(x[6],y[6]) -
второго треугольника.
Выяснить, лежитли какой-либо из треугольников целиком внутри другого. Если да, построить стороны треугольников и закрасить область, принадлежащую внешнему треугольнику и не принадлежащую внутреннему. Построения сторон и закраску области выполнить одним цветом. Если ни один из треугольников не лежит целиком внутри другого, построить стороны треугольников, используя для каждого треугольника свой цвет. (Определить процедуру, позволяющую выяснить, лежат ли две точки в одной полуплоскости относительно заданной прямой, и процедуру построения сторон треугольника по заданным координа там вершин и номеру цвета)
Выяснил, лежит ли один треугольник внутри другого, ниже текст программы, как нарисовать не знаю - не разу этого не делал, как это можно сделать для данной задачи?

Program treugolniki;
uses crt;
var
x,y: array [1..6] of integer;
i,j:integer;
f1,f2,f3:real;
procedure vtoroi;
begin
f1:=((x[4]*(y[1]-y[2])+x[1]*y[2]-x[2]*y[1])/(x[2]-x[1]))-y[4];
f2:=((x[5]*(y[1]-y[2])+x[1]*y[2]-x[2]*y[1])/(x[2]-x[1]))-y[5];
f3:=((x[6]*(y[1]-y[2])+x[1]*y[2]-x[2]*y[1])/(x[2]-x[1]))-y[6];

if (f1<0) and (f2<0) and (f3<0) then
begin
f1:=(x[4]*(y[3]-y[2])+x[3]*y[2]-x[2]*y[3])/(x[3]-x[2])-y[4];
f2:=(x[5]*(y[3]-y[2])+x[3]*y[2]-x[2]*y[3])/(x[3]-x[2])-y[5];
f3:=(x[6]*(y[3]-y[2])+x[3]*y[2]-x[2]*y[3])/(x[3]-x[2])-y[6];


if (f1>0) and (f2>0) and (f3>0) then
begin
f1:=(x[4]*(y[1]-y[3])+x[1]*y[3]-x[3]*y[1])/(x[1]-x[3])-y[4];
f2:=(x[5]*(y[1]-y[3])+x[1]*y[3]-x[3]*y[1])/(x[1]-x[3])-y[5];
f3:=(x[6]*(y[1]-y[3])+x[1]*y[3]-x[3]*y[1])/(x[1]-x[3])-y[6];

if (f1<0) and (f2<0) and (f3<0) then
writeln('2 v 1 lezhit')
else
writeln('2 v 1 ne lezhit')
end
else
writeln('2 v 1 ne lezhit');

end
else
writeln('2 v 1 ne lezhit')
end;

procedure pervii;
begin
f1:=((x[1]*(y[4]-y[5])+x[4]*y[5]-x[5]*y[4])/(x[5]-x[4]))-y[1];
f2:=((x[2]*(y[4]-y[5])+x[4]*y[5]-x[5]*y[4])/(x[5]-x[4]))-y[2];
f3:=((x[3]*(y[4]-y[5])+x[4]*y[5]-x[5]*y[4])/(x[5]-x[4]))-y[3];
if (f1<0) and (f2<0) and (f3<0) then
begin
f1:=(x[1]*(y[6]-y[5])+x[6]*y[5]-x[5]*y[6])/(x[6]-x[5])-y[1];
f2:=(x[2]*(y[6]-y[5])+x[6]*y[5]-x[5]*y[6])/(x[6]-x[5])-y[2];
f3:=(x[3]*(y[6]-y[5])+x[6]*y[5]-x[5]*y[6])/(x[6]-x[5])-y[3];

if (f1>0) and (f2>0) and (f3>0) then
begin
f1:=(x[1]*(y[4]-y[6])+x[4]*y[6]-x[6]*y[4])/(x[4]-x[6])-y[1];
f2:=(x[2]*(y[4]-y[6])+x[4]*y[6]-x[6]*y[4])/(x[4]-x[6])-y[2];
f3:=(x[3]*(y[4]-y[6])+x[4]*y[6]-x[6]*y[4])/(x[4]-x[6])-y[3];

if (f1<0) and (f2<0) and (f3<0) then
begin
writeln('1 vo 2 lezhit');
writeln('2 v 1 ne lezhit')
end
else
begin
writeln('1 vo 2 ne lezhit');
vtoroi
end

end
else
begin
writeln('1 vo 2 ne lezhit');
vtoroi
end
end
else
begin
writeln('1 vo 2 ne lezhit');
vtoroi
end
end;



begin
clrscr;
writeln ('Vvedite koordinati x');
for i:=1 to 6 do
readln(x[i]);
writeln ('Vvedite koordinati y');
for i:=1 to 6 do
readln(y[i]);
pervii;

readln
end.


.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Смотри в Help-е Паскаля процедуру DrawPoly для отрисовки и FillPoly для заполнения, там есть и пример использования...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 7:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name