首页 > 其他分享 >计算几何入门

计算几何入门

时间:2023-08-09 12:12:11浏览次数:42  
标签:node tmp 入门 top 叉积 向量 计算 几何 dot

计算几何入门

目录

一 向量

我认为唯一比较有用的东西是向量的叉积

1.叉积

a.定义

对于两个0起点开始,最终点为(a1,a2)和(b1,b2)的两个向量,其叉积为a1 * b2 - a2 * b1。

b.应用

可以判断两个向量的旋转方向:

假如A和B的叉积最终得到<0,那么说明A是逆时针旋转到B的,也可以说,B在A的左手边

若得到=0,那么这两个向量是共线的

若得到>0,那么A可以顺时针旋转得到B,也可以说,B在A的右手边

凸包

寻找凸包

算法1:Graham

算法流程:

1.找到一个在左下角的点(优先满足y坐标更小),令其为s

2.对于其他点,使用极角排序,对于极角相同的点离s更小的排在前面。

为了保证精确度,可以用以下代码排序

bool cmp(node p1,node p2)
{
    double tmp=check(dot[1],p1,dot[1],p2);
    if(tmp>0) 
		return 1;
    if(tmp==0&&dis(dot[1],p1)<dis(dot[1],p2)) 
		return 1;
    return 0;
}

其中check/tmp是叉积,dis为距离

3.维护一个栈,保证里面至少要有两个元素(s和dot[2]),对于剩下的n-2个点,尝试将其加入到栈中。

令栈首为A,栈次为B,将加入的为C。

要求AC构成的向量在BA的左侧,可以看以下代码:

for(int i=3;i<=n;i++){
	while(top>=2&&pan(s[top],s[top-1],dot[i])==1){
		top--;
	}
	top++;
	s[top]=dot[i];
} 

其中pan是:

bool pan(node x,node y,node k){//栈头点/栈次点/将要加入的点 ,返回是否要弹出栈头 
	if(check(k,x,y,x)>0){//左侧
		return 0;
	}
	else{
		return 1;//在一条线上的暂时视为删除 
	}
}

标签:node,tmp,入门,top,叉积,向量,计算,几何,dot
From: https://www.cnblogs.com/linghusama/p/17616531.html

相关文章

  • 使用bigInt解决js计算精度问题
    1.引用mathjsnpminstallmathjs2.封装计算方法utils/math.js 3.在需要使用的文件引入和调用 ......
  • java XSSFWorkbook excel 公式计算
    excel公式计算//创建一个工作薄XSSFWorkbookworkbook=newXSSFWorkbook();//如果是最后一列添加一个求和计算,将结果放到同一列最后一个。dataLists数据列表XSSFSheetsheet=workbook.getSheet(replaceSpecStr(sheetNames.get(0)));Rowrow......
  • Pytorch框架CV开发-从入门到实战
    点击下载:Pytorch框架CV开发-从入门到实战课程分享,视频+源码+数据集下载!提取码:bbvaPyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流框架如......
  • Max_QAQ 计算几何
    目录二维计算几何基础点、向量、直线多边形基础凸包Andrew算法动态凸包半平面交Minkowski和杂项Pick定理最小圆覆盖平面最近点对二维计算几何基础点、向量、直线点:\((x,y)\).向量:\((x,y)\).向量的运算(\(A=(a_1,a_2),\B=(b_1,b_2)\)):加减:\(A\pmB=(a_1\pmb_1,a_2\pm......
  • nlp入门(三)基于贝叶斯算法的拼写错误检测器
    源码请到:自然语言处理练习:学习自然语言处理时候写的一些代码(gitee.com)数据来源:norvig.com/big.txt贝叶斯原理可看这里:机器学习算法学习笔记-过客匆匆,沉沉浮浮-博客园(cnblogs.com)一、数据预处理将输入的数据全部变为小写方便后续处理defwords(text):return......
  • 云计算云存储的一些基本概念
    我们在学习云计算和云存储之前,需要先了解一些很常见的基本概念,否则在学习过程中和选型时会比较晕。云计算的三种服务模式:IaaS,PaaS和SaaS云的分层任何一个在互联网上提供其服务的公司都可以叫做云计算公司。其实云计算分几层的,分别是Infrastructure(基础设施)-as-a-Service,Platform(平......
  • python计算一个整数列表中所有元素的平均值
    defcalculate_average(numbers):  total=sum(numbers)  average=total/len(numbers)  returnaverage#示例输入number_list=[1,2,3,4,5]#调用函数并打印结果average_value=calculate_average(number_list)print("平均值为:",average_value)......
  • python计算一个整数列表中所有元素的平均值
    defcalculate_average(numbers):  total=sum(numbers)  average=total/len(numbers)  returnaverage#示例输入number_list=[1,2,3,4,5]#调用函数并打印结果average_value=calculate_average(number_list)print("平均值为:",average_value)......
  • python入门
    环境搭建:官网下载,pycharm编译器用于开发          Jupyter沙箱 变量:定义变量,变量名=变量  标识符(变量名)命名规则:变量名中,只能由数字字母划线三类组成,   不能以数字开头。不能使用内置关键字(函数名,定义函数的DEF)。  严格区分大小写(小写大写......
  • 处理器核心 错误源: 已更正的计算机检查 错误类型: 内部奇偶校验错误
    问题描述:最近工作用的PC,会偶发的自动重启问题原因:起初以为是CPU过热(毕竟是过40度的城市),然而经过一系列的检查并未发现风扇异常。想着这台PC也跟了我快3年了,估计积灰可能比较严重,于是清理了一下,结果仍然没有解决最终,在事件查看器->系统中看到在自动重启前系统记录了一条错误日志“......