【问题标题】:Get input float from Math.cos() output value从 Math.cos() 输出值获取输入浮点数
【发布时间】:2020-02-29 18:17:51
【问题描述】:

我想知道:在 Java 中,有没有办法判断 Math.cos() 输出的原始输入浮点值是多少?

我基本上需要像逆向工程Math.cos() 这样的东西,我只知道它的输出值,并且需要计算它创建的输入浮点数,而我真正拥有的只是Math.cos() 函数的输出。

该值可以是近似值,不需要绝对精确,因为它是输入到Math.cos() 函数中的。

顺便说一句,数学不是我的专长,所以解释性越强(带有实际示例)你就越好。

【问题讨论】:

  • 问:“余弦”的逆运算是什么?答:ArcCosine。正如BeUndead所说,对应的Java方法是Math.arccos()。您可能知道,Java 三角函数采用radians 中的参数(相对于度数)。

标签: java math trigonometry


【解决方案1】:

cos 不是单射的,因此您无法(准确地)分辨出原始输入是什么。例如,cos(0) = cos(2π) = 1。但是,您可以使用Math#acos 方法来识别可能的输入。

【讨论】:

  • 不幸的是,我所知道的实际上只是 Math.cos() 的浮点输出 - 事实上,这些是产生的 Matrix4 (4x4) 对象(.m00、.m01、.m02 等)的一些值通过其他应用程序,我试图对过程进行逆向工程以了解原始浮点角度输入值
  • cos 是单射的,如果你知道合适的 range 值。例如,如果您知道输入角度只能落在 [0,π] 范围内,那么 [-1,1] 范围内的每个值都有一个唯一的映射。这实际上仅取决于您是否可以对原始值做出任何假设。如果你不能那么就没有办法说出来了。
  • 不,我不知道范围,因为它可以是任何角度 - 它是乐高渲染器的一部分(= 乐高积木 3D 对象)...
  • 对,但它是一个渲染。那么您是否需要知道角度是(例如)0 还是 2π?他们看起来完全一样。在这种情况下,您可以假设您不关心确切的值是什么,只要您能找到一个可以给出等效的值。
  • 我不需要绝对准确,但我需要准确,因为我想通过旋转其他模型来影响模型的旋转。不幸的是,这些角度值 (x, y, z) 不是特定的度数/弧度值,而是作为多个值分布在 Matrix4 对象 (x0,x1,x2,x3,y0,y1,y2,y3,z0, z1,z2,z3,s0,s1,s2,s3)。[下面继续]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-19
  • 2014-11-10
相关资源
最近更新 更多