首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >曲面离散化算法

曲面离散化算法
EN

Stack Overflow用户
提问于 2013-06-20 22:12:59
回答 1查看 260关注 0票数 1

我手头的问题是:

我有一个任意形状的表面在Sketchup,并想检查哪一部分表面是在阴影和哪一部分是暴露在阳光下。

我的方法是在表面上创建点,然后检查每个点与太阳当前位置之间是否存在任何障碍。我要补充的是,我需要知道哪些点在阴影中,哪些点在直射下,也就是说,知道30%的表面是阴影不足以满足我想做的事情。

  1. 有没有人对Sketchup的Ruby有足够的了解来告诉我如何创建这些点呢?我找到了PolygonMesh对象,它可能对我很有用,但无法让它工作。
  2. 取而代之的是,我可以/应该阅读哪些通用算法可以创建这些点?
  3. 在Sketchup中是否有更好的方法可以实现我想要的?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-21 06:56:12

我取得了一些进展!

一种选择是在质量中心创建一个点。对于所谓的规则多边形,即顶点分布均匀的地方(例如三角形或矩形),质量中心的坐标是

代码语言:javascript
复制
x_com = average(vertices.x)
y_com = average(vertices.y)
z_com = average(vertices.z)

有关更多细节,请参见这里:thread/22176

这将允许在质量中心创建一个构造点,如下所示:

代码语言:javascript
复制
# 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形表面。

不管怎么说,看来我有了个起点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17224752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档