Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Ruby 曲面离散化算法_Ruby_Algorithm_3d_Sketchup - Fatal编程技术网

Ruby 曲面离散化算法

Ruby 曲面离散化算法,ruby,algorithm,3d,sketchup,Ruby,Algorithm,3d,Sketchup,我手头的问题是: 我在Sketchup中有一个任意形状的曲面,我想检查曲面的哪个部分处于阴影中,哪个部分暴露在阳光下 我的方法是在曲面上创建点,然后检查每个点与太阳当前位置之间是否存在任何障碍物。我需要补充的是,我需要知道哪些点处于阴影中,哪些点处于阳光直射下,即知道30%的表面处于阴影中并不足以满足我的要求 有人对Sketchup的Ruby API了解得足够多,能告诉我如何创建点吗?我找到了可能对我有用的PolygonMesh对象,但无法使其工作 取而代之的是,我可以/应该阅读哪些通用算法可以

我手头的问题是:

我在Sketchup中有一个任意形状的曲面,我想检查曲面的哪个部分处于阴影中,哪个部分暴露在阳光下

我的方法是在曲面上创建点,然后检查每个点与太阳当前位置之间是否存在任何障碍物。我需要补充的是,我需要知道哪些点处于阴影中,哪些点处于阳光直射下,即知道30%的表面处于阴影中并不足以满足我的要求

  • 有人对Sketchup的Ruby API了解得足够多,能告诉我如何创建点吗?我找到了可能对我有用的
    PolygonMesh
    对象,但无法使其工作

  • 取而代之的是,我可以/应该阅读哪些通用算法可以创建点

  • 在Sketchup或一般情况下,是否有更好的方法可以实现我的目标

  • 非常感谢

    我取得了一些进步

    一个选项是在质心处创建点。对于我所称的正多边形,即顶点均匀分布的位置(例如三角形或矩形),质心的坐标为

    x_com = average(vertices.x)
    y_com = average(vertices.y)
    z_com = average(vertices.z)
    
    有关更多详细信息,请参见此处:

    这将允许在质心处创建构造点,如下所示:

    # Find the centre of mass of a polygon based on the average of the x, y, z values.
    # A construction point is added to the centre of mass
    
    def centreofmass(aface)
        mod = Sketchup.active_model # Open model
        ent = mod.entities # All entities in model
        vert = aface.vertices
        n = 0
        x = 0
        y = 0
        z = 0
    
        vert.each{|i|
        n += 1
        x += i.position[0]
        y += i.position[1]
        z += i.position[2]
        }
    
        pt =  Geom::Point3d.new(x/n,y/n,z/n)
        c = ent.add_cpoint pt
    end
    
    从那里,我可能可以通过绘制从质心到原始顶点的直线来创建三角形。然后对新三角形重复此过程

    这可能适用于大多数形状较为规则的曲面。我认为一侧顶点比另一侧多的多边形,以及形状不规则的多边形(例如细长的L形曲面)可能存在问题

    不管怎样,看起来我有了一个起点