Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Trig/javascript计算在不剪切的情况下适应图像旋转所需的填充_Javascript_Jquery_Html_Geometry_Trigonometry - Fatal编程技术网

Trig/javascript计算在不剪切的情况下适应图像旋转所需的填充

Trig/javascript计算在不剪切的情况下适应图像旋转所需的填充,javascript,jquery,html,geometry,trigonometry,Javascript,Jquery,Html,Geometry,Trigonometry,我有一个已知的矩形(灰色)外部父元素,它包含一个图像元素(橙色)。它的溢出是隐藏的 我想计算允许图像元素(已知宽度和高度)旋转到已知角度(例如,30度)所需的填充 事实证明,如果我能够允许父元素(灰色)扩展以适应,那么计算这个值就相对容易,但我不能 创建4个图像边缘点的列表p0、p1、p2、p3 旋转它们的方式与旋转图像的方式相同 double a=x-x0,b=y-y0,c,s; c=cos(alfa); s=sin(alfa); x=a*c-b*s+x0; y=a*s+b*c+y0;

我有一个已知的矩形(灰色)外部父元素,它包含一个图像元素(橙色)。它的溢出是隐藏的

我想计算允许图像元素(已知宽度和高度)旋转到已知角度(例如,30度)所需的填充

事实证明,如果我能够允许父元素(灰色)扩展以适应,那么计算这个值就相对容易,但我不能

  • 创建4个图像边缘点的列表
    p0、p1、p2、p3
  • 旋转它们的方式与旋转图像的方式相同

    double   a=x-x0,b=y-y0,c,s;
    c=cos(alfa);
    s=sin(alfa);
    x=a*c-b*s+x0;
    y=a*s+b*c+y0;
    
    • x,y
      是重点
    • x0,y0
      是旋转中心
    • alfa
      是旋转角度
  • 计算旋转点x,y坐标的最小值和最大值这将获得边界框

  • 总结

    • (x0,y0)
      成为图像的原始图像灰盒大小
      (X,Y)
    • (x1,y1)
      成为图像的原始图像大小
      (xa,xb)
    • (x2,y2)
      为项目符号3的旋转图像边界框大小(xmax xmin,ymax ymin)
    • if((x21.0)my=1.0;
    • 现在选择正确的刻度
      m
    • m=mx;如果(m>my)m=my;
    • 现在,
      m
      保存了旋转图像所需的比例,以适应灰度区域
    • 不要忘记将图像居中

  • 这就得到了超出灰盒边界的更大的边界框。我的管理者之一是,灰盒不能变大以容纳新的旋转边界框。我必须向边界框添加适当的量,以便图像缩小正确的量,而不是增加灰盒的大小。Subtrac将旧边界框与新边界框分开,然后除以2用作填充,这样会导致填充过多,在应用填充后将变为较小的图像矩形。@GarySimpson现在我对您想要实现的目标一无所知。是否要缩小旋转后的图像以适应图像的原始边界框?或者扩展灰度区域以便纵横比是常数还是什么?booth可以用新的边界框大小轻松计算…我不能改变灰框。我需要通过填充适当数量的灰框来按比例缩小图像,这样当图像旋转时,图像的给定角度点不会被灰框剪裁。@GarySimpson在回答中添加了项目符号4。谢谢。这使得更有意义。计算缩小旋转边界框以适应内部灰色所需的比例因子,然后将其应用于图像。只希望在窗口大小调整事件中,它能够足够快地响应。但非常感谢您花时间将此概念明确。