三角形的面积-叉积

简介: 三角形的面积-叉积

三角形面积:


题目描述

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

输入描述

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

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

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

输出描述

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

输入输出样例

示例 1

输入

2

0 1

1 0

1 1

0 0

1 1

2 2

输出

0.50

0.00

运行限制

最大运行时间:1s

最大运行内存: 256M


思路


A×B 的几何意义为向量 A和 B 形成的平行四边形的“有向”面积,这个面积是有正负的。叉积的正负符合“右手定则”,可以用下图中的正负情况帮助理解。

叉积的计算方法:

1. def cross(a, b):
2. return a.x * b.y - a.y * b.x

其中a,b是创建的点类,即(x,y)

我们只需要输入三个点,计算出两条边的向量,再求出叉积的绝对值,再将绝对值乘以1/2,就得到了我们要求的三角形的面积


代码:


1. class point():
2.     def __init__(self,x=0,y=0):
3. self.x=x
4. self.y=y
5. 
6. def cross(a,b):
7. return a.x*b.y-a.y*b.x
8. 
9. def area(p1,p2,p3):
10.     a=point()
11.     b=point()
12.     a.x=p1.x-p2.x
13.     a.y=p1.y-p2.y
14.     b.x=p3.x-p2.x
15.     b.y=p3.y-p2.y
16.     ans=abs(cross(a,b))/2
17.     print("%.2f"%ans)
18. 
19. cnt=int(input())
20. p1=point()
21. p2=point()
22. p3=point()
23. for i in range(cnt):
24.     p1.x,p1.y=map(int,input().split())
25.     p2.x,p2.y=map(int,input().split())
26.     p3.x,p3.y=map(int,input().split())
27. area(p1, p2, p3)
目录
相关文章
|
5月前
LeetCode 223. 矩形面积
LeetCode 223. 矩形面积
26 0
|
8月前
wustojc1007求圆的面积和周长
wustojc1007求圆的面积和周长
31 0
|
8月前
wustojc4008能否构成三角形
wustojc4008能否构成三角形
19 0
|
9月前
1359:围成面积
1359:围成面积
|
10月前
|
算法
计算三角形的周长和面积
计算三角形的周长和面积
47 0
|
10月前
|
算法 Python
计算三角形的面积
计算三角形的面积
62 0
|
10月前
|
算法 Python
计算圆的面积
计算圆的面积
52 0
|
11月前
给定圆的半径r,求圆的面积。
给定圆的半径r,求圆的面积。
【C++之纯虚函数与抽象类2】计算圆形、正方形、矩形、梯形和三角形的图形面积,并求和
【C++之纯虚函数与抽象类2】计算圆形、正方形、矩形、梯形和三角形的图形面积,并求和