Loading [MathJax]/jax/output/CommonHTML/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >最大三角形面积 鞋带公式&海伦公式

最大三角形面积 鞋带公式&海伦公式

作者头像
微芒不朽
发布于 2022-09-06 12:48:24
发布于 2022-09-06 12:48:24
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
示例:
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释: 
这五个点如下图所示。组成的橙色三角形是最大的,面积为2注意:

    3 <= points.length <= 50.
    不存在重复的点。
     -50 <= points[i][j] <= 50.
    结果误差值在 10^-6 以内都认为是正确答案。

思路:

    1. 鞋带公式,用于计算任意多边形的面积,可用于计算三角形的面积;
    1. 海伦公式,从三个顶点得到三边长,并使用海伦公司计算出面积;
  • 3.三角形面积公式S = 1/2 * a * b * sin(C),首先得到两边的长度,通过叉积算出夹角的正弦值,并使用公式计算出面积。

主要记录前两种实现方式。

1.鞋带公式:

比如已知 ΔABC 三个顶点的坐标 A:(x1,y1)、 B:(x2,y2)、 C:(x3,y3),对应的矩阵是这样:

计算面积先计算中间的矩阵:

再从最右侧矩阵计算:

则三角形面积为:

抽离出来即有:

公式中约定:当下标大于 n 时, xn+1=x1, yn+1=y1。在此就不证明了。

鞋带公式-实现代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var largestTriangleArea1 = function (points) {
  var maxs = 0;
  for (var i = 0; i < points.length; i++) {
    for (var j = i+1; j < points.length; j++) {
      for (var s = j+1; s < points.length; s++) {
        maxs = Math.max(maxs,0.5*Math.abs(
          points[i][0]*points[j][1]+
          points[j][0]*points[s][1]+
          points[s][0]*points[i][1]-
          points[i][1]*points[j][0]-
          points[j][1]*points[s][0]-
          points[s][1]*points[i][0]))
      }
    }
  }
  return maxs;
};

2.海伦公式

不同的面积公式对应不同的分割方法。

对应的是割补矩形法,而海伦公式对应如下

海伦公式-实现代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var largestTriangleArea = function (points) {
  var maxs = 0;
  for (var i = 0; i < points.length; i++) {
    for (var j = i+1; j < points.length; j++) {
      for (var s = j+1; s < points.length; s++) {
        console.log(points[j][0],points[i][0])
          var a = Math.sqrt(Math.pow( Math.abs(points[j][0] - points[i][0]),2)+Math.pow( Math.abs(points[j][1] - points[i][1]),2));
          var b = Math.sqrt(Math.pow( Math.abs(points[s][0] - points[j][0]),2)+Math.pow( Math.abs(points[s][1] - points[j][1]),2));
          var c = Math.sqrt(Math.pow( Math.abs(points[i][0] - points[s][0]),2)+Math.pow( Math.abs(points[i][1] - points[s][1]),2));
          var l = (a+b+c)*0.5;
          maxs = Math.max(maxs,Math.sqrt(l*(l-a)*(l-b)*(l-c)))
      }
    }
  }
  return maxs;
};

tips:该方式还存在精度问题。

参考文档:

