在平面直角坐标系中判定四个点(输入顺序任意)是否是长方形的C++程序怎么写?

作者&投稿:致致 (若有异议请与网页底部的电邮联系)
输入四个点坐标求解四边形的面积的C++程序。分四个点在一条直线,三个点在一条直线,凸的,凹的~

给个思路,把四边形拆成两个三角形来计算:
1.先取出三个点,判断剩余的点在不在这个三角形内,不在,计算三角形面积,同时将后两个点和第四个点组成另一个三角形,计算面积,相加即可。
2.在三角形内,重新取点,回到第一步;
判断在不在三角形内,有个简单的方法,过这个点做一条水平射线,判断和三角形的交点,一个则在三角形内,否则不在;注意,交点为顶点要而外考虑,应该算作两个点;

如果你事先知道矩形的边和坐标轴平行,那么可以x_L=min(x1,x2,x3)x_R=max(x1,x2,x3)y_L=min(y1,y2,y3)y_R=max(y1,y2,y3)然后用x_L<=x<=x_R,y_L<=x<=y_R来判断点是否在矩形内(包含边界)如果事先不知道矩形的边是否和坐标轴平行,那么要略微麻烦一点,下面是一种做法记P=(x,y),P1=(x1,y1),P2,P3类似首先,你要确定已知的三个顶点构成的三角形里哪个是直角顶点(算一下哪条边最长),这里不妨设P2是直角顶点然后可以由此可以算出第四个顶点P4=(x4,y4)=(x1+x2+x3-2*x2,y1+y2+y3-2*y2)接下来可以算一下四个三角形的面积和|PP1P2|+|PP2P3|+|PP3P4|+|PP4P1|,这里不要用有向面积,直接把绝对值算出来(三角形面积可以用行列式来算)再和矩形面积比较一下,如果一样大则表示P在矩形内(含边界),否则四个三角形的面积和总会大于矩形面积如果还想判断P是否在边界上,只要看四个三角形的面积里是否出现过0就行了

考虑 长方形 的边 未必 平行坐标轴,考虑 4点中 某些点也可能重合,输入次序任意,所以用从一点开始,到另3 点的距离 之间的关系 来判断:
如果 有两个距离(的平方) 相等,则不是。
余下,如有两个距离平方之和 等于另一距离平方,则是(直角三角形) 长方形
再余下情况 则不是。
int x[4],y[4];
int ds[3];
int i;
printf("input x[i] y[i], i=0,1,2,3:\n");
for (i=0;i<4;i++) scanf("%d %d",&x[i],&y[i]);
for (i=0;i<3;i++) ds[i] = (x[i+1]-x[0])*(x[i+1]-x[0]) + (y[i+1]-y[0])*(y[i+1]-y[0]);
if (ds[0] == ds[1] || ds[0] == ds[2] || ds[1] == ds[2]) { printf("No !");exit(0);};
if ( (ds[0] + ds[1] == ds[2]) || (ds[0] + ds[2] == ds[1]) || (ds[1] + ds[2] == ds[0]))
{printf("Yes !"); exit(0);};
printf("No"); exit(0);
---
若坐标值 为 float 数,请自己修改程序。

class PolyAngle
{
public:
PolyAngle();
typedef struct
{
double x, y;
}PointStr;
int convex(PointStr *p, int n);
}
///<summary>
///判断一个封闭图形是凸形还是凹形
///返回值: 1:凸集;-1:凹集;0:曲线不符合要求无法计算 
///</summary>
/// <param name="*p">封闭曲线的顶点数组</param>
/// <param name="n">封闭曲线的顶点个数</param>
int PolyAngle::convex(PointStr *p, int n)
{
int i, j, k;
int flag = 0;
double z;
if (n < 3)
return(0);
for (i = 0; i < n; i++)
{
j = (i + 1) % n;
k = (i + 2) % n;
z = (p[j].x - p[i].x) * (p[k].y - p[j].y);
z -= (p[j].y - p[i].y) * (p[k].x - p[j].x);
if (z < 0)
flag |= 1;
else if (z > 0)
flag |= 2;
if (flag == 3)
return -1; //CONCAVE 
}
if (flag != 0)
return 1; //CONVEX 
else

return 0;
}
PolyAngle::PolyAngle()
{
PointStr p[4];
for (int i = 0; i < 4; i++)
{
cout << "请连续输入四边形的顶点坐标,当前第" << i + 1 << "个坐标,x、y用空格隔开:";
cin >> p[i].x >> p[i].y;
}
int res = convex(p, 4);
switch (res)
{
case 1:cout << "这是一个凸四边形" << endl; Area(p, 4); break;
case -1:cout << "这是一个凹四边形" << endl; Area(p, 4);  break;
case 0:cout << "无法构成四边形" << endl; break;
default:
break;
}
system("pause");
//ShowMain();此为绘制主菜单调用函数
}


