通过面积法,判断点P是否在四边形(A,B,C,D)内。
如果在四边形内则, 四边形的面积=面积(P,A,B)+面积(P,B,C)+面积(P,C,D)+面积(P,D,A)
反之不在四边形内。
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)
{
Log.d("Walk Game","Quadrangle:"+
"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);
return dTriangle==dQuadrangle;
}
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);
Log.d("Walk Game","Quadrangle:"+
"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);
return dTriangle==dQuadrangle;
}
// 返回三个点组成三角形的面积
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;
}
}
分享到:
相关推荐
判断点在四边形内,内有main函数,可直接测试
在做图像处理的时候,有时候要求判断某兴趣点是不是中某四边形之内,这个小程序提供了一个算法。输入是四边形的四个顶点a[4]和兴趣点fi;如果返回值是true表示fi在a[4],否则不在四边形之内。
在计算机图形学中,判断一个点是否位于四边形内部是一项基本任务,有着广泛的应用,例如在游戏开发、图像处理和碰撞检测等领域。本程序旨在解决这个问题,它能处理任意形状的四边形,而不仅仅是规则的矩形或正方形。...
在图像处理领域,"任意四边形转矩形"是一个常见的需求,特别是在处理倾斜拍摄的图像时。这种问题经常出现在拍摄海报、视频帧或者文件时,由于非正面拍摄角度导致对象在图像中呈现为非正交的四边形形状。为了解决这个...
每个子域被视为一个有限元,通过在局部空间中使用基函数来变换物理区域,进而简化了积分的计算。这种方法不仅适用于平面问题,也广泛应用于三维结构分析。 #### 方法实施步骤 1. **区域转换**:首先,将任意四边形...
在本问题中,我们探讨的是如何使用易语言来判断一个坐标点是否位于不规则四边形内。易语言是一种简单易学的中文编程语言,它提供了丰富的数学函数和几何算法支持,使得这样的计算变得可行。 首先,我们需要理解基本...
要把矩形图像切割成1--2个像素高,宽与矩形图像宽相等的图片,对于每一个图片进行拉伸变形后,绘制到目标的相应位置,全部完成后整个任意四边形图像就绘制出来了,为避免闪烁要在内存中绘制,再把内存中这个图像一次...
在计算机图形学中,判断一个点是否位于多边形内部是一项常见的任务,尤其在VB(Visual Basic)编程环境中。这个任务通常涉及到二维几何计算和算法的实现。在VB中,我们可以利用数学方法来解决这个问题,这通常是通过...
在计算机图形学、物理模拟和几何计算等领域,判断一个质点是否位于凸四边形内部是一个常见的问题。这里我们将深入探讨这个话题,并提供一种解决方法。 首先,我们要明确质点和四边形的概念。质点通常指的是没有体积...
为了使四边形的形状可变,你可以提供一个接口让用户通过点击特定点来调整顶点位置,或者添加一个编辑模式,允许用户自由拖动顶点。同时,为了改变填充颜色,可以在自定义View中添加一个方法,允许外部设置颜色值,...
在计算机图形学中,判断一个坐标点是否位于不规则四边形内部是一个常见的问题,尤其在游戏开发、图像处理和碰撞检测等领域。本教程将详细解释如何使用易语言实现这一功能,主要涉及的知识点包括计算两点间的距离以及...
这篇教学设计聚焦于“任意四边形的中点四边形”的概念,旨在提升学生在数学领域的兴趣、独立思考能力和创新能力。教学过程中,教师将采用自主合作式教学方法,结合电脑和多媒体课件,让学生通过互动探讨和实践活动来...
"平行四边形的效果实现"是一个常见的需求,特别是在设计创意布局或图形元素时。本篇将详细介绍如何利用ShapeDrawable、shape和canvas在Android中创建平行四边形。 首先,ShapeDrawable是Android SDK提供的一种可...
为了实现这一点,需要定义一个纹理坐标系,并根据平行四边形的顶点坐标来确定每个像素在新的几何形状上的位置。 3. 平行四边形的数学基础 平行四边形是由四个顶点定义的,每个顶点有(x, y)坐标。理解这些顶点如何...
四边形是一个有四个边和四个角的平面图形,常见的四边形包括正方形、矩形、平行四边形和菱形等。这个Java课程实验可能是为了帮助学生理解和实现对四边形的各种属性,如面积、周长、对角线长度以及旋转和平移等操作的...
C#判断指定的坐标点(经纬度)是否在指定多边形内坐标组范围内 !地图坐标点判断(经纬度判断)
在初中数学的平行四边形章节中,学生们需要掌握多种判断一个四边形是否为平行四边形的方法。以下是这些知识点的详细说明: 1. **边或角的条件**: - **条件1**: 如果四边形中的两组对边分别平行(例如,AB∥CD且BC...
在计算机视觉领域,OpenCV(开源计算机视觉库)是一个强大的工具,用于处理图像和视频数据。本项目聚焦于“基于OpenCV的四边形轮廓跟踪”,这是一个关键的技术,广泛应用于对象检测、图像分割、视频分析等多种场景。...