Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21205
  • 博文数量: 9
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 57
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-27 10:58
文章分类

全部博文(9)

文章存档

2014年(6)

2013年(3)

我的朋友

分类: C/C++

2014-04-10 00:00:03

在二维坐标系中,对三角形ABC和某一点P,设A(x1,y1)、B(x2,y2)、C(x3,y3)、P(x,y),如果向量AB×AP、BC×BP、CA×CP指向同一方向,则说明P点在三角形内部。


  1. #include <iostream>
  2. using namespace std;

  3. struct Triangle
  4. {
  5.     int x1;
  6.     int y1;
  7.     int x2;
  8.     int y2;
  9.     int x3;
  10.     int y3;
  11.     Triangle(int tx1,int ty1,int tx2,int ty2,int tx3,int ty3)
  12.     {
  13.         x1=tx1;
  14.         y1=ty1;
  15.         x2=tx2;
  16.         y2=ty2;
  17.         x3=tx3;
  18.         y3=ty3;
  19.     }
  20. };

  21. bool InTriangle(Triangle t,int x,int y);


  22. int main()
  23. {
  24.     Triangle t(0,0,4,0,2,4);
  25.     cout<<InTriangle(t,9,0)<<endl;
  26.     for(int x=0;x<10;x++)
  27.         for(int y=0;y<10;y++)
  28.         {
  29.          cout<<"x="<<x<<"y="<<y<<"是否在三角形中:"<<InTriangle(t,x,y)<<endl;
  30.         }

  31. }

  32. bool InTriangle(Triangle t,int x,int y)
  33. {
  34.     int t1=(t.x2-t.x1)*(y-t.y1)-(x-t.x1)*(t.y2-t.y1);
  35.     int t2=(t.x3-t.x2)*(y-t.y2)-(x-t.x2)*(t.y3-t.y2);
  36.     int t3=(t.x1-t.x3)*(y-t.y3)-(x-t.x3)*(t.y1-t.y3);
  37.     if(t1>0&&t2>0&&t3>0)
  38.         return true;
  39.     if(t1<0&&t2<0&&t3<0)
  40.         return true;
  41.     return false;
  42. }


阅读(1054) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~