很抱歉,我之前的答案只考虑了与坐标轴平行的情况,thodylk考虑得周全,但他第一种方法的第二步算出的两条直线不一定会相交,需要判断一下。另外, L_o_o_n_i_e的答案是不对的。

一、设四个点
1,判断是否有重复点,有则不是
2,选x坐标最大和最小的两个点,连接求直线方程,另外两个点连接求直线方程。
3,求之上两个直线方程交点,计算交点与四个点的距离,如果全部相等则是长方形。
说来简单,实现起来代码比较麻烦就是了。

二、也设四个点,p1,p2,p3,p4
1,判断是否有重复点,有则不是
2,首先求边,判断p2-p1=p4-p3,p2-p1=p3-p4,p3-p1=p4-p2,p3-p1=p2-p4四个等式任何一个成立,这里假设第二个p2-p1=p3-p4成立,那么可以知道这是一个有两条边平行且相等的四边形,那么可以肯定这是一个平行四边形,顺序为p2p1p4p3。
3,判断其中任意一个角度为直角,完成。比如证明p2p1p3这个角度为直角,|(p2.x-p1.x)/(p2.y-p1.y)|=|(p3.y-p1.y)/(p3.x-p1.x)|,证明两条边的斜度相反即可。


在平面直角坐标系中,△ABC的三个顶点的坐标分别是A(2,3)B(2,1)C(3...
∴|AC|=|BC|。···① 又AC的斜率=(2-3)\/(3-2)=-1、 BC的斜率=(2-1)\/(3-2)=1,∴AC的斜率×BC的斜率=-1,∴AC⊥BC。···② 由①、②,得:△ABC是以AB为底边的等腰直角三角形。第二个问题:∵△ABC是以AB为底边的等腰直角三角形,∴当△ABC沿AC旋转...

如何在平面直角坐标系中判断三角形是锐角三角形
(1)B(1,-1);(2)证明见解析;(3) .

平面直角坐标系求一元二次方程
平面直角坐标系求一元二次方程如下:首先要通过A=b2-4ac的根的判别式来判断一元二次方程有几个根。1、当A=b2-4ac<0时无实数根(初中)。2、当A=b2-4ac=0时x有两个相同的实数根即x1=x2。3、当A=b2-4ac>0时x有两个不相同的实数根。当判断完成后,若方程有根可根属于2、3两种情况方程有...

在平面直角坐标系中,做出45度角,负124度角,并判定属于第几象限?_百 ...
在平面直角坐标系中,做出45度角,负124度角,并判定属于第几象限?  我来答 1个回答 #热议# 生活中有哪些成瘾食物?来自开罗甜美的天河石 2020-03-11 · TA获得超过729个赞 知道小有建树答主 回答量:4178 采纳率:75% 帮助的人:41.1万 我也去答题访问个人页 关注 展开全部 已赞过 已踩过<...

在平面直角坐标系中,分别描出点A(-1,0),B(0,2),C(1,0),D(0,-2...
小题1:作出四个点的坐标(2分)四边形ABCD是菱形(3分)因为:对角线互相垂直且互相平分小题2:能(10分)变动后的A点坐标为(-2,0), C点坐标为(2,0)(12分) (1)在坐标轴上找出横坐标和纵坐标,即可找到相应的点,根据图形及坐标即可判断其形状;(2)由正方形也属于菱形,只要...

简述平面直角坐标系在中学数学课程中的作用。
②平面直角坐标系是数与形之间的桥梁,体现了代数问题与几何问题的相互转化,是函数图像相关知识的基础,学生学习本课可以为后续内容的学习做铺垫;③用坐标表示地理位置体现了坐标系在实际生活中的应用,用平面直角坐标系表示区域内地点的位置,利用了有序数对与点的对应关系,可以培养学生一一对应的数学...

已知:在平面直角坐标系中,△ABC的三个顶点分别为A(-2,-2),B(-2,4...
解:如图所示:过C作CD⊥AB,垂足为D,则CD=3=BD ∴∠B=∠BCD=45°(等边对等角)CD=3=AD ∴∠A=∠ACD=45° ∴∠A=∠B ∴∠BCA=90°,AC=BC ∴△ABC是等腰直角三角形。

如图1,在平面直角坐标系中A(0,8),B(8,O),C(-8,0),连接AB,AC.(1)试...
解答:解:(1)∵A(0,8),B(8,O),C(-8,0),∴OA=OC=OB=8,∴AC=BC=82,且∠CAB=45°+45°=90°,∴△ABC为等腰直角三角形;(2)∵OE⊥DO,∴∠DOA+∠AOE=∠BOE+∠AOE=90°,∴∠DOA=∠BOE,在△ADO和△BEO中,∠DOA=∠BOEAO=BO∠DAO=∠EBO,∴△ADO≌△BEO...

如图在平面直角坐标系中等腰直角三角形ABC放在第二象限顶点A在y轴上...
设A点的坐标为(0,m),则直线AC的斜率为:m,直线BC的斜率为:-1\/m,直线BC为:1.y=-1\/mx-1\/m y=1\/2x2+1\/2x-2 -1\/mx-1\/m=1\/2x2+1\/2x-2 mx2+(m+2)x-4m+2=0 b2-4ac>=0 (m-2)*(m-2)+16m2>=0 m=2 直线BC:y=-1\/2x-1\/2 y=1\/2x2+1\/2x-2 B点坐标:(...

在平面直角坐标系中描出下列各点A(2,1),B(0,1),C(-4,3),D(6,3),并...
想起来了``1, 因为A(2,1), B(0,1), C(-4,3) ,D(6,3)所以BC=AD=2倍根号5 AB平行于CD,BC不平行于AD 所以ABCD是梯形 所以梯形ABCD是等腰梯形 2,作AB的中垂线,交CD于E,AB于F 因为AB=2,EF垂直平分AB,所以AF=BF=1,AE=BE,因为A,B,C,D的坐标(简写)所以EF=BQ=3-1=2(Q是...

株洲市19588756791: 平面直角坐标系内判断已知4点是否组成正方形 -
本芳复方: 以上两种方法都有所欠缺:仅从题目来看,这 4 个点是任意给定的,我们其实 “不应该” “直接”知道它们的相对位置和顺序.虽然只要画出一个标准的坐标系,然后标出这 4 个点,我们 “(似乎)一眼就能看出” 它们是否围成正方形;但这...

株洲市19588756791: 在平面直角坐标系中有四个点,它们的坐标分别为A(1,4)、B(1,2)、C(4 -
本芳复方: 1) AB,DC分别平行于Y轴,BC,AD分别平行于X轴,因此四边形ABCD为矩形2)AB=4-2=2 BC=4-1=3 AC=根号13

株洲市19588756791: 在平面直角坐标系中有四个点分别是A(1,2根号2)B(3,2根号2)C(4,根号2)D(1,根号2) -
本芳复方: (1)求四边形ABCD面积;四边形ABCD为直角梯形,AB//DC,AD⊥DC,面积=(AB+DC)*AD/2=(3-1+4-1)*(2根号2-根号2)/2=5(根号2)/2; (2)将这个四边形向下平移2根号2个单位长度,四个顶点坐标变为多少?A(1,0)B(3,0)C(4,-根号2)D(1,-根号2) 向下平移2根号2个单位长度,横坐标不变;新的纵坐标=原来的纵坐标-2根号2;

株洲市19588756791: C语言编程:在平面坐标系中,有一个正方形,四个角的坐标(x,y)分别是(x,y)分别是(1, - 1) -
本芳复方: 排除在边线上和边线外的就是在内的.在给定的正方形内的程序: #include <stdio.h> main(){ float x,y; int n,i; printf("input number of points N:\n"); scanf("%d",&n); // 输入点数 for (i=0;i<n;i++){ printf("\ninput x y of point %d\n",i+1); scanf("...

株洲市19588756791: 已知平面直角坐标系中有四个点A(0,1),B(2,1),C(3,4),D( - 1,2),判断这四个点能否在同一圆上,为什么?
本芳复方: 设经过A,B,C三点的圆方程为 x^2+y^2+Dx+Ey+F=0 三点代入得 1+E+F=0 (1) 2+1+2D+E+F=0 (2) 3+16+3D+4E+F=0 (3) (1)代入(2) 得 D=-1 (3)-(1)得 15+3E=0 E=-5 F=4 所以过A,B,C三点的圆方程为 x^2+y^2-x-5y+4=0 代入点D 1+4+1-10+4=0 所以D也在圆上 所以 四个点在同一个圆上 谢谢采纳

株洲市19588756791: 在平面直角坐标系中有四个点:A( - 2,3),B(1, - 6),C( - 3,2),D(6,1),若其中有三个点在同一反 -
本芳复方: 假设A、B、C、D四点分别位于y=k Ax 、y=k Bx 、y=k Cx 、y=k Dx 上,则k A =-2*3=-6;k B =1*(-6)=-6;k C =(-3)*2=-6;k D =6*1=6;从上面求值情况可明显看出:若其中有三个点在同一反比例函数图象上,则不在这个反比例函数的图象上的点是D(6,1).

株洲市19588756791: 平面直角坐标系中,已知A( - 1,3),B( - 1, - 1);下列四个点中,在线段AB垂直平分线上的点是() -
本芳复方:[选项] A. (0,2) B. (-3,1) C. (1,2) D. (1,0)

株洲市19588756791: 如图L - 6 - 2,在平面直角坐标系中描出4个点A(0,2),B( - 1,0),C(1, - 1),D(3,1) -
本芳复方: 连接BD,交X轴于E点,由B,D点坐标知,E点的坐标为(0,1/4).CD交Y轴于F点,同理,F点坐标为(2,0),四边形ABCD 的面积=△ABD+△BDF+△BCF=1/2*AE*BD+1/2*BE*1+1/2*BF*1=13/2

株洲市19588756791: 如图,在平面直角坐标系中描出4个点A(0,2),B( - 1,0),C(1, - 1),D(3,1)(1)顺次连接A,B,C -
本芳复方: (1)四边形ABCD如图所示;S四边形ABCD=3*4-*2*1-*1*2-*1*3-*2*2=6.5;(2)四边形ABCD向左平移3个单位长度,向上平移1个单位长度,所有点横坐标减3,纵坐标加1,得出对应点的坐标:A1(-3,3);B1(-4,1);C1(-2,0);D1(0,2) 平移不改变图形的形状和大小,平移后四边形面积不变,即S四边形A1B1C1D1=6.5.

株洲市19588756791: 在平面直角坐标系中,有四个点A( - 8,3)B( - 4,5)C(0,a)D(b,0),当四边形ABCD的周长最短时,求b÷a的值 -
本芳复方: 先作点A关于x轴的对称点A′,作B点关于y轴的对称点B′,连接A′B′,根据两点直线线段最短可值线段A′B′的长即为四边形ABCD的最小周长,用待定系数法求出A′B′所在的直线解析式,再分别把C、D两点的坐标代入此函数的解析式即可.作点A(-8,3)关于x轴的对称点A′(-8,-3),作点B(-4,5)关于y轴的对称点B′(4,5),设直线A′B′的方程为y=kx+b(k≠0),则 ,-3=-8K+b 5=4k+b k=三分之二 b=三分之七 故过A′B′的直线解析式为:y= kx+b 上面的kb带入 直线A′B′与x轴交点D(m,0),与y轴交点为C(0,n), m=-3.5 n=三分之七 m比n=-1.5 望采纳

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网