小编kim*_*man的帖子

在java中找到两个圆之间距离的最有效方法?

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

查找两个圆圈之间的范围

通常我会解决:

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 …

java math performance trigonometry

15
推荐指数
2
解决办法
3044
查看次数

如何在Windows 7 64bit上安装JOGL以与Eclipse一起使用?

我试过跟随任意数量的教程:

但我还是不能让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

java eclipse jogl

6
推荐指数
1
解决办法
5326
查看次数

如何在java中创建一个简单但结构良好的乐谱表(乐谱)?

我正在使用非常基本的声音合成在我的游戏中创建音频和效果.基本上,我有一些方法可以在给定频率和幅度和持续时间的情况下播放声音.

对于短语和旋律,我想提出一个基本的符号,这样我就可以轻松地重写或添加新的旋律到代码中(最后也许我可以从文件中读取,但这可能是矫枉过正的).

我不知道如何实现这一点.

我首先创建了一个枚举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)

java oop music-notation

6
推荐指数
1
解决办法
1877
查看次数

标签 统计

java ×3

eclipse ×1

jogl ×1

math ×1

music-notation ×1

oop ×1

performance ×1

trigonometry ×1