假设我有一个(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)