QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 512 MB Points totaux : 100

#12629. 木星之旅

Statistiques

公元 10,007 年,阿拉伯地区的所有美食都已绝迹。幸运的是,你曾进行过一次时间旅行,品尝过这些食物的美味。一个外星传言告诉你,木星上仍然存有阿拉伯美食。由于外星人的传言与人类不同,通常都是真实的,你决定建造自己的宇宙飞船前往木星。为了测试你嵌入飞船的控制系统,你想建造一个飞行模拟器,这是一种用于宇航员训练及其他目的,能够人工模拟航天器飞行及其飞行环境的装置。

在这个问题中,飞行模拟器由一个边长为 $L$ 的二维等边三角形组成,三个执行器(机械装置,可视为可变长度的线段)分别连接到三角形的顶点 $A, B, C$。执行器的另一端都连接到一个位于 $(0, 0, -H)$ 的静态基点。三角形的中点(位于 $(0, 0, 0)$)通过球形连接固定在同一基点上,这意味着三角形可以向任何方向旋转,但其中点不能移动。

操纵杆(用于控制三角形旋转的装置)的方向向量为 $\mathbf{N} = (N_x, N_y, N_z)$,它始终垂直于三角形所在的平面。通过改变操纵杆的方向,每个执行器的长度会发生变化,三角形也会随之旋转(操纵杆始终保持垂直于三角形),而中点保持在 $(0, 0, 0)$。最初,所有执行器的长度相同,三角形水平放置在 $XY$ 平面上(即 $z=0$),操纵杆指向正 $Z$ 轴方向(即初始时 $\mathbf{N} = (0, 0, 1)$)。点 $A$ 最初位于负 $X$ 轴上($z_A = y_A = 0, x_A < 0$),且顶点 $A, B, C$ 相对于操纵杆方向呈逆时针顺序排列。

我们需要你编写一个程序,根据给定的新操纵杆方向使模拟器旋转。形式化地说,给定旋转后的操纵杆方向和旋转后点 $A$ 的位置,我们需要你计算分别连接到顶点 $A, B, C$ 的执行器长度 $L_1, L_2, L_3$,使得操纵杆方向仍然垂直于三角形。

输入格式

输入的第一行包含一个整数 $T$,表示测试用例的数量。

每个测试用例包含一行,包含八个整数 $N_x, N_y, N_z, A_x, A_y, A_z, L$ 和 $H$($-500 \le A_x, A_y, A_z, N_x, N_y \le 500, 1 \le N_z, H, L \le 500$),其中 $N_x, N_y, N_z$ 是旋转后的操纵杆方向,$A_x, A_y, A_z$ 是旋转后点 $A$ 的位置,$L$ 是三角形的边长,$H$ 是执行器连接的基点高度。

保证所有测试用例满足以下约束: $A_x, A_y, A_z \neq 0$ $A_x N_x + A_y N_y + A_z N_z = 0$ * $A_x^2 + A_y^2 + A_z^2 = \frac{L^2}{3}$

输出格式

对于每个测试用例,输出一行,包含三个用空格分隔的十进制数(保留小数点后 6 位),即连接到顶点 $A, B, C$ 的执行器长度 $L_1, L_2, L_3$。

输入保证有且仅有一个解。结果将通过相对误差进行检查。

样例

输入格式 1

2
13 -18 1 7 5 -1 15 12
-12 -17 1 7 -5 -1 15 3

输出格式 1

13.964240 20.238885 7.237923
8.831761 11.473743 6.507936

说明

下图展示了飞行模拟器在不同操纵杆方向下的不同位置:

在 XZ 平面旋转

在 YZ 平面旋转

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.