我正在解析变换 skewX 和 skewY 以输出倾斜角度和倾斜长度 - 均以度为单位。
我有的是这个:
const handleSkew = ({
skewX,
skewY,
}: Readonly<{ skewX: number, skewY: number }>) => {
const angle = rad2Deg(Math.atan2(skewY, skewX))
let length = rad2Deg(Math.sqrt(Math.pow(skewX, 2) + Math.pow(skewY, 2)))
if (skewX > 0 || skewY < 0) {
length = -length
}
return { length, angle }
}
const rad2Deg = (rad: number) => {
return (rad * 180.0) / Math.PI
}
这给了我正确的方向和倾斜角度,但长度略有偏差。有人能告诉我我在这里做错了什么吗? 😇
长度不是以度为单位测量的,因此请删除 sqrt() 调用周围的 rad2Deg() 。
此外,方向是由角度而不是长度表示的,因此您不应该有条件地否定长度。
const handleSkew = ({
skewX,
skewY,
}: Readonly<{ skewX: number, skewY: number }>) => {
const angle = rad2Deg(Math.atan2(skewY, skewX))
let length = Math.sqrt(Math.pow(skewX, 2) + Math.pow(skewY, 2))
return { length, angle }
}
const rad2Deg = (rad: number) => {
return (rad * 180.0) / Math.PI
}