【问题标题】:Floating point layouting and rounding浮点布局和舍入
【发布时间】:2012-12-26 07:53:57
【问题描述】:

我在渲染树中有一个节点,它根据其子节点计算其高度。位置和大小值允许为浮点值,在渲染时进行舍入。

    def compute_size(self):
        # Invokes compute_size() of child nodes.
        super(InlineBoxNode, self).compute_size()

        # Iterate over all children and compute the current nodes
        # height.
        self.h = 0
        for node in self.children:
            self.h += node.h

我面临的问题如下:想象两个节点是上面代码节点的子节点。两个孩子的身高都是10.5。子节点被布置在它们各自的前一个节点之下,即节点二将被放置在y=10.5。在渲染时 10.5 变为 11。第二个节点现在位于y=11 并具有h=11,即它的底边位于22,而不是21。 (见下图演示)

我认为这个问题可以通过总是四舍五入来解决(即到较低的相邻整数值),但语义是否正确?


编辑

我刚刚意识到,即使只是四舍五入也不能解决问题。第二个节点的底边现在位于20,但21 是正确的。

【问题讨论】:

    标签: python layout rendering


    【解决方案1】:

    所以内部表示是浮动的,实际布局是像素。必须有某种四舍五入。然后在加法之前做同样的舍入操作,例如

    self.h += int(node.h)
    

    在你的情况下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      相关资源
      最近更新 更多