相关疑难解决方法(0)

在Java中以特定角度绘制一条线

假设我有一个(x,y)对于一个行的起点始终是相同的,而(x,y)对于同一行的终点是变化的.该线也总是40px长.在程序开始时,线条以垂直方向发起(让我们称之为0度).基于用户输入,我需要通过仅改变结束(x,y)来从其原点重绘特定数量的度数.

如果您需要,可以考虑更多的食物:

我正试图计算这个,并使其在Java中工作.我可以根据圆弧段的弧长来计算点数,但我不知道如何让Java做到这一点.

我认为基于三角形角度它会更容易工作,因为我总是知道三角形两边的长度(一边由40px长线形成,另一边由该线的起点和边界形成JPanel)和这两条线形成的角度.尽管如此,我的大脑还是试图弄明白.任何帮助将非常感激.

更新:

@casablanca让我走上正轨.我刷了我的三角函数,这就是我如何使它工作.

首先,我没有意识到90度直接上升,但一旦我意识到我使我的解决方案反映了这一事实.我正在从框架的底部中心开始绘制我的线条.由于opposite我的用户给出的角度小于90度时三角形的一侧位于屏幕的右侧,当我的用户给出的角度大于90度时,三角形的一侧位于屏幕的左侧,我不得不调整公式以考虑到这一事实,因此我有四种方法,一种用于x屏幕左侧的坐标(当用户给定角度大于90度时),一种用于y当用户给定角度小于90度时,屏幕左侧的坐标(当用户给定角度大于90度时)和屏幕右侧的坐标相同.在int length所有方法是斜边的长度. 再次感谢您的帮助@casablanca!

public double leftSideX(double angle, int length){
    double x = frameWidth/2 - (length * Math.cos(Math.toRadians(90-(Math.toDegrees(angle)-90))));
    return x;
}

public double leftSideY(double angle, int length){
    double y = frameHeight - (length * Math.sin(Math.toRadians(90-(Math.toDegrees(angle)-90))));
    return y;
}

public double rightSideX(double angle, int length){
    double x = frameWidth/2 + (length * Math.cos(angle));
    return x;
}

public double rightSideY(double angle, int length){
    double y = frameHeight - (length …
Run Code Online (Sandbox Code Playgroud)

java trigonometry

30
推荐指数
1
解决办法
4万
查看次数

标签 统计

java ×1

trigonometry ×1