- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我不认为我数学不好,而且如果我知道自己在做什么,我也不认为将简单的数学距离公式翻译成代码那么困难。显然我不这么认为。长话短说,我应该计算两个 3D 点之间的距离,但由于某种原因,我的公式无法正常工作。我不知道是我写错了还是哪里出了问题,因为我已经写了很多次了,但还是不行。
这是我的公共(public)类距离
,其中有我的距离公式
public class Distance
{
Distance () {}
double d;
double x1, x2, y1, y2, z1, z2;
public void setD (double d)
{
this.d = d;
}
double distance ()
{
/* return Math.sqrt ( Math.pow (( x2 - x1 ), 2 )
+ Math.pow (( y2 - y1 ), 2 )
+ Math.pow (( z2 - z1 ), 2 ));
*/
return Math.sqrt ( ( x2 - x1 ) * ( x2 - x1 )
+ ( y2 - y1 ) * ( y2 - y1 )
+ ( z2 - z1 ) * ( z2 - z1 ) );
}
}
我尝试过两种方式编写它,两种方式都测试为0(我使用嵌套的for
循环,所有变量循环到3,在为用户编写之前进行测试输入)。
如果有人能解释我为什么会遇到这个问题,我将不胜感激。
编辑:我知道人们告诉我初始化为某个值。我很确定我在测试循环中初始化了它,我意识到为了清楚起见我应该发布它。
class Distance_test
{
public static void main ( String [] args )
{
Distance line = new Distance ();
double d;
for ( double x1 = 0; x1 <= 2; x1++ )
{
line.setD ( x1 );
d = line.distance();
for ( double x2 = 0; x2 <= 2; x2++ )
{
line.setD ( x2 );
for ( double y1 = 0; y1 <= 2; y1++ )
{
line.setD ( y1 );
for ( double y2 = 0; y2 <= 2; y2++ )
{
line.setD ( y2 );
for ( double z1 = 0; z1 <= 2; z1++ )
{
line.setD ( z1 );
for ( double z2 = 0; z2 <= 2; z2++ )
{
line.setD ( z2 );
System.out.printf ( "\n Distance of 3D line with points %.2f, %.2f, %.2f, %.2f, %.2f, %.2f is %.2f\n", x1, x2, y1, y2, z1, z2, line.distance() );
}
}
}
}
}
}
}
}
是的,我确实认为这有点乱,但我只是想让它先工作,然后再让它看起来更好。
最佳答案
x1、x2、y1、y2、z1、z2
未初始化。您应该初始化它们,而不是 d,这是您的计算结果。
如果我没记错的话,Java 会将 double 初始化为零,如果这是 C++,则您的变量将包含随机数据,并且您的结果也将是随机的。
除此之外,你的代码很好。
此外,您应该将其实现为函数,而不是类。你得到一些输入,产生一个结果 - 这就是一个函数。
double calculateDistance(double[] point1, double[] point2)
{
x1 = point1[0]; // Or you can use enum or something for the index
y1 = point1[1];
z1 = point1[2];
x2 = point2[0];
y2 = point2[1];
z2 = point2[2];
return Math.sqrt ( Math.pow (( x2 - x1 ), 2 )
+ Math.pow (( y2 - y1 ), 2 )
+ Math.pow (( z2 - z1 ), 2 ));
}
由于这是 Java,因此您可以将其包装在名为“MathFunctions”的静态类或类似的内容中。
关于java - Math.pow 和 Math.sqrt 公式返回值 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26170708/
我在玩(美丽的)多项式 x^4 - 10x^2 + 1 . 看看会发生什么: In[46]:= f[x_] := x^4 - 10x^2 + 1 a = Sqrt[2];
对于整个参数范围 x,a >= 0,是否有一种优雅的数值稳定评估以下表达式的方法? f(x,a) = sqrt(x+a) - sqrt(x) 还有没有提供这种功能的任何编程语言或库?如果是,以什么名义
我正在制作自定义运算符 (≠,≈,Σ,√),平方根的实现很有趣。我写的 prefix func √ (item:Double) -> Double { return sqrt(item) }
这是我每秒调用多次的函数: static inline double calculate_scale(double n) { //n may be int or double return s
我对 C++ 很陌生,我有这段代码,代码如下所示: D = (sum_B / double(E))*std::sqrt(E) 有人可以将其解释为数学公式或易于理解的东西吗,我不确定这是什么 std::
这个问题在这里已经有了答案: Can a declaration affect the std namespace? (2 个答案) Why doesn't adding sqrt() cause
考虑以下代码: #include #include const int COUNT = 100000000; int main() { double sum = 0; for (i
x**(1/2)、math.sqrt() 和 cmath.sqrt() 有什么区别? 为什么 cmath.sqrt() 单独得到二次项的复根?我应该专门将它用于我的平方根吗?他们在后台做了什么不同的事
我创建了一个小程序,如下: #include #include #include int main(int argc, char *argv[]) { int i;
我得到了如下表达式(Sqrt[XXX] 的数量未知) Sqrt[A+B] + Sqrt[Min[A,B]] * Min[Sqrt[C],D] 我想把所有的 Sqrt[XXX] 变成 Sqrt(XXX)
这次重复: T(n) = sqrt(n) * T(sqrt(n)) + n 它似乎无法用 Master 定理求解。它似乎也无法用 Akra-Bazzi 解决。即使我设置 n = 2^k 以便 T(2^
在数学中,恒等式 (1 + sqrt(2))^2 = 3 + 2*sqrt(2) 成立。但在浮点(IEEE 754,使用单精度,即 32 位)计算中,情况并非如此,因为 sqrt(2) 没有精确的二进
我创建了一个小程序,如下: #include #include #include int main(int argc, char *argv[]) { int i;
这给了我 0: int B=-4; double A = Math.Sqrt(1/B); 但是这个 NaN double A = Math.Sqrt(-4); 第一次计算怎么可能不失败或者至少不返回
template T sqrt (T); template complex sqrt(complex); double sqrt(double); void f(complex z) { sq
这里是 Python 的新手。我试图了解此函数如何检查素数: from itertools import count, islice from math import sqrt def is_prim
上述复杂性的大 O 表示法是什么? 是不是O(n) 最佳答案 是的。关键是日志里面的平方根没有区别: O(sqrt(n) log(sqrt(n))) = O(sqrt(n) 1/2 log(n)) =
如果 g(n) = sqrt(n)sqrt(n),g(n) = O(2n) 的复杂度是多少? 感谢任何帮助。 最佳答案 比较两个指数函数时,一个有用的技巧是让它们具有相同的基数: √n√n = (2l
我正在查看我的代码,希望提高它的性能,然后我看到了这个: int sqrt = (int) Math.floor(Math.sqrt(n)); 哦,好的,我真的不需要调用 Math.floor,因为转
我试图找到满足子句 (x - y * √ 2016)/(y + √ 2016) = 2016 的数字。数字 x 和 y 可以是有理数。 这是我已经尝试过的: #include #include #
我是一名优秀的程序员,十分优秀!