平面几何-python

简介: 平面几何-python

三角形面积


题目描述

平面直角坐标系中有一个三角形, 请你求出它的面积。

输入描述

第一行输入一个 TT ,代表测试数据量

每组测试数据输入有三行,每行一个实数坐标 (x, y)(x,y) 代表三角形三个顶点。

1≤T≤10^3,−10^5≤x,y≤10^5

输出描述

输出一个实数表示三角形面积。结果保留2位小数,误差不超过 10^{-2}10−2

输入输出样例

示例 1

输入


1. 2
2. 0 1
3. 1 0
4. 1 1
5. 0 0
6. 1 1
7. 2 2

输出

1. 0.50
2. 0.00


运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M


思路:


我们这里介绍一个计算三角形面积的公式,海伦公式介绍

公式表述

海伦公式

假设在平面内,有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得:

                                               S=√p(p-a)(p-b)(p-c)

而公式里的p为半周长(周长的一半):

                                                p=(a+b+c)/2

题目中给了我们三角形的三个点的坐标,我们可以通过勾股定理计算各个边的长度,在带入海伦公式计算即可

由于本题要求高精度,python浮点数是64位的,存在误差,大致理解思路即可



代码:


1. from math import*
2. 
3. def Dist(x1,x2,y1,y2):
4. return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
5. 
6. t = int(input())
7. for i in range(t):
8.     x1,y1=map(float,input().split())
9.     x2,y2=map(float,input().split())
10.     x3,y3=map(float,input().split())
11.     a=Dist(x1, x2, y1, y2)
12.     b=Dist(x3, x2, y3, y2)
13.     c=Dist(x1, x3, y1, y3)
14.     p=(a+b+c)/2
15.     s=sqrt(p*(p-a)*(p-b)*(p-c))
16.     print("{:.2f}".format(s))

平面切分


【问题描述】

平面上有 N 条直线,其中第 i 条直线是 y = Ai · x + Bi。

请计算这些直线将平面分成了几个部分。

【输入格式】

第一行包含一个整数 N。

以下 N 行,每行包含两个整数 Ai, Bi。

【输出格式】

一个整数代表答案。

【样例输入】

3

1 1

2 2

3 3

【样例输出】

6

【评测用例规模与约定】

对于 50% 的评测用例,1 ≤ N ≤ 4, 10 ≤ Ai, Bi ≤ 10。

对于所有评测用例,1 ≤ N ≤ 1000, 100000 ≤ Ai, Bi ≤ 100000。

思路


我们先读取数据n,再将每组线存入元组列表当中,使用set()来对重复的线段进行去重。

之后遍历所有的线段,并将当前线段与它之前的线段的交点找出来,存到set()创建的无序不重复元素集p中,确保每个交点都是不同的。

我们为什么要寻找线与线之间的交点呢?因为我们发现,每增加一条线,如果它和之前的线有n个交点,那么总的分割的区域就要增加n+1个。这也体现在我们的代码中

代码


1. n=eval(input())
2. line=[tuple(map(int,input().split())) for i in range(n)]
3. s=set(line)
4. line=list(s)
5. ans=2
6. for i in range(1,len(line)):
7.     a1,b1=line[i]
8.     pos=set()
9. for j in range(i):
10.         a2,b2=line[j]
11. if a1==a2:
12. continue
13.         x=(b1-b2)/(a1-a2)
14.         y=a1*x+b1
15.         pos.add((x,y))
16.     ans+=len(pos)+1
17. print(ans)
目录
相关文章
|
9月前
|
SQL 定位技术 API
GEE python:按照矢量中的几何位置、属性名称和字符串去筛选矢量集合
GEE python:按照矢量中的几何位置、属性名称和字符串去筛选矢量集合
107 0
|
9月前
|
算法 机器人 Python
Python实现教程:平面最短路径算法
Python实现教程:平面最短路径算法
132 1
|
9月前
|
Python
Python数学基础-识图一、平面直角坐标系
Python数学基础-识图一、平面直角坐标系
117 0
|
Python 容器
Python Tkinter教程(三)——三种几何布局管理器Pack、Place和Grid的所有参数及相关方法及详细用法
Python Tkinter教程(三)——三种几何布局管理器Pack、Place和Grid的所有参数及相关方法及详细用法
1280 0
|
Python
蓝桥杯 平面切割 Python
蓝桥杯 平面切割 Python
117 0
蓝桥杯 平面切割 Python
|
计算机视觉
几何变换之重映射---OpenCV-Python开发指南(14)
几何变换之重映射---OpenCV-Python开发指南(14)
143 0
几何变换之重映射---OpenCV-Python开发指南(14)
|
计算机视觉
几何变换之透视---OpenCV-Python开发指南(13)
几何变换之透视---OpenCV-Python开发指南(13)
176 0
几何变换之透视---OpenCV-Python开发指南(13)
|
数据安全/隐私保护
位平面分解与合成---OpenCV-Python开发指南(4)
位平面分解与合成---OpenCV-Python开发指南(4)
398 0
位平面分解与合成---OpenCV-Python开发指南(4)
python-opencv(4)--几何变换
文章目录 1. 图像缩放 1.1. resize()函数 1.2. 指定大小的缩放 1.3. resize函数(fx,fy) 2. 图像翻转-flip函数
149 0
python-opencv(4)--几何变换

热门文章

最新文章