博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8、判断三角形ABC中是否有点D
阅读量:6799 次
发布时间:2019-06-26

本文共 1045 字,大约阅读时间需要 3 分钟。

思路:

首先连接AD,BD,CD,SABC为三角形的面积,SABD为三角形ABD的面积,SACD....,SBCD.......

因此,若D在三角形则SABC = SABD + SACD + SBCD,若不等,则不在

#include
#include
using namespace std;#define ABS_FLOAT_0 0.0001struct point{ float x; float y;};/** 计算三角形面积*/float areas(const point p1, const point p2, const point p3){ point AB, BC; AB.x = p1.x - p2.x; AB.y = p1.y - p1.x; BC.x = p3.x - p2.x; BC.y = p3.y - p3.y; float s = fabs((AB.x*BC.y - BC.x*AB.y) / 2.0); if (s > 0) { return s; } else if (s < 0) { s = -s; return s; }}/**判断给定一点是否在三角形内或边上*/bool Disareas(const point A, const point B, const point C, const point D){ float SABC, SABD, SADC, SBCD; SABC = areas(A, B, C); SABD = areas(A, B, D); SADC = areas(A, D, C); SBCD = areas(B, C, D); float SABCD = SABD + SADC + SBCD; if ((SABC - SABCD) > -ABS_FLOAT_0 && (SABC - SABCD) < ABS_FLOAT_0) { return true; } else{ return false; }}

 

转载于:https://www.cnblogs.com/zhuifeng-mayi/p/10764754.html

你可能感兴趣的文章
使用WebDriver遇到的一些问题汇总
查看>>
AI:你们是不是在等一顶红帽子?
查看>>
三周第二次课 3.4 usermod命令 3.5 用户密码管理 3.6 mkpasswd命令
查看>>
六周第一次课 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下
查看>>
Window 2012 R2系统从无命令行配置开启GUI的功能,实现操作系统图形化界面。
查看>>
ToastUtil,一个简单的Toast封装
查看>>
如何在Centos7进行网络配置
查看>>
orabbix结合python发送图形报表
查看>>
Android权限处理分类
查看>>
找不到TouchCopy16激活码位置?
查看>>
IT兄弟连 JavaWeb教程 URI、URL
查看>>
为什么说甲骨文裁员也属无奈之举?
查看>>
Wdatepicker日期控件的使用指南
查看>>
数据包结构分析
查看>>
[转]一位前辈对IT工程师的职业前途的一点个人看法
查看>>
Linux文件系统只读Read-only file system
查看>>
Migrate to new vCenter Server while using dvSwitches
查看>>
ConcurrentHashMap原理分析
查看>>
phpstorm config include paths for swoole
查看>>
ruby的基础语法
查看>>