上机题目(中级)-判断一个点是否在三角形内(Java)

题目如下:

代码如下:

package huawei;

public final class Demo {

	public static boolean isInTriangle(POINT A, POINT B, POINT C, POINT P) {
		double ABC = triAngleArea(A, B, C);
		double ABp = triAngleArea(A, B, P);
		double ACp = triAngleArea(A, C, P);
		double BCp = triAngleArea(B, C, P);
		if (ABC == ABp + ACp + BCp) {// 若面积之和等于原三角形面积,证明点在三角形内
			return true;
		} else {
			return false;
		}
	}

	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;
	}
}
时间: 2024-10-25 05:36:01

上机题目(中级)-判断一个点是否在三角形内(Java)的相关文章

如何判断一个点是否在一个多边形内?

提示:对多边形进行分割,成为一个个三角形,判断点是否在三角形内. 一个非常有用的解析几何结论:如果P2(x1,y1),P2(x2,y2), P3(x3,y3)是平面上的3个点,那么三角形P1P2P3的面积等于下面绝对值的二分之一: | x1  y1  1 | | x2 y2  1 | = x1y2 + x3y1 + x2y3 –x3y2 – x2y1 – x1y3 | x3 y3  1 | 当且仅当点P3位于直线P1P2(有向直线P1->P2)的右侧时,该表达式的符号为正.这个公式可以在固定的时

判断一个点是否在圆内

/* * 判断一个点是不是在圆内 *  *  */public class Demo { public static void main(String[] args) {  //提示用户定义圆形和半径  Scanner sc = new Scanner(System.in);  //请输入圆形坐标  System.out.println("请输入圆心坐标:");  double a1 = sc.nextDouble();  double a2 = sc.nextDouble();   

编程:判断一个点是否在三角形内部

题目描述: 在二维坐标系中,所有的值都是double类型,那么一个三角形可以由3个点来代表,给定3个点代表的三角形,再给定一个点(x, y),判断(x, y)是否在三角形中 题目分析: 方法1:面积法:如果点(x, y)在三角形内部,那么三个小三角形的面积相加等于大三角形面积. 注意:已知三角形三个点,求三角形面积. 方法2:向量法:如果点(x, y)在三角形内部,那么从某个点逆时针出发,点(x, y)都在每条边的左侧. 注意:判断一个点在一个有向边的左侧还是右侧. #include<iostr

如何判断一个点是否在多边形内

原理 如何判断一个点在多边形内还是多边形外,最常见的方法就是射线法,原理就是,从点P开始,做一条任意的射线,如果射线与多边形边的交点个数为偶数个则表明点在多边形外,交点个数为奇数个时则表明点在多边形内.如果点在多边形内部时,无论如何画射线都会有交点,且为奇数个.如下图: 实现(C#) 1 public static bool InsidePolygon(List<Point> polygon, Point p) 2 { 3 if (polygon.Count <= 0) 4 return

判断一个点是否在多边形内

#转载自:http://blog.csdn.net/u011722133/article/details/52813374 在GIS(地理信息管理系统)/PCL(点云库)中,判断一个坐标是否在多边形内部是个经常要遇到的问题.乍听起来还挺复杂.根据W. Randolph Franklin 提出的PNPoly算法,只需区区几行代码就解决了这个问题 假设多边形的坐标存放在一个数组里,首先我们需要取得该数组在横坐标和纵坐标的最大值和最小值,根据这四个点算出一个四边型,首先判断目标坐标点是否在这个四边型之

上机题目(初级)-小明的筷子(Java)

题目如下: 代码如下: package huawei; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Demo { public static int checkChopsticks(int[] chopsticks) { /* * map的key作为筷子的长度,value作为筷子的个数 */ Map<Integer, Integer> hm = new HashMa

U3D如何判断一个GameObject是否在屏幕内

A物体有CameraB渲染,首先将A物体世界坐标转换为屏幕坐标,再由屏幕坐标的x与Screen.width做比较,如果x<Screen.width则在屏幕内,否则在屏幕外. Vector3 screen3dPos = CameraB.WorldToScreenPoint(enemy.transform.position); if (screen3dPos.x > Screen.width) { Debug.Log("out of screen"); }else{ Debug

7_1判断一个单链表是否有环

转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4251303.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目:判断一个单链表是否有环,如果有环,求出环的入口节点. 题目分析: 建一个待头节点的单链表,有两个指针p,q最开始都指向第一个真正节点,p,诶次走1步,q每次走

判断一个二叉树是否是平衡二叉树

题目:判断一个二叉排序树是否是平衡二叉树 思路:利用递归判断左右子树的深度是否相差1来判断是否是平衡二叉树. 1 #include<stdio.h> 2 #include "stdafx.h" 3 4 struct BinaryTreeNode 5 { 6 int m_nValue; 7 BinaryTreeNode* m_pLeft; 8 BinaryTreeNode* m_pRight; 9 }; 10 11 BinaryTreeNode* CreateBinaryTr