gpt4 book ai didi

javascript - 如何根据 Angular 位置计算矩形的 Angular ?

转载 作者:行者123 更新时间:2023-11-28 03:58:17 25 4
gpt4 key购买 nike

我有一个像这样的矩形......

image 1

...而且我还知道矩形的 Angular 位置,如下面的数组所示:

var corners = [[107, 0], [0, 21], [111, 24], [4, 45]]
<小时/>

因为我需要计算矩形的 Angular (如上图中所示),所以我的想法是仅使用以下代码:

var rectangle_angle = ((180/Math.PI) * Math.atan((a[1] - b[1]) / (a[0] - b[0]))).toFixed(2)
console.log('angle : ' + rectangle_angle)

在上面的例子中,我使用前两个 Angular 点来计算 Angular :

var a = corners[0], b = corners[1]
<小时/>

但是例如我使用了如下所示的矩形并尝试计算矩形的 Angular ...

image2

( Angular 点:[[101, 0], [110, 22], [0, 38], [9, 60]])

...但是我得到的结果是这样的 -> Angular :67.75,绝对不是正确的旋转 Angular 。

后来我通过使用 corner[0]corner[2] 进行计算而不是使用 corner[0] 解决了这个问题> 和 Angular [1]

所以我现在得到的结果是-20.62°。好多了。

<小时/>

现在我的问题:如何从 Angular 数组中提取用于计算的正确点?

您可以在这里尝试该功能:

var corners = [[107, 0], [0, 21], [111, 24], [4, 45]]

var a = corners[0], b = corners[1]
var rectangle_angle = ((180/Math.PI) * Math.atan((a[1] - b[1]) / (a[0] - b[0]))).toFixed(2)
console.log('angle : ' + rectangle_angle)

最佳答案

通过corners进行过滤,以便获得 Angular 点a和b:

const corners = [[107, 0], [0, 21], [111, 24], [4, 45]]

const cornerA = corners.filter(x => x[1] == 0).reduce((a, b) => a.concat(b))
const cornerB = corners.filter(y => y[0] == 0).reduce((a, b) => a.concat(b))

const rectangleAngle = ((180/Math.PI) * Math.atan((cornerA[1] - cornerB[1]) / (cornerA[0] - cornerB[0]))).toFixed(2)

console.log(rectangleAngle)

关于javascript - 如何根据 Angular 位置计算矩形的 Angular ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47376308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com