洛谷 B2031:计算三角形面积的向量叉积解法
创作时间:
作者:
@小白创作中心
洛谷 B2031:计算三角形面积的向量叉积解法
引用
CSDN
1.
https://blog.csdn.net/hnjzsyjyj/article/details/145344955
洛谷B2031题目要求计算给定三个顶点坐标的三角形面积。本文将介绍一种基于向量叉积的简洁算法来解决这个问题。
题目描述
平面上有一个三角形,它的三个顶点坐标分别为 ((x_1, y_1)),((x_2, y_2)),((x_3, y_3)),那么请问这个三角形的面积是多少。
输入格式
输入仅一行,包括 6 个双精度浮点数,分别对应 (x_1),(y_1),(x_2),(y_2),(x_3),(y_3)。
输出格式
输出也是一行,输出三角形的面积,精确到小数点后两位。
输入样例
0 0 4 0 0 3
输出样例
6.00
算法分析
本题有多种解法,如基于“海伦公式”的解法。下面给出基于“向量叉积”的解法,更简洁。
- 向量叉积:(\mathbf{a} \times \mathbf{b} = |\mathbf{a}||\mathbf{b}|\sin\theta),其中 (\theta) 为向量 (\mathbf{a}) 与向量 (\mathbf{b}) 的夹角。
- 向量叉积的绝对值是以两个向量 (\mathbf{a}) 与 (\mathbf{b}) 为邻边的平行四边形的面积。
在下图中,若设 ((x_1,y_1)) 到 ((x_2,y_2)) 的向量为 (\mathbf{a}),((x_1,y_1)) 到 ((x_3,y_3)) 的向量为 (\mathbf{b}),(dx=x_2-x_1),(dy=y_2-y_1),(du=x_3-x_1),(dv=y_3-y_1),则向量 (\mathbf{a}) 与向量 (\mathbf{b})的叉积的绝对值为 (|dx \cdot dv - du \cdot dy|)。
算法代码
#include <bits/stdc++.h>
using namespace std;
int main() {
double x1, y1, x2, y2, x3, y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
double dx = x2 - x1, dy = y2 - y1, du = x3 - x1, dv = y3 - y1;
double s = abs(dx * dv - du * dy) / 2.0;
printf("%.2lf", s);
return 0;
}
/*
in:
0 0 4 0 0 3
out:
6.00
*/
参考文献
热门推荐
从战略到行动,结核病该如何防治?
遛狗不栓绳吓坏邻居,民警提醒:牵住“文明绳”,规范养犬不掉链
孕妇吃玉米长胎还是长肉?营养价值丰富能促进发育
科技股领涨 大盘企稳反弹 “龙年”A股有望平稳收官
澳大利亚移民政策重大调整!新增旅游类职业,留学配额法案搁置
李嘉诚儿子现身北京,是否带着李嘉诚的任务?释放出什么信号?
左眼睑抽搐颤动的5大原因及应对方法
后背凉养心,腰腿凉养肾!三味中药,一个古方,心肾一起养
梦境解析:周公解梦与虫子的象征意义
C# 数组详解:从基础概念到实际应用
布洛芬饭前吃还是饭后吃?专家解析用药细节
半夜需要看牙怎么找医院?距离/口碑/技术是夜间看牙挂急诊的关键考量!
儿童大脑发育的三个黄金阶段及其特点
维生素B族:健康必需的营养素
经期做什么运动有利于减肥
火锅酱料怎么配?四种搭配,总有一款适合你
美空军批准为下一代战斗机发动机投入数十亿美元
开创性的红外成像揭示了水星表面隐藏的细节
维生素D每天补多少可以预防糖尿病、延长寿命?美国内分泌学会给出了答案
梁山好汉的真实身份:水浒传背后的历史影像
第十个中国血小板日,他们用热血点亮生命之光
农村生小孩报销流程如何清晰了解?这一流程有哪些规定?
新农合孕产保障全攻略:从产检到产后恢复的报销指南
成人一天要摄入多少大卡
办公环境中的安静利器:主动降噪耳机使用体验详解
银行的外汇储备管理的多元化投资策略有哪些?
期权技术分析是什么
前端如何自适应分辨率
三国最强四大谋士,对应的竟是青龙、白虎、朱雀、玄武,相生相克
航空性中耳炎:症状、预防与治疗全解析