java - 寻找一种将平移/倾斜方向反转回 x、y 的方法
问题描述
我有如下内容:输入 x、y 和 h 以获得平移和倾斜方向
double dz = Math.sqrt( x*x + y*y );
double rotPan = Math.toDegrees(Math.atan(x / y));
double rotTilt = Math.toDegrees(Math.atan( h / dz ));
是否可以仅通过将h赋予起点并达到初始x和y值来反转 Math 的效果?
解决方案
你所要做的就是重新排列方程。
double dz = Math.sqrt( x*x + y*y );
double rotPan = Math.toDegrees(Math.atan(x / y));
double rotTilt = Math.toDegrees(Math.atan( h / dz ));
给定rotTilt
,您可以计算 与 的h
比率dz
:
double hOverDz = Math.tan(Math.toRadians(rotTilt));
所以如果你知道h
,你可以计算dz
:
dz = h / Math.tan(Math.toRadians(rotTilt));
给定rotPan
,您可以计算 与 的x
比率y
:
double xOverY = Math.tan(Math.toRadians(rotPan));
所以:
x = y * xOverY;
代入和重新排列:
dz = sqrt(y^2 * xOverY^2 + y*y)
= sqrt((xOverY^2 + 1) * y*y)
dz = y * sqrt(1 + xOverY^2)
y = dz / sqrt(1 + xOverY^2)
= h / (tan(rotTilt) * sqrt(1 + xOverY^2))
y = h / tan(rotTile) * sqrt(1 + tan(rotPan)^2))
因此
x = y * xOverY
= (h / tan(rotTile) * sqrt(1 + tan(rotPan)^2))) * tan(rotPan)
推荐阅读
- python - 如何绘制遍历多个键的字典DataFrame?
- python - 根据熊猫列中唯一数量的元素删除行
- javascript - 将 IndexOf 与日期和谷歌表格一起使用
- python - print(file.read()) 的用途是什么
- amazon-ec2 - AWS EC2 实例自托管 webapi 安装 ssl 证书
- c# - 如何仅在 C# 编辑器 IntelliSense 中隐藏公共类?
- ios - 在 Xcode 11 中添加对本地 swift 包的依赖
- javascript - 如何设置图表以使用 javascript 解构正确显示信息?
- windows - 不同语言的 Windows 安全帐户 - 用户,每个人.. - Icacls
- batch-file - 相同的启动命令,不同的结果