• 题意：按顺时针（clockwise）方向给你四个点的坐标，判断它是否是平行四边形，矩形，菱形，正方形。 ...几何，肯定是用向量，具体判断四边形的形状，就看你初高中的几何了，具体判断，看下面这张图

King's Sanctuary

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

The king found his adherents were building four sanctuaries for him. He is interested about the positions of the sanctuaries and wants to know whether they would form a parallelogram, rectangle, diamond, square or anything else.

Input
The first line of the input is

T
T(

1≤T≤1000
1≤T≤1000), which stands for the number of test cases you need to solve. Each case contains four lines, and there are two integers in each line, which shows the position of the four sanctuaries. And it is guaranteed that the positions are given clockwise. And it is always a convex polygon, if you connect the four points clockwise.

Output
For every test case, you should output Case #t: first, where

t
t indicates the case number and counts from

1
1, then output the type of the quadrilateral.

Sample input and output
Sample Input Sample Output 5
0 0
1 1
2 1
1 0
0 0
0 1
2 1
2 0
0 0
2 1
4 0
2 -1
0 0
0 1
1 1
1 0
0 0
1 1
2 1
3 0
Case #1: Parallelogram
Case #2: Rectangle
Case #3: Diamond
Case #4: Square
Case #5: Others

Source
Sichuan State Programming Contest 2012

原题链接：http://acm.uestc.edu.cn/#/problem/show/93

题意：按顺时针（clockwise）方向给你四个点的坐标，判断它是否是平行四边形，矩形，菱形，正方形。

几何，肯定是用向量，具体判断四边形的形状，就看你初高中的几何了，具体判断，看下面这张图。

AC代码：

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cmath>
using namespace std;
struct point
{
int x,y;
} p[4];
int main()
{
int T;
int kase=0;
cin>>T;
while(T--)
{
for(int i=0; i<4; i++)
{
cin>>p[i].x>>p[i].y;
}
int px= (p[1].x-p[0].x);
int py= (p[1].y-p[0].y);

int qx= (p[2].x-p[3].x);
int qy= (p[2].y-p[3].y);

int rx= (p[2].x-p[1].x);
int ry=(p[2].y-p[1].y);

int tx=p[3].x-p[0].x;
int ty=p[3].y-p[0].y;
printf("Case #%d: ",++kase);
if(px==qx&&py==qy&&rx==tx&&ry==ty)//两组对边分别相等-->平行四边形
{
if(px*rx+py*ry==0)//+邻边垂直-->矩形或正方形
{
if(px*px+py*py==rx*rx+ry*ry)//+邻边相等-->正方形
{
cout<<"Square"<<endl;
}
else
cout<<"Rectangle"<<endl;
}
else if(px*px+py*py==rx*rx+ry*ry)//+邻边不垂直但相等-->菱形
{
cout<<"Diamond"<<endl;
}
else//平行四边形
cout<<"Parallelogram"<<endl;
}
else
cout<<"Others"<<endl;
}
return 0;
}



