2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Задача по геометрии
Сообщение04.08.2013, 14:33 
Код:
// aned.
// ЗАДАНИЕ: даны координаты треугольника ABC и точки P
// определить находится ли точка внутри треугольника
// АЛГОРИТМ: 1.строим треугольники с вершиной P
// 2.находим длины всех отрезков
// 3.находим углы с вершиной P
// 4.сумма углов должна равняться 2ПИ  или 360 градусам

#include <iostream>
#include <math.h>
#include <iomanip>

using namespace std;

float X1,X2,X3,Y1,Y2,Y3; // координаты треугольника ABC
float X,Y; // координаты точки P

float AB,AC,BC; // длины отрезков треугольника ABC
float PA,PB,PC; // длины отрезков из точки P

float APB,APC,BPC; // углы у вершины P

int main()
{
   setlocale(0,"");

   cout<<"Введите X1 :";
   cin>>X1;
   cout<<"Введите Y1 :";
   cin>>Y1;
   cout<<"Введите X2 :";
   cin>>X2;
   cout<<"Введите Y2 :";
   cin>>Y2;
   cout<<"Введите X3 :";
   cin>>X3;   
   cout<<"Введите Y3 :";
   cin>>Y3;
   cout<<"Введите X :";
   cin>>X;
   cout<<"Введите Y:";
   cin>>Y;

   AB=sqrt(pow((X1-X2),2)+pow((Y1-Y2),2));
   AC=sqrt(pow((X1-X3),2)+pow((Y1-Y3),2));
   BC=sqrt(pow((X2-X3),2)+pow((Y2-Y3),2));
   // ----------------------------------------
   PA=sqrt(pow((X-X1),2)+pow((Y-Y1),2));
   PB=sqrt(pow((X-X2),2)+pow((Y-Y2),2));
   PC=sqrt(pow((X-X3),2)+pow((Y-Y3),2));

   cout<<endl<<AB<<endl<<AC<<endl<<BC<<endl;
   cout<<endl<<PA<<endl<<PB<<endl<<PC<<endl;
   // ----------------------------------------------
   APB=acos((pow(PB,2)+pow(PA,2)-pow(AB,2))/(2*PA*PB));
   APC=acos((pow(PC,2)+pow(PA,2)-pow(AC,2))/(2*PA*PC));
   BPC=acos((pow(PB,2)+pow(PC,2)-pow(BC,2))/(2*PC*PB));

   cout<<endl<<APB<<endl<<APC<<endl<<BPC<<endl;
   // ----------------------------------------
   double Summ=(APB+APC+BPC);// сумма углов у вершины P
   cout<<endl<<Summ<<endl;

   cout<<fixed;               // оставляем два знака после запятой
   cout<<setprecision(2);
   cout<<endl<<Summ<<endl;
   int Summ1=(Summ/2)*100; // приводим к int

   cout<<endl<<Summ1<<endl;

   // -----------------------------------
   switch(Summ1)
   {
      case 314:

         cout<<endl<<"YES!"<<endl;
      break;

      default :
         cout<<endl<<"NO!"<<endl;
   }


   cin.get();
   cin.get();
   return 0;
}

 
 
 
 Re: определить, лежит ли точка внутри треугольника
Сообщение04.08.2013, 14:57 
Кошмар-то какой. :shock:

К тому же, в этой теме даны не точки, а прямые, и ваша программа ещё более не в кассу.

 
 
 
 Re: Задача по геометрии
Сообщение04.08.2013, 15:01 
Аватара пользователя
 i  Тема отделена от исходной темы перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
Причина переноса: не приведен предмет обсуждения

Напишите, что Вы хотите обсудить: проверку программы или ещё чего.
После исправлений сообщите в теме Сообщение в карантине исправлено, и тогда тема будет возвращена.

 !  Насколько я понял, Ваш пост к исходной теме отношения не имеет. Просьба оформлять новые вопросы в отдельные темы!

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group