小编Cam*_*eln的帖子

通过JavaScript计算旋转元素的边界框的X,Y,高度和宽度

基本上我是在问JavaScript这个问题:从旋转的矩形计算边界框坐标

图

在这种情况下:

  • iX =旋转(蓝色)HTML元素的宽度
  • iY =旋转(蓝色)HTML元素的高度
  • bx =边界框宽度(红色)
  • by =边界框高度(红色)
  • x =边界框的X坐标(红色)
  • y =边界框的Y坐标(红色)
  • iAngle/t = HTML元素的旋转角度(蓝色;未显示但在下面的代码中使用),仅供参考:在此示例中它是37度(不是对于示例而言重要)

如何通过JavaScript计算旋转的HTML元素(给定其宽度,高度和旋转角度)周围的边界框(所有红色数字)的X,Y,高度和宽度?一个棘手的问题是将旋转的HTML元素(蓝色框)的原始X/Y坐标用作某种方式的偏移(这在下面的代码中没有表示).这可能需要查看CSS3的变换原点来确定中心点.

我有一个部分解决方案,但X/Y坐标的计算不正常...

var boundingBox = function (iX, iY, iAngle) {
    var x, y, bx, by, t;

    //# Allow for negetive iAngle's that rotate counter clockwise while always ensuring iAngle's < 360
    t = ((iAngle < 0 ? 360 - iAngle : iAngle) % 360);

    //# Calculate the width (bx) and height (by) of the .boundingBox
    //#     NOTE: See https://stackoverflow.com/questions/3231176/how-to-get-size-of-a-rotated-rectangle
    bx …
Run Code Online (Sandbox Code Playgroud)

javascript css geometry rotation bounding-box

24
推荐指数
3
解决办法
1万
查看次数

死亡竞赛:自我执行匿名功能-vs-"新功能"

在UPDATE 2/ANSWER中回答下面的内容

感谢Joseph帮助我找到答案(即使我不喜欢它=).

原始问题

虽然在JavaScript中使用Namepsaces时做的最佳做法的一些研究,我碰到这个定义中的"模型模式"的:http://yuiblog.com/blog/2007/06/12/module-pattern/.

自从我在YUI2年前看到它以来,我一直在使用这种模式,本文给出了概念的一个很好的概述.但它没有触及的是为什么"自我执行匿名函数"被用来代替"新函数".这在评论中被提出,但作者没有很好地描述.由于这篇文章已有4年多了(我在网上其他地方找不到答案),我想我会把它带到这里.

它已经关闭了,所以呢?(请参阅:为什么这个函数包含在括号中,后跟括号?它也没有回答我的问题=).

假设以下设置代码..

var MyNamespace = window.MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)

哪个是首选,为什么?

MyNamespace.UsingNew = new function() {
    var fnPrivate = function() {
        return "secrets1";
    };

    this.property = "value1";
    this.method = function() {
        return "property = " + this.property + ' ' + fnPrivate();
    }
};

MyNamespace.UsingSelfEx = (function() { //# <- Added "pre-parens" suggested by chuckj
    var fnPrivate = function() {
        return "secrets2";
    };
    var fnReturn = {};

    fnReturn.property = "value2";
    fnReturn.method = …
Run Code Online (Sandbox Code Playgroud)

javascript

20
推荐指数
1
解决办法
5291
查看次数

扩展JavaScript的Date.parse以允许DD/MM/YYYY(非美国格式的日期)?

我想出了这个解决方案来扩展JavaScript的Date.parse功能,允许日期格式为DD/MM/YYYY(而不是美国标准[和默认] MM/DD/YYYY):

(function() {
    var fDateParse = Date.parse;

    Date.parse = function(sDateString) {
        var a_sLanguage = ['en','en-us'],
            a_sMatches = null,
            sCurrentLanguage,
            dReturn = null,
            i
        ;

            //#### Traverse the a_sLanguages (as reported by the browser)
        for (i = 0; i < a_sLanguage.length; i++) {
                //#### Collect the .toLowerCase'd sCurrentLanguage for this loop
            sCurrentLanguage = (a_sLanguage[i] + '').toLowerCase();

                //#### If this is the first English definition
            if (sCurrentLanguage.indexOf('en') == 0) {
                    //#### If this is a definition for a non-American …
Run Code Online (Sandbox Code Playgroud)

javascript

7
推荐指数
1
解决办法
8093
查看次数

标签 统计

javascript ×3

bounding-box ×1

css ×1

geometry ×1

rotation ×1