展开全文
• 数学原理 相邻两边的 bool gimp_transform_polygon_is_convex(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) { double z1, z2, z3, z4; z1 = ((x2 - x1) * (y4 -...
数学原理 相邻两边的

bool gimp_transform_polygon_is_convex(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)

{

double z1, z2, z3, z4;

z1 = ((x2 - x1) * (y4 - y1) - (x4 - x1) * (y2 - y1));

z2 = ((x4 - x1) * (y3 - y1) - (x3 - x1) * (y4 - y1));

z3 = ((x4 - x2) * (y3 - y2) - (x3 - x2) * (y4 - y2));

z4 = ((x3 - x2) * (y1 - y2) - (x1 - x2) * (y3 - y2));

return (z1 * z2 > 0) && (z3 * z4 > 0);

}

int main()

{

double x1 = 10.0, y1 = 10.0;

double x2 = 50.0, y2 = 10.0;

double x3 = 10.0, y3 = 50.0;

double x4 = 35.0, y4 = 30.0;

bool result = gimp_transform_polygon_is_convex(x1, y1, x2, y2, x3, y3, x4, y4);

printf("result: %d\n", result);

system("pause");

return 0;

}


展开全文
• for循环输出一个平行四边形初学者可以更好的理解for循环的用法
• 本文提供了使用JAVA判断凸多边形的示例代码供大家参考学习，需要的朋友可以看一下
• 通过面积法，判断点P是否在四边形(A,B,C,D)内。如果在四边形内，则四边形的面积=面积(P,A,B)+面积(P,B,C)+面积(P,C,D)+面积(P,D,A); 反之不在四边形内。Java代码 public class Quadrangle { /** * 点是否在...
通过面积法，判断点P是否在四边形(A,B,C,D)内。
如果在四边形内，则四边形的面积=面积(P,A,B)+面积(P,B,C)+面积(P,C,D)+面积(P,D,A);  反之不在四边形内。
Java代码
public class Quadrangle
{
/**
* 点是否在四边形内
* @param a
* @param b
* @param c
* @param d
* @param p
* @return
*/
public static boolean pInQuadrangle(Point a, Point b, Point c,Point d,Point p)
{
"new Point("+a.x+","+a.y+"),"+
"new Point("+b.x+","+b.y+"),"+
"new Point("+c.x+","+c.y+"),"+
"new Point("+d.x+","+d.y+"),"+
"new Point("+p.x+","+p.y+"),"
);
double dTriangle = triangleArea(a,b,p)+triangleArea(b,c,p)
+triangleArea(c,d,p)+triangleArea(d,a,p);
double dQuadrangle = triangleArea(a,b,c)+triangleArea(c,d,a);
}
public static boolean pInQuadrangle(float[] px,float[] py,float x,float y)
{
Point a = new Point((int)px[0],(int)py[0]);
Point b = new Point((int)px[1],(int)py[1]);
Point c = new Point((int)px[2],(int)py[2]);
Point d = new Point((int)px[3],(int)py[3]);
Point p = new Point((int)x,(int)y);
"new Point("+a.x+","+a.y+"),"+
"new Point("+b.x+","+b.y+"),"+
"new Point("+c.x+","+c.y+"),"+
"new Point("+d.x+","+d.y+"),"+
"new Point("+p.x+","+p.y+"),"
);
double dTriangle = triangleArea(a,b,p)+triangleArea(b,c,p)
+triangleArea(c,d,p)+triangleArea(d,a,p);
double dQuadrangle = triangleArea(a,b,c)+triangleArea(c,d,a);
}
// 返回三个点组成三角形的面积
private static double triangleArea(Point a, Point b, Point c)
{
double result = Math.abs((a.x * b.y + b.x * c.y + c.x * a.y - b.x * a.y
- c.x * b.y - a.x * c.y) / 2.0D);
return result;
}
}
展开全文
• “==”如果是基础变量类型就是判断值是否相等，引用变量类型就是判断地址是否相等
“==”如果是基础变量类型就是判断值是否相等，引用变量类型就是判断地址是否相等
展开全文
• 接上一篇（定义四边形类） 具体代码如下： class PXSBX : SBX //平行四边形类，继承四边形类 ... public bool IsPXSBX() //判断是否为平行四边形 { if (((Py2 - Py1) * (Px4 - Px3) == (Py4 - Py
• 客户提出的需求：比如地图上有2个图形，图形任意，需要判断出图形的交点区域的图形。 这样做会遇到很多的难点：目前我们地图上提供可供客户绘制的图形有： 1.箭头（这个暂时不需要判断） 2.椭圆 3.曲线（这两个...
• #include #include #include #include using namespace std;...//四边形判断条件 else puts(“No”); } } 注意数据是long long 原文： https://blog.csdn.net/unusualnow/article/details/51051559
• 在比赛中常常会出现根据四个点来判断这四个点构成四边形的形状 按照顺时针给出，（有时因为斜率的不存在，所以处理要小心点，下面给出一些处理，避免斜率的问题） x[4],y[4]; 1. 平行四边形 两条边两两平行 ...
• 题目大意：给你一堆的点，然后判断最多能组成多少个凸四边形 解题思路：因为最多有30个点，所以直接暴力搜索就可以了 所学知识点： 如何判断四边形，在这种有坐标的情况下当然是用对角线相交来做了  如何...
• 解决方案 There's no built-in method to do it in Java, but it's simple math. The equation of a line is: a * x + b * y = c1 (1) The equation of a line parallel to this is: a * x + b * y = c2 (2) The ...
• I want to detect a quadrilateral shape in an image in Java. I can use the HoughLinesP method in OpenCV (using javaCV for opencv java binding) to detect line segments. But I can't figure out how to det...
• 判断点在四边形内，内有main函数，可直接测试
• maven依赖 ... <artifactId>jts <version>1.13 ... public static void main(String[] args) { // the first coordinate and last one is equal,... System.out.println("判断坐标是否包含2：" + within); }
• 已知四个点的连线，判断是否是四边形分析1.假设四个点PLT，PRT,PLB,PRB,并且他们是以PLT->PRT->PRB->PLB->PLT的方式连接起来。 2.当任意两条对线的延长线的相交点不在任意两条对线线段内，那么可以判断四边形。...
• * @description: 四边形工具类 * @author: ChenWenLong * @create: 2019-06-03 09:52 **/ public class QuadrangleUtils { public static final DecimalFormat ROUNDING_OFF = new ...
• 通过面积法，判断点P是否在四边形(A,B,C,D)内。如果在四边形内,则四边形的面积=面积(P,A,B)+面积(P,B,C)+面积(P,C,D)+面积(P,D,A),反之不在四边形内。  此处我将判断方法定义成了静态方法,方便其他类访问,代码如下...
• 题目描述：  如何判断一个点是否在一个三角形内。测试样例：自定义的POINT类：class POINT{ int x; int y; public POINT(int x,int y){ this.x = x; this.y = y; } }思路一：面积法：  如果一个点在三角形...
• 正经学徒，佛系记录，不搞事情 参考： ...amp;fps=1 /** * 判断点是否在多边形内 * @param point 检测点 * @param pts 多边形的顶点 * @return 点在多边形...
• /// /// 判断多边形是否为平行四边形 /// /// 多边形 /// public bool IsParallelogram(IPolygon pPolygon) { bool bResult = false; if (pPolygon ==
• System.out.println("打印平行四边形"); for (int i = 1; i ; i++) {  //填充空格  for (int j = 1; j ; j++) {  System.out.print(" ");  }  //内层循环 每次打印一个*  for (int k = 1; k ; ...
• 本程序主要实现输入平面坐标系中四边形四个顶点的坐标值并判断是否是正方形。在程序中首先需要输入待判断四边形个数，然后依次输入各四边形四个顶点的坐标值，每个四边形的坐标由两行数据组成，第一行数据是四个...
• 1判断区域的线段是否相交 2判断区域的包含关系 图例 区域使用百度地图API-开源库-鼠标绘制工具条库制作 测试 boolean a = isCoinCide(locationList1, locationList3); System.out.println("是否存在重合区域:...
• 第一次写博客，不太会用，话不多说 直接上代码 详细可以看注释，无向图判断是否存在环比有向图相对复杂一点 ，需要判断访问的节点的临接表中的节点与父节点是否相同。 /** * @Description:判断无向图是否有环 深度...
• * 判断点是否在多边形内 * @param point 检测点 * @param pts 多边形的顶点 * @return 点在多边形内返回true,否则返回false */ public static boolean IsPtInPoly(Point2D.Double point, List<Point2D....
• 矩形 public class b { public static void main(String[] args) { System.out.println("矩形"); //***** //***** //***** for (int i = 0 ; i <... System.out.println("*****");...平行四边形
• 原文地址：... import java.util.ArrayList; /**  * 判断一个点，是否在一个多边形区域内  */ public class Test {  public static void main ( S
• 但这种有一点比较麻烦，就是直线的方向需要判断哪边是在四边形内部，需要额外的计算过程。 直线的五种形式 一般式 ax+by+c=0" role="presentation" style="position: relative;">ax+by+c=0ax+by+
• import java.util.ArrayList; /** * 判断一个点，是否在一个多边形区域内 */ public class Test { public static void main ( String[] args ) { double px = 113.705835; double py = 34.787479; ...

...

java 订阅