小编Mad*_*own的帖子

使用此系统布局网页有哪些潜在问题?

由于CSS的许多限制和兼容性问题而感到沮丧,并且发现自己经常需要编写javascript代码以使我的网页按照我想要的方式进行布局,我想我可以通过完全放弃CSS来构建页面结构来简化未来的项目.

我编写了一个javascript库,它解析XML文件中指定的布局,并使用绝对定位和大小的非嵌套div将它们应用于HTML文档.因此,我们的想法是每个页面都有一个包含所有内容的HTML文件,一个XML文件,用于指定如何在页面上排列内容,以及一个用于表面样式的CSS样式表.

这是一个例子.(按下按钮以扩大布局.在所有主流浏览器的最新版本中测试.) 另一个.

该系统优雅地降级为普通html,甚至允许在禁用javascript的情况下单独设置样式.

在我看来,这种方法不仅消除了许多跨浏览器问题,而且还允许我以更少的工作实现更复杂的布局.例如,我的理解是,单独使用CSS无法完成以下操作,至少在没有嵌套div的情况下是这样:

  1. 设置一个元素以填充其父容器中的可用宽度或高度.(这与宽度/高度不同:如果父容器中有其他元素,则为100%.)
  2. 在任何容器内对齐任何元素顶部/中心/底部,左/中/右,即使其大小未知.
  3. 在不增加元素大小的情
  4. 自动将父元素中的所有元素设置为等间距.
  5. 设置浮动元素的高度.同样,水平和垂直独立设置收缩包装行为.
  6. 将元素设置为在列而不是行中浮动(CSS3似乎支持列,但浏览器兼容性不好)

尽管如此,我确信这被认为是亵渎神明的.那么,使用这个系统来布局网页有哪些潜在的问题呢?

编辑:代码在github上

javascript css web-applications

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

使用长脉冲响应的实时卷积混响算法?

我试图用C#编写音频应用程序并需要实现一个实时卷积混响处理器.我目前使用的方法是在使用长度超过~16,000个样本(44.1kHz)的脉冲响应时发生故障.我需要能够使用至少2秒或88,200个样本的脉冲响应.这是我尝试绘制我正在使用的方法的最佳尝试:

在此输入图像描述

我使用的块大小是2048个样本.我正在使用NAudio库进行FFT,并且在负载时预先计算脉冲响应的FFT.

我的方法有什么问题?我知道我所追求的是可能的,因为我已经使用了大量的音频应用来完成它.

编辑:原来有两个问题:我使用的FFT库不够快,而且,对于这种类型的应用程序,C#通常不够快.在切换到非托管代码(C++)和更好的FFT库(FFTW)之后,问题得以解决.

algorithm optimization fft convolution audio-processing

5
推荐指数
0
解决办法
2353
查看次数

计算大量粒子之间经历的类似重力的最快方法?

给定一组二维空间中的n个粒子,其中每个粒子对集合中所有其他粒子的吸引力,与它们之间的距离的平方成反比,你能想象任何巧妙的计算净力的方法吗?每个粒子,不进行n ^ 2距离计算?

从我的程序的Particle类:

    public void calculateAttractions(List<Particle> entities)
    {
        foreach (Particle p in entities)
        {
            if (!p.Equals(this))
            {
                Vector2 dx = this.Position - p.Position;
                this.ApplyForce(-dx / dx.LengthSquared());
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在遇到性能问题之前,暴力方法只能在我的程序中模拟~150个粒子(使用XNA框架和Farseer物理引擎).

如果没有其他方法,这个代码怎么可能被优化,或者我怎么可能作弊?我已经尝试在粒子到粒子的基础上随机调用calculateAttractions(),这样在任何给定的时间内只有大约1/3的粒子被实际更新.这导致性能有所改善,但当然是以准确性为代价.

我要做的是类似于引力计算.有人在这个线程建议用复数工作,并用公式:

(z-z')/abs(z-z')**3
Run Code Online (Sandbox Code Playgroud)

但是,我不知道z指的是什么,我无法在其他任何地方找到这个等式的参考.

编辑:虽然我已经接受了下面的答案,但我最终使用了一个没人提到的解决方案:查找表.基本上,我预先计算所有距离(分辨率为1像素)的另一个粒子在一个粒子上施加的力,在任何方向上最多可达200​​0像素.然后可以在没有任何运行时距离计算的情况下确定力.虽然它不是一个精确的解决方案,但是失真是不可感知的,并且它允许我将模拟粒子的数量增加三倍(到现在数量被物理引擎而不是n体问题限制的程度. )

c# algorithm xna physics

4
推荐指数
1
解决办法
1760
查看次数

如何在C++模板类之间共享受保护的成员?

请考虑以下示例:

class _ref
{
public:
    _ref() {}
    _ref(const _ref& that) {}
    virtual ~_ref() = 0;
};
_ref::~_ref() {}

template <typename T>
class ref : public _ref
{
protected:
    ref(const _ref& that) {}

public:
    ref() {}
    ref(const ref<T>& that) {}
    virtual ~ref() {}

    template <typename U>
    ref<U> tryCast()
    {
        bool valid;
        //perform some check to make sure the conversion is valid

        if (valid)
            return ref<U>(*this); //ref<T> cannot access protected constructor declared in class ref<U>
        else
            return ref<U>();
    }
};
Run Code Online (Sandbox Code Playgroud)

我希望所有类型的'ref'对象能够访问彼此的受保护构造函数.有没有办法实现这个目标?

c++ templates

4
推荐指数
1
解决办法
402
查看次数