SP9509 CYLINDES - Shortest Path on a Cylinder

题目描述

蚂蚁聪明现在在一个圆柱体的表面上,他想要移动到这个圆柱体表面的另一个位置。和其他起名字叫“聪明”的动物一样,他希望找到一条从一个点到另一个点的最短路径。 不幸的是,蚂蚁聪明暂时还无法自己解决这个问题。现在,就由你来帮他找出答案。

输入格式

本题包含若干组测试数据,大约有 1000 组。输入的第一行是一个整数,表示测试数据的数量。 对于每组测试数据,第一行由两个整数构成,分别表示圆柱体的半径和高度,中间用空格隔开。 随后两行分别描述圆柱体表面上的两个点,每行包含三个整数:**h**、**a** 和 **r**。其中,**h** 代表该点所在的圆距离底面的高度;**a** 是极角,范围在 $0 \leq a < 360$;**r** 是该点在所在圆上的径向距离。用三维坐标表示的话,该点位置可以用 $(\cos(\text{a}) \times \text{r}, \sin(\text{a}) \times \text{r}, \text{h})$ 这个点来表示。 可以保证给出的点一定在指定的圆柱体的表面上。

输出格式

对于每组测试数据,输出一行,表示圆柱体表面上两点间最短路径的长度。你的解在至少 99% 的测试数据中,绝对误差需小于 $10^{-2}$。 **本翻译由 AI 自动生成**