取任意四边形最长边

假设四边形如下

2-----1
|        |
|        |
3-----0

假设点集合按照0-3排序,有:Point[0]、Point[1]、Point[2]、Point[3]四个元素。

首先要用到的是两点坐标求距离公式:

//传入两点坐标,计算两点之间的距离float GetDistance(const Point A, const Point B)
{  //公式:√[(x1-x2)^2+(y1-y2)^2]
    return sqrt(pow((A.x - B.x),2) + pow((A.y - B.y),2));
}

然后遍历四点,计算每个相邻点之间的距离

//--------------------------
//先取得四点坐标
point = ??;    //四边形四个角点坐标

//--------------------------
float len = 0; //最长距离
float l;           //临时距离

//--------------------------
//遍历四点,计算相邻两点距离
for(int i = 0; i < 4; i++)
{
    //取得下一个点位置
    int j = (i + 1) % 4;

    //计算出两点坐标距离
    l = GetDistance(point[i],point[j]);

    //判断是否最长距离
    if(l > len)
    {
        //更新最长距离
        len = l;
    }
}

//--------------------------
std::cout << "最长距离:" << len << std::endl;

2015年1月22日

御风

时间: 2024-11-10 15:12:55

取任意四边形最长边的相关文章

Java写的抓取任意网页中email地址的小程序

/* * 从网页中抓取邮箱地址 * 正则表达式:java.util.regex.Pattern * 1.定义好邮箱的正则表达式 * 2.对正则表达式预编译 * 3.对正则和网页中的邮箱格式进行匹配 * 4.找到匹配结果 * 5.通过网络程序,打通机器和互联网的一个网站的连接 */ import java.net.*; import java.util.regex.*; import java.io.*; public class EmailAddressFetch { public static

MT【297】任意四边形的一个向量性质

在平面四边形$ABCD$中,已知$E,F,G,H$分别是棱$AB,BC,CD,DA$的中点,若$|EG|^2-|HF|^2=1,$设$|AD|=x,|BC|=y,|AB|=z,|CD|=1,$则$\dfrac{2x+y}{z^2+8}$的最大值是______ 解答: 注:一般的任意四边形有这样的向量性质:如图$\overrightarrow{AB}+\overrightarrow{DC}=2\overrightarrow{HF}$ 原文地址:https://www.cnblogs.com/mat

kettle入门(四) 之kettle中取任意时间变量的使用详细案例

引: 在数据仓库项目中 有一类和生产或者外围系统交互的接口称为FTP文件接口, 用kettle开发.实现这种接口 配置脚本时,经常需要用时间变量来取或者上传FTP里面 固定格式文件名的文本,例如 生产系统定时 每天推送前天的数据文本 到某个FTP服务器 2014-04-28 推送文件名 2015-04-26.txt.gz 2014-04-27 推送文件名 2015-04-25.txt.gz 实现: kettle 版本3.0.4,如下图所示: 所需要三个功能组件 1 获取系统信息 2 java s

sql主表分页查询关联子表取任意一条高效方案

有个业务场景,主表中一条数据,在子表中有多条详情数据.对数据进行展示的时候,产品希望随意拿一条子表的数据关联展示出来,用了很多方案,但是都不够好. sql查询取子表任意一条,多个字段的方案 最终找到一个高效的方案记录如下: 需求如图: 最早的第一套方案: select distinct A.ID, A.Title, A.[Description], A.xx1, A.xx2, A.xx3, B.ID as BId, B.xxA, B.xxB, B.xxC, B.xxD from A left j

Android开发:在onTouchEvent中处理任意时间的长按事件

Android提供了GestureDetector类来处理一些常用的手势操作,比如说 onLongPress,onFling 等.但这里不使用GestureDetector,而是直接在自定义View重写的onTouchEvent中进行处理. 欲实现的效果是:当手机按住屏幕时,如果在指定的时间内没有移动(如500毫秒),那么进入长按模式,此时手指在屏幕上移动都算作长按模式.如果手机按住屏幕就立马移动,那么就算作移动模式. MotionEvent 类提供了记录当前坐标的函数(getX(),getY(

爬取任意两个用户在豆瓣上标记的想读的图书

爬虫的步骤:将要爬取的目标用户想读的图书的首页的url存储在元组中.通过urllib.request方法构造一个发送请求,在通过urllib.urlopen方法发出请求并取得响应(response).通过response.read得到页面html,然后在通过beautifulsoup将html解析成beautiful结构soup.通过soup中的一系列方法得到每本图书的url存到set中,将此url和其余的信息存到一个dict中. 通过判断在当前页是否还有下一页存在(通过页面的标识寻找),如果存

JS-获取任意html节点属性

获取节点属性: 确定获取

取任意范围内的,任意个数的随机数

这是取随机数的常用方法,是采用原生js编写.在一些动画特效以及活动中经常用到,分享一个简单的方法供大家参考. 1 function randomNub(aArray,len,min,max){ 2 //5排序 3 if(aArray.length>=len){ 4 aArray.sort(function(a,b){ 5 return a-b 6 }); 7 return aArray; 8 } 9 //1.取随机数 10 var nowNub = parseInt(Math.random()*

数组任意取三个数中乘积最大值

一.给定一个整型数组,包括正负值,找出取任意三个值的乘积最大 1.对整型排序(这里使用堆排序) //堆排序 private static void headSort(int arr[], int len) { int s = len / 2; for (int i = s; i >= 0; i--) { hSort(arr, i, len); } for (int i = len; i >0 ; i--) { swap(arr, 0 , i); hSort(arr, 0, i-1); } }