首页 > 其他分享 >Delivery Robot

Delivery Robot

时间:2023-09-14 09:44:23浏览次数:32  
标签:tau return Point read db Robot Delivery Rg

Description

给定两个圆 \(A\) 和 \(B\) 的圆心坐标和半径,以及初始速度。现需改变 \(A\) 的速度,使得在 \(t=0 \sim 1s\) 时,两个圆不会碰撞(相交)。求出 \(\min\{|\Delta v_A|\}\) 。

Solution

不妨将 \(A\) 平移至原点,建立极坐标系。并以 \(B\) 为参考系,算出 \(A\) 的相对速度 \(V=v_A-v_B\)。两圆不相交等价于 \(|AB|\geq r1+r2\)。于是不妨将 \(A\) 的半径加给 \(B\),而 \(A\) 转换为点。于是问题变为了将 \(V\) 移出红线之外的最短距离,如图。

会发现,最短距离就是到两条切线的距离,或到圆弧的距离,分类讨论一下。主要注意一下写法,转化为极坐标之后,操作非常方便。

另外注意,只有当 \(V\) 位于 \(AEBD\) 内的时候,到圆弧的距离才有效,用三角剖分判断是否在内部。

#include<stdio.h>
#include<math.h>
#include<algorithm>

using namespace std;

#define vec(x,n) Point(x*cos(n),x*sin(n))

typedef double db;

struct Point{
	db x,y;
	Point(db x_=0.0,db y_=0.0):x(x_),y(y_){}
	Point operator -(const Point &X){
		return Point(x-X.x,y-X.y);
	}
	db operator *(const Point &X){
		return x*X.y-y*X.x;
	}
	void read(){scanf("%lf%lf",&x,&y);}
	db len(){return sqrt(x*x+y*y);}
}pa,pb,va,vb;

db r1,r2;

const db tau=acos(-1.0)*2;

inline db Rg(db n){
	db ret=n-(floor(n/tau)-1)*tau;
	return ret>=tau? ret-tau:ret;
}

int main(){
	int T; scanf("%d",&T);
	while(T--){
		scanf("%lf",&r1); pa.read(),va.read();
		scanf("%lf",&r2); pb.read(),vb.read();
		
		db R=r1+r2;
		Point P=pb-pa,V=va-vb;
		db n1=Rg(atan2(P.y,P.x)),n2=Rg(asin(R/P.len()));
		db l1=Rg(n1-n2),l2=Rg(n1+n2);
		
		Point ret1=vec(1,l1);
		if(V*ret1>=0||V*vec(1,l2)<=0){
			printf("0.0000000000\n");
			continue;
		}
		
		db n3=atan(V.y/V.x);
		db ans=min(fabs(sin(Rg(l2-n3))),fabs(sin(Rg(n3-l1))))*V.len();
		
		db d=P.len()*cos(n2);
		Point A(0,0),B=vec(d,l1),C=vec(d,l2);
		Point D[4]={A,B,P,C};
		bool flag=1;
		for(int i=0;i<4;i++)
			flag&=((D[i]-V)*(D[(i+1)%4]-V)>=0);
		if(flag) ans=min(ans,max(R-(V-P).len(),0.0));
		
		printf("%.10lf\n",ans);
	}
}

标签:tau,return,Point,read,db,Robot,Delivery,Rg
From: https://www.cnblogs.com/wwlwQWQ/p/17701460.html

相关文章

  • 谷歌优化之如何编写和提交 robots.txt 文件
    您可以使用robots.txt文件控制抓取工具可以访问您网站上的哪些文件。robots.txt文件应位于网站的根目录下。因此,对于网站 www.example.com,robots.txt文件的路径应为 www.example.com/robots.txt。robots.txt是一种遵循漫游器排除标准的纯文本文件,由一条或多条规则组成。每条......
  • 【网络爬虫笔记】爬虫Robots协议语法详解
    Robots协议是指一个被称为RobotsExclusionProtocol的协议。该协议的主要功能是向网络蜘蛛、机器人等搜索引擎爬虫提供一个标准的访问控制机制,告诉它们哪些页面可以被抓取,哪些页面不可以被抓取。本文将进行爬虫Robots协议语法详解,同时提供相关代码和案例。Robots协议的基本语法Rob......
  • Robot 框架学习笔记
    Robot框架学习笔记为了更好地让读者理解快速学习新框架的思路,笔者接下来会继续介绍另一个名为Robot的自动化测试框架,希望读者能参考笔者从零开始讲解一个开发/测试框架的流程,从中总结出适合于自己的快速学习方法。与Selenium框架相比,Robot框架是一款更为通用的、可扩展的......
  • Robot Framework安装以及RIDE界面介绍
    RobotFramework安装以及RIDE界面介绍1.RobotFramework框架的底层是基于python,所以在安装RobotFramework之前,我先介绍一下python的一些注意点,因为后续RobotFramework的安装都将基于pip来安装。不管在windows系统下,还是在linux系统下,很经常就会遇到一个关于python版本的问题,那么......
  • cf 583 B. Robot's Task(模拟)
    链接:http://codeforces.com/problemset/problem/583/B//求改变的方向次数//直接模拟题目是从1开始所以从左到右从右到左#include<stdio.h>#include<algorithm>usingnamespacestd;inta[1000+10];intvis[1000+10];intmain(){intn,t=0;scanf("%d",&n);......
  • Mitsubishi FX5U与三菱ROBOT CC‐LINK IEF Basic通讯
    步骤一:新建工程登录配置文件(配置文件可以根据机械手型号跟厂家获取,这里以CR-800机器人为例); 步骤二:CC‐LINKIEFBasic设置 步骤三:远程IO刷新设置 链接侧为机器人;CPU侧为FX5UCPU;1.位元件RX:机器人的输出作为PLC的远程输人即PLCM6000-M6063的状态是随着M_out(6......
  • 【攻防世界】-Training-WWW-Robots
    信息收集翻译:在这个小小的训练挑战中,你将学习机器人的排除标准。robots.txt文件用于网络爬虫检查它们是否被允许抓取和索引您的网站或仅部分网站。有时,这些文件揭示了目录结构,而不是保护内容不被抓取。享受吧!解题思路根据题目可以联想到君子协议robots.txt在url后输入:......
  • POJ 1548 Robots
    \(POJ\)\(1548\)\(Robots\)题意相当于给出\(N\)个坐标点,因为机器人只能向下或者向右走,所以如果能到达其他点,则连接这两个点,即line[i][j]=1最小路径覆盖数:对于一个\(DAG\)(有向无环图),选取最少条路径,使得每个顶点属于且仅属于一条路径。路径长度可以为零;(有向图中找一些路径,使......
  • Linux为何是软件开发专业人员的心头爱-Robotics Ubuntu
    Linux与Windows都是十分常见的电脑操作系统,相信你对它们二者都有所了解!在你的使用过程中,是否有什么事让你觉得在Linux上顺理成章,换到Windows上就令你费解?亦或者关于这二者你有任何想要分享的,都可以在这里留下你的看法~你可以从以下几个方面进行创作(仅供参考)****不会Linux不能算计算......
  • [Robot]FANUC发那科机器人零点标定
    FANUC的机械原点校准是通过零点标定来进行,具体操作步骤如下。首先,需要设定变量$MASTER_ENB的值为1,具体步骤为。1.MENU-下一页-变量。2.ITEM-输入313-变量$MASTER_ENB的值设为1。(注:不一定是313,可以通过shift+上/下键进行快速翻页查找)。接下来,通过MENU-下一页-系统-零点标定/......