Nearest Neighbor Search 简单几何(求空间一点到区域的距离)

2024-02-05 02:38

本文主要是介绍Nearest Neighbor Search 简单几何(求空间一点到区域的距离),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:
https://acm.bnu.edu.cn/v3/statments/52296.pdf

题意:
求空间一点(x0,y0,z0),到三维空间区域的最小距离?

分析:
先求二维平面的最小距离(将平面分为9部分分别处理即可),再求高的距离。
这里写图片描述

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;int main()
{long long x0,x1,x2,y0,y1,y2,z0,z1,z2;while(scanf("%lld%lld%lld",&x0,&y0,&z0)!=EOF){scanf("%lld%lld%lld",&x1,&y1,&z1);scanf("%lld%lld%lld",&x2,&y2,&z2);long long dis1, dis2=0;if(x0 >=x1 && x0 <= x2 && y0 >=y1 && y0 <= y2 &&  z0 >=z1 && z0 <= z2){printf("0\n"); continue;}if(x0<x1 && y0<y1) dis1 = (x1-x0)*(x1-x0)+ (y1-y0)*(y1-y0);else if(x0>=x1 && x0<=x2 && y0 <= y1) dis1 = (y1-y0)*(y1-y0);else if(x0>x2 && y0<y1) dis1 = (x2-x0)*(x2-x0) + (y1-y0)*(y1-y0);else if(x0<x1 && y0>=y1 && y0<=y2) dis1 = (x1-x0)*(x1-x0);else if(x0>=x1 && x0<=x2 && y0>=y1 && y0<=y2) dis1 = 0;else if(x0>x2 && y0>=y1 && y0<=y2) dis1 = (x0-x2)*(x0-x2);else if(x0<x1 && y0>y2) dis1 = (x0-x1)*(x0-x1)+(y0-y2)*(y0-y2);else if(x0>=x1 && x0<=x2 && y0 >y2) dis1 = (y0-y2)*(y0-y2);else dis1 = (x0-x2)*(x0-x2)+(y0-y2)*(y0-y2);if(z0>=z1 && z0<=z2) dis2 = 0;else dis2 = min((z0-z1)*(z0-z1),(z0-z2)*(z0-z2));printf("%lld\n",dis1+dis2);}return 0;
}

这篇关于Nearest Neighbor Search 简单几何(求空间一点到区域的距离)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/679528

相关文章

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

MySQL表空间结构详解表空间到段页操作

《MySQL表空间结构详解表空间到段页操作》在MySQL架构和存储引擎专题中介绍了使用不同存储引擎创建表时生成的表空间数据文件,在本章节主要介绍使用InnoDB存储引擎创建表时生成的表空间数据文件,对... 目录️‍一、什么是表空间结构1.1 表空间与表空间文件的关系是什么?️‍二、用户数据在表空间中是怎么

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

Java内存区域与内存溢出异常的详细探讨

《Java内存区域与内存溢出异常的详细探讨》:本文主要介绍Java内存区域与内存溢出异常的相关资料,分析异常原因并提供解决策略,如参数调整、代码优化等,帮助开发者排查内存问题,需要的朋友可以参考下... 目录一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)J

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要