前言
了解更多常考高频算法题可以关注
公众号:一个搬砖的胖子
企业面试题库:https://codetop.cc/
小程序:CodeTop
该题曾出现在字节跳动、腾讯、网易、美团、小马智行等公司的面试中。如果你面试的是游戏相关岗位,那就更得需要掌握了。
- 如何判断一个点在三角形内部,回答了用向量叉乘判断。——2020.7 字节跳动-游戏
- 手撕:判断一个点是否在三角形内部——2020.9 美团-买菜
- 如何判断一个点在三角形内还是外—— 2019.8 阿里巴巴-游戏
- 怎么判断一个点在不在三角形内——2020.03 腾讯-游戏
题目描述
给定三角形3个点的坐标,在给定一个点(x,y),判断该点是否在三角形中。
ps:坐标值均为double型
题目分析
方法一:面积比较
判断△ABO+△BOC+△COA的面积与△ABC是否相等。若相等则O在内部,反之则在外部。
点O分别在△ABC内外的图示
如何计算三角形的面积呢?通过坐标,很容易计算三角形的边长。再由海伦公式计算面积。
#include <iostream>
#include <math.h>
using namespace std;
struct Point {
double x;
double y;
};
double getDist(Point p1,Point p2) {
//两点之间计算距离公式
return sqrt(pow(p1.x-p2.x,2) + pow(p1.y-p2.y,2));
}
double getArea(Point p1,Point p2,Point p3) {
double a = getDist(p1