所以显然计算平方根不是很有效率,这让我想知道找出两个圆之间的距离(我称之为范围)的最佳方法是什么?

通常我会解决:
a^2 + b^2 = c^2
dy^2 + dx^2 = h^2
dy^2 + dx^2 = (r1 + r2 + range)^2
(dy^2 + dx^2)^0.5 = r1 + r2 + range
range = (dy^2 + dx^2)^0.5 - r1 - r2
Run Code Online (Sandbox Code Playgroud)
当你查找"range"为0时的情况时,试图避免平方根工作正常:
if ( (r1 + r2 + 0 )^2 > (dy^2 + dx^2) )
Run Code Online (Sandbox Code Playgroud)
但是,如果我试图计算出距离范围,我最终会得到一些笨拙的等式:
range(range + 2r1 + 2r2) = dy^2 + dx^2 - (r1^2 + r2^2 + 2r1r2)
Run Code Online (Sandbox Code Playgroud)
这不会去任何地方.至少我不知道如何从这里解决它的范围......
显而易见的答案是trignometry并首先找到theta:
Tan(theta) = dy/dx
theta = dy/dx * Tan^-1
Run Code Online (Sandbox Code Playgroud)
然后找到hypotemuse …
我试过跟随任意数量的教程:
但我还是不能让eclipse识别我的任何import语句:
import net.java.games.jogl.Animator;
import net.java.games.jogl.GL;
import net.java.games.jogl.GLCanvas;
import net.java.games.jogl.GLCapabilities;
import net.java.games.jogl.GLDrawable;
import net.java.games.jogl.GLDrawableFactory;
import net.java.games.jogl.GLEventListener;
Run Code Online (Sandbox Code Playgroud)
已经说过,教程和我能做的事情总是有些不同(即不同的文件,不同的包,不同的步骤等).
本教程将JOGL安装为我喜欢的用户库,但引用了我在找到的JOGL下载中找不到的文件(nativewindow.all.jar,newt.all.jar).它还讨论了引用.dll文件,其中下载的help.txt和wiki状态已被弃用且不应使用.说过我尽可能遵循说明(使用wiki中提到的文件),但它仍然不起作用.
官方维基讨论了为不同的系统下载不同的软件包,但现在它们似乎都捆绑在一个"jogamp-all-platforms.7z"文件中.它说你需要的文件是:"gluegen-rt.jar,jogl.all.jar,gluegen-java-src.zip,jogl-java-src.zip,gluegen-rt-natives-windows-amd64.jar,jogl -all-natives-windows-amd64.jar"但它并没有说明你应该怎么做.(我在构建路径中引用了它们,但它没有用).
无论如何,我可能做了一些非常愚蠢的事情,但我不确定是什么.
有人可以一步一步地提供关于如何将JOGL添加到我的eclipse项目的新手证明吗?
编辑****这是我的项目属性窗口的图像: 我的项目属性窗口http://s16.postimage.org/le13lcah1/Capture.png
我正在使用非常基本的声音合成在我的游戏中创建音频和效果.基本上,我有一些方法可以在给定频率和幅度和持续时间的情况下播放声音.
对于短语和旋律,我想提出一个基本的符号,这样我就可以轻松地重写或添加新的旋律到代码中(最后也许我可以从文件中读取,但这可能是矫枉过正的).
我不知道如何实现这一点.
我首先创建了一个枚举EqualTemperamentTuning,其中包含所有88个带有MIDI#字段和频率字段的基本钢琴音符.这至少意味着我可以处理音符名称而不是频率.
public enum EqualTemperamentTuning {
A_0 (1, 27.5),
A_SHARP_0 (2, 29.1352),
...
C_8 (88, 4186.01);
private int num;
private double frequency;
EqualTemperamentTuning(int num, double frequency){
this.num = num;
this.frequency = frequency;
}
public double getFrequency(){
return frequency;
}
public double getNum(){
return num;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我开始创建更多的对象,首先是一个Note,它包含EqualTemperamentTuning,一个幅度和一个长度:
public class Note {
/** Note frequency */
private double frequency;
/** Note Amplitude */
private double amplitude;
/** Note length */
private int length;
public Note(EqualTemperamentTuning tuning, double amplitude, int …Run Code Online (Sandbox Code Playgroud)