【无聊】判断一点是否在三角形内。(面积法)
2014-10-04 12:04
351 查看
判断一点是否在三角形内:假设三角形三个顶点坐标都知道分别为a,b,c.
都知道三角形的面积可以是二分之一两边长乘上他们的夹角sin。
而叉积的计算也是|a||b|sin@。所以可以利用面积是否相等来判断一点d是否在三角形内。
都知道三角形的面积可以是二分之一两边长乘上他们的夹角sin。
而叉积的计算也是|a||b|sin@。所以可以利用面积是否相等来判断一点d是否在三角形内。
#include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <iostream> #include <cmath> #include <queue> #include <map> #include <stack> #include <list> #include <vector> #include <ctime> #define LL __int64 #define EPS 1e-8 using namespace std; struct point { double x,y; point (double x=0,double y=0):x(x),y(y){} }a,b,c,d; point operator - (point a,point b) { return point(a.x-b.x,a.y-b.y); } double cross(point a,point b) { return fabs(a.x*b.y-a.y*b.x); } int main() { begin: printf("请输入三角形的三个顶点坐标:\n"); scanf("%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y); printf("请输入要判断的点的坐标,如若想重新输入三角形顶点,请输入0 0\n"); while (~scanf("%lf%lf",&d.x,&d.y)) { if (fabs(d.x)<=EPS && fabs(d.y)<=EPS) goto begin; point A,B,C; A=a-d; B=b-d; C=c-d; double s,s1; s=cross(A,B)/2+cross(A,C)/2+cross(B,C)/2; s1=cross(c-b,a-b)/2; //cout<<s<<" "<<s1<<endl; if (fabs(s-s1)<EPS) printf("此点(%lf,%lf)在三角形内\n",d.x,d.y); else printf("此点(%lf,%lf)不在三角形内\n",d.x,d.y); } return 0; }
相关文章推荐
- 判断一个点是否在三角形内(面积法,三个点求三角形面积)
- 《C++第六周实验报告4-1》---设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
- 12月27日任务 从键盘任意输入三角形的三边,判断是否能构成三角形,若能,则计算三角形的面积并输出,若不能,则输出不能构成三角形
- 第4章类与对象-引用包中的类-判断是否为三角形并计算其面积
- P122 第三章 10题 三角形的面积及三边是否能组成三角形的判断
- 判断平面上一点是否在三角形内 Inside a triangle or not
- 如何判断一个点是否在一个多边形内部+三角形有向面积公式
- js判断一点是否在一个三角形内
- 设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形
- 5.4.3 果园里的树 // 判断点是否在圆内 三角形的有向面积,注意正负
- 输入任意3个整数 判断是否能组成三角形 它的面积是多少?
- 第六周任务四设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
- 判断是否能构成三角形并计算面积
- js判断一点是否在一个三角形内
- 三角形有向面积 + 判断点是否在三角形内部
- 设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
- 2D空间中判断一点是否在三角形内
- C++第六周任务4设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
- 判断一点是否在三角形的外接圆内
- 绘制一个三角形和判断一个点是否在这个三角形中