【问题标题】:JaveFX TriangleMesh Pyramid - it works, but why?JaveFX TriangleMesh Pyramid - 它有效,但为什么呢?
【发布时间】:2017-12-11 15:05:03
【问题描述】:

在一些文本中“轻松”地解释了制作 4 面金字塔,如下所示:

pyramid.getPoints().addAll(0,0,0); //0 = top
pyramid.getPoints().addAll(0, height, -hypotenuse/2); //1 = closest
pyramid.getPoints().addAll(-hypotenuse/2, height, 0); //2 = leftest
pyramid.getPoints().addAll(hypotenuse/2, height, 0); //3 = furthest
pyramid.getPoints().addAll(0, height, hypotenuse/2); //4 = rightest

pyramid.getTexCoords().addAll(0, 0);

pyramid.getFaces().addAll(0,0,2,0,1,0); //Left front side
pyramid.getFaces().addAll(0,0,1,0,3,0); //???
pyramid.getFaces().addAll(0,0,3,0,4,0); //Right back side
pyramid.getFaces().addAll(0,0,4,0,2,0); //???
pyramid.getFaces().addAll(4,0,1,0,2,0); //Bottom triangle at front???
pyramid.getFaces().addAll(4,0,3,0,1,0); //Bottom triangle right???

它有效,但我不明白。

添加的第二个面有顶点 0、1、3,所以(参考图)......它将金字塔切成两半。据我所知,这不是一张外在的面孔。 与第 4 个面相同,只是现在切片与第 2 个面正交。然后是最后两个面,应该是构成金字塔方形底部的三角形。第一个是从顶点 4 到顶点 1 到顶点 2,所以……那是金字塔底部的前三角形(我认为是这样)。所以我希望顶点 2,3,4 形成金字塔底的后三角形,但在最后一行代码中,我们看到顶点 4,3,1,(根据我的逻辑)构成金字塔的直角三角形底,即不补充金字塔底的前三角形。有人可以解释一下这个简单的几何难题吗?有没有合适的深度资源可供我学习?

非常感谢 - 迈克尔

【问题讨论】:

  • 我是新手。我的问题在哪些方面不是最小的、完整的、可验证的?
  • 我无法复制并粘贴它以在我的机器上运行它。这意味着它不完整。
  • 顶点 3 和 4 在您的图像中似乎颠倒了。 (只需忽略顶点 1-4 中的(相同)y 坐标并将它们绘制为 2D。)如果您转置这两个顶点,则所有面都有意义。

标签: java javafx


【解决方案1】:

顶点的正确编号是(为粗略绘制的图像道歉):

您可以通过在 x-z 平面中绘制顶点 1-4 来相当清楚地看到:

1: (0, -h/2)
2: (-h/2, 0)
3: (h/2,  0)
4: (0,  h/2)

所以脸

(0,2,1)
(0,1,3)
(0,3,4)
(0,4,2)
(4,1,2)
(4,3,1)

准确描述你想要的三角形。

【讨论】:

  • 非常感谢!在我买的书(JavaFX Introduction by Example)中显然是错误的,其中 cmets 建议按照我的图进行排序,但当然你是对的,我应该查看传递给 mesh.getPoints.addAll( ...)。抱歉,再次感谢...
  • @M.Kemper 如果此答案解决了您的问题,请单击其左侧的复选标记图标接受它。
  • 很高兴这样做,如果我能找到那个复选标记图标...你/有人能解释一下吗? - 迈克尔
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 2015-03-26
  • 2019-05-27
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多