查看此问题中提供的答案后,我创建了以下方法:
private int angleOf(float x1, float x2, float y1, float y2) {
final double deltaY = (y1 - y2);
final double deltaX = (x2 - x1);
final double result = Math.toDegrees(Math.atan2(deltaY, deltaX));
return (int) ((result < 0) ? (360d + result) : result);
}
通过使用上面的方法,我将获得每条线的角度,然后将文本绘制到我的画布上,如下所示:
int topLine = angleOf(this.mPoints[5].x, this.mPoints[4].x, this.mPoints[5].y, this.mPoints[4].y);
int bottomLine = angleOf(this.mPoints[5].x, this.mPoints[6].x, this.mPoints[5].y, this.mPoints[6].y);
canvas.drawText(String.valueOf(360 - bottomLine + topLine)+"°", this.mPoints[5].x - 80.0f, this.mPoints[5].y, this.mTextPaint);
以上工作正常,这是我的结果示例:
我遇到的问题是角度是从x轴测量并逆时针增加,如下所示:
当底线或顶线“穿过” 0°(平行于 x 轴)时,我会得到一个不正确的角度。
这是演示此问题的另一张图片:
蓝线之间的角度是 90°,但我得到的是 450°。这是因为我使用的计算360 - bottomLine + topLine
。
有人可以建议这个问题的解决方案。
谢谢你。
拉莫斯之舞
料青山看我应如是
相关分类