1.海伦公式的几何意义是什么? 2.【Green公式】Hunter’s Apprentice(判断多边形为顺时针或逆时针)--鞋带公式 3.求简单多边形面积时非常有用的“鞋带公式”

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叫我詹躲躲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
leetcode-812-Largest Triangle Area
题目描述: You have a list of points in the plane. Return the area of the largest triangle that can be formed by any 3 of the points. Example: Input: points = [[0,0],[0,1],[1,0],[0,2],[2,0]] Output: 2 Explanation: The five points are show in the figure below.
chenjx85
2018/05/21
9230
LeetCode 812. 最大三角形面积(坐标面积公式)
1. 题目 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。 示例: 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2
Michael阿明
2020/07/13
9110
LeetCode 812. 最大三角形面积(坐标面积公式)
【leetcode刷题】T214-最大三角形面积
https://leetcode-cn.com/problems/largest-triangle-area/
木又AI帮
2019/12/23
4740
【leetcode刷题】T214-最大三角形面积
NYOJ-------三角形
Problem A 三角形 时间限制:1000 ms  |  内存限制:65535 KB 描述 在数学中,如果知道了三个点的坐标,我们就可以判断这三个点能否组成一个三角形;如果可以组成三角形,那么我们还可以求出这个三角形的面积。作为一个大学生,如果给你三个点的坐标,你能快速判断出这三个点能组成一个三角形吗?如果可以组成三角形,你能快速求出三角形的面积吗? 输入第一行输入一个整数N(1 ≤ N ≤ 100),表示有N组测试数据。 接下来有N行,每行包括六个数x1,y1,x2,y2,x3,y3,分别代表三个点的
Gxjun
2018/03/21
5980
算法修炼之练气篇——练气四层
将一个整型变量的值赋给一个布尔型变量,再将这个布尔型变量的值赋给一个整型变量,得到的值是多少?
命运之光
2024/03/20
1140
JavaSE篇学习之路:(二)【小试牛刀】
1.华氏温度&摄氏温度 import java.util.Scanner; public class Text1 { public static void main(String[] args) { System.out.println("请输入要转化的摄氏温度:"); Scanner s=new Scanner(System.in); //读入摄氏温度 double temp=s.nextDouble(); //
百思不得小赵
2022/12/01
1820
JavaSE篇学习之路:(二)【小试牛刀】
打印图形:三角形、圆形和正方形 - Java编程案例
简介:本文将介绍如何使用Java编程语言打印出不同的图形,包括三角形、圆形和正方形。我们将使用嵌套循环和基本的数学计算来实现这些图形的打印。
IT_陈寒
2023/12/13
6920
C语言 | 判断是否可以构成三角形
例84:给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。
小林C语言
2021/02/16
2.5K0
C语言 | 判断是否可以构成三角形
C#实例练习2:程序流程控制(1)
方程 a x^{2}+b x+c=0 的解有以下几种情况 :(1) a=0 和 b=0, 无解(2) a=0 和 b !=0, 有一个实根 : x=-\frac{c}{b}(3) b^{2}-4 a c=0, 有两个相等实根 : x_{1}=x_{2}=-\frac{b}{2 a}(4) b^{2}-4 a c>0,: x_{1}=\frac{-b+\sqrt{b^{2}-4 a c}}{2 a}, x_{2}=\frac{-b-\sqrt{b^{2}-4 a c}}{2 a}(5) b^{2}-4 a c<0,: x_{1}=-\frac{b}{2 a}+\frac{\sqrt{4 a c-b^{2}}}{2 a} \mathrm{i}, x_{2}=-\frac{b}{2 a}-\frac{\sqrt{4 a c-b^{2}}}{2 a} \mathrm{i}_{}
小孙同学
2022/01/17
5400
C#实例练习2:程序流程控制(1)
另一种(Yet Another)三角形线性插值方法
给定一个三角形的顶点坐标(P0, P1 和 P2)以及对应的数值(V0, V1 和 V2),插值求解三角形内一点(坐标给定为P)的数值(V).
用户2615200
2019/04/25
1.2K0
另一种(Yet Another)三角形线性插值方法
利用向量积(叉积)计算三角形的面积和多边形的面积
利用向量积(叉积)计算三角形的面积和多边形的面积: 向量的数量积和向量积: (1)  向量的数量积 (1)  向量的向量积 两个向量a和b的叉积(向量积)可以被定义为: 在这里θ表示两向量之间的角夹角
Angel_Kitty
2018/04/08
6.5K0
利用向量积(叉积)计算三角形的面积和多边形的面积
浙大版《C语言程序设计(第3版)》题目集 习题3-5 三角形判断
给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。
C you again 的博客
2020/09/15
1.1K0
Python数学计算工具1、海伦公式计算三角形面积
海伦公式又译作希伦公式、海龙公式、希罗公式、海伦-秦九韶公式。它是利用三角形的三条边的边长直接求三角形面积的公式。
红目香薰
2022/11/30
1.4K0
Python数学计算工具1、海伦公式计算三角形面积
算法提高 12-1三角形
问题描述   为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体。分别设计独立的函数计算三角形的周长、面积、中心和重心。输入三个点,输出这三个点构成的三角形的周长、面积、外心和重心。结果保留小数点后2位数字。 样例输入 例: 0 0 1 0 0 1 样例输出 例如: 3.41 0.50 0.50 0.50 0.33 0.33
AI那点小事
2020/04/20
4050
算法提高 12-1三角形
三角形光栅化时遇到的坑
前一段时间打算写一个完整的游戏, 客户采用Unity3D引擎, 服务端则采用我自己的Silly网络框架。
重归混沌
2020/04/26
1.1K0
三角形面积
输入每行是一组测试数据,有6个整数x1,y1,x2,y2,x3,y3分别表示三个点的横纵坐标。(坐标值都在0到10000之间) 输入0 0 0 0 0 0表示输入结束 测试数据不超过10000组输出输出这三个点所代表的三角形的面积,结果精确到小数点后1位(即使是整数也要输出一位小数位)样例输入
书童小二
2018/09/03
6230
很有趣的Java分形绘制
我们可以看到西兰花一小簇是整个花簇的一个分支,而在不同尺度下它们具有自相似的外形。换句话说,较小的分支通过放大适当的比例后可以得到一个与整体几乎完全一致的花簇。因此我们可以说西兰花簇是一个分形的实例。
全栈程序员站长
2022/07/14
6300
很有趣的Java分形绘制
python作业题
2.创建一个学生类,有姓名年龄基础属性,创建一个成绩列表,里面装入语文数学英语数学成绩,并将其实例化
一只
2024/07/05
1530
《前端图形学实战》几何学在前端边界计算中的应用和原理分析
之所以会开设这个专栏, 是为了弥补部分程序员对代数和几何学的短板(当然也是为了巩固我的数学基础), 同时在实用价值上, 代数和几何学在编程界也起到了非常重要的推动作用, 比如我们看到的各种建模软件, 仿真&设计软件, 内部都涉及了很多数学原理, 在Web界, 我们比较熟悉的可视化图表, 在线设计软件Figma, 各式各样的可视化低代码产品, 都或多或少的应用了几何学原理, 所以要先让自己做出高价值的产品, 让自己的编程水平更进一步, 代数和几何学知识是非常有必要的。
徐小夕
2022/12/22
1.3K0
《前端图形学实战》几何学在前端边界计算中的应用和原理分析
Python计算三角形的面积
在学习中我们可以发现关于三角形面积的计算经常广泛运用到各种实际问题中,而本文将要针对如何用python计算三角形的面积展开探讨。
算法与编程之美
2024/06/18
1770
Python计算三角形的面积
推荐阅读
相关推荐
leetcode-812-Largest Triangle Area
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验