math - 在Javascript中旋转后获取图像尺寸

时间:2012-11-30 06:56:35

标签: javascript math

这完全是关于数学的。遗憾的是,我忘了那些我在学习中学到的东西。

好的,我正试图在Javascript中以一定角度旋转(使用画布)后得到图像尺寸。

enter image description here

2 个答案:

答案 0 :(得分:8)

由于我在这里没有MSPaint以外的任何工具,我会重新使用你的图像:

enter image description here

假设原始矩形的大小为R(ectangle)W(宽度)* RH(八),

在这种情况下RW=200RH=80;

旋转一定角度A后,逆时针旋转

其中0deg <= A <= 90deg以度为单位(或0 <= A <= Math.PI/2以弧度表示),

在这种情况下A=30degA=Math.PI/6

在新的“外部”矩形中,每一面被两部分分开(为了便于描述;对应于图像)。

在左侧,假设上部(紫色)部分称为N(ew)H(八)U(p),下部(红色) )部分称为NHL(ow);

底部的规则相同,我们有NW(宽)L(eft)(蓝色)和NWR(ight)(橙色)。

因此新矩形的大小(区域)为(NHU + NHL) * (NWL + NWR)

根据sincos的定义:

NWL = RW * Math.cos(A); //where A is in radians
NHL = RW * Math.sin(A);

NHU = RH * Math.cos(A);
NWR = RH * Math.sin(A);

(如果您在度数中使用A,请将A替换为Math.PI*A/180。)

因此新的“外部”宽度为NWL + NWR,新的“外部”高度为NHU + NHL,现在您可以计算所有内容。

答案 1 :(得分:0)

这是一个实现@Passerby的解决方案以及其他一些保护措施的嵌入式函数:

const d =
  {userName:[],email:[],name:{fullName:[],split:{first:[],last:[]}},date:{input:{split:{month:[],year:[]},full:[]},select:{month:[],year:[]}}}
  
const lookup = (o = {}, s = "") =>
  s
    .split(".")
    .reduce
      ( (r, x) =>
          r == null ? undefined : r[x]
      , o
      )
 
console.log(lookup(d, "name.split"))
// { first: [], last: [] }

console.log(lookup(d, "name.split.first"))
// []

console.log(lookup(d, "name.split.zzz"))
// undefined

console.log(lookup(d, "zzz"))
// undefined