假设(x,y)对于直线的起点总是相同的,而(x,y)对于同一直线的终点是变化的。这条线也总是40像素长。在程序开始时,直线以垂直方向开始(称为0度)。根据用户的输入,我需要重新绘制一个特定的角度从它的原点只改变结束(x,y)的数目。
如果你需要的话,可以多想想:
我认为基于三角形的角度比较容易,因为我总是知道三角形两边的长度(一边由40px的长线形成,另一边由该线的起点和JPanel的边界形成)以及这两条线形成的角度。尽管如此,我的大脑还是无法理解。任何帮助都将不胜感激。
更新:
首先,我没有意识到90度是直线上升的,但一旦我意识到我的解决方案反映了这一事实。我正在画我的线从底部中心的框架出去。自从
opposite
当我的用户给出的角度小于90度时,三角形的边在屏幕的右侧,当我的用户给出的角度大于90度时,三角形的边在屏幕的左侧,我必须调整公式来说明这一事实,因此我有四种方法,一种用于
x
屏幕左侧的坐标(当用户给定的角度大于90度时),一个用于
y
屏幕左侧的坐标(当用户给定角度大于90度时)和屏幕右侧的坐标(当用户给定角度小于90度时)相同。这个
int length
在所有方法中都是斜边的长度。
再次感谢您对卡萨布兰卡的帮助!
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 * Math.sin(angle));
return y;
}