Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Pascal и геометрия

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Pascal и геометрия
Имя
Сообщение << Старые топики   Новые топики >>
Pascal и геометрия - 2005-09-13 19:46:09   
Kann

Сообщений: 66
Оценки: 0
Присоединился: 2004-12-09 15:30:28
Треугольник заданы координатам своих вешин, также даны координаты точки, нужна програма на паскале которая определит находится ли точка внутри треугольника или снаружи.хелп[:pray:]
Post #: 1
Pascal и геометрия - 2005-09-14 20:58:04   
Ct757

Сообщений: 135
Оценки: 0
Присоединился: 2005-03-29 19:39:30

Задачка легкая, в чем проблема? =)

Ладно, держи, когда-то такое делал:

 

uses
  Crt;
 
var
  x, x1, x2, x3: Real;
  y, y1, y2, y3: Real;
  a1, b1, c1: Real;
  a2, b2, c2: Real;
  a3, b3, c3: Real;

procedure ABC(x1, x2, y1, y2: Real; var a, b, c: Real);
begin
  a:=y2-y1;
  b:=x1-x2;
  c:=-a*x1-b*y1;
end;

begin
  ClrScr;
  Write('x1, y1: ');
  ReadLn(x1, y1);
  Write('x2, y2: ');
  ReadLn(x2, y2);
  Write('x3, y3: ');
  ReadLn(x3, y3);
  Write('x, y: ');
  ReadLn(x, y);
  ABC(x1, x2, y1, y2, a1, b1, c1);
  ABC(x2, x3, y2, y3, a2, b2, c2);
  ABC(x3, x1, y3, y1, a3, b3, c3);
  if (a1*x+b1*y+c1=0) and (((x>=x1) and (x<=x2)) or
                           ((x<=x1) and (x>=x2))) then
    begin
      WriteLn('HA CTOPOHE');
      ReadLn;
      Halt;
    end;
  if (a2*x+b2*y+c2=0) and (((x>=x2) and (x<=x3)) or
                           ((x<=x2) and (x>=x3))) then
    begin
      WriteLn('HA CTOPOHE');
      ReadLn;
      Halt;
    end;
  if (a3*x+b3*y+c3=0) and (((x>=x3) and (x<=x1)) or
                           ((x<=x3) and (x>=x1))) then
    begin
      WriteLn('HA CTOPОHE');
      ReadLn;
      Halt;
    end;
  if ((a1*x3+b1*y3+c1)*(a1*x+b1*y+c1)>0) and
     ((a2*x1+b2*y1+c2)*(a2*x+b2*y+c2)>0) and
     ((a3*x2+b3*y2+c3)*(a3*x+b3*y+c3)>0) then
    WriteLn('BHyTpu') else
    WriteLn('CHAPy}|{u');
  ReadLn;
end.
Post #: 2
Pascal и геометрия - 2005-09-15 08:23:01   
mxxm

Сообщений: 253
Оценки: 0
Присоединился: 2004-03-13 08:39:42
Действительно, если точка нвходится внутри всех трех углов, значит она находится внутри треугольника. Но мне кажется этот алгоритм неоптимизирован. Я попытался таким способом рисовать закрашенные треугольники и моя программа работала слишком медленно:(. Т.е. я перебирал все точки и если точка лежит внутри или на грани, я её закрашивал.
Post #: 3
Pascal и геометрия - 2005-09-15 13:20:23   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
ну так тебе не надо проверять находиться ли точка в треугольнике или нет. Эта задача решается иначе. Надо научится проверять находиться ли точка на стороне треугольника или нет. Потом взять любую точку внутри треугольника и закрасить.
гугль подсказывает что надо делать так:
http://alglib.sources.ru/articles/2dgraph.php
Post #: 4
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Pascal и геометрия







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.