找到2D三角形的中心?

时间:2009-02-07 22:57:36

标签: c opengl rotation geometry

我已经获得了一个带有x和y坐标的2D三角形的结构,一个旋转变量,等等。从那些x和y坐标创建的点,我应该在点周围绘制一个三角形并使用旋转变量适当地旋转它。

我熟悉使用GL_TRIANGLES在OpenGl中绘制三角形。我的问题是以某种方式提取三角形的中间并在其周围绘制顶点。

编辑:是的,我要找的是质心。

4 个答案:

答案 0 :(得分:36)

三角形的中心有不同的“类型”。详细信息:The Centers of a Triangle。找到三角形中心的快速方法是平均所有点的坐标。例如:

GLfloat centerX = (tri[0].x + tri[1].x + tri[2].x) / 3;
GLfloat centerY = (tri[0].y + tri[1].y + tri[2].y) / 3;

当您找到中心时,您需要围绕中心旋转三角形。要执行此操作,请翻译以使中心位于(0,0)。执行轮换。现在颠倒你之前执行的翻译。

答案 1 :(得分:6)

我猜你的意思是三角形的质心!? 这可以通过1/3(A + B + C)容易地计算,其中A,B和C是三角形的各个点。 如果你有分数,你可以像往常一样将它们乘以旋转矩阵。希望我帮到你。

答案 2 :(得分:2)

三角形中有几个点可以被认为是它的中心(正中心,质心等)。 This section of the Wikipedia article on triangles有更多信息。只需查看图片即可快速浏览。

答案 3 :(得分:0)

“中间”是指“质心”,如果它是一个厚度和密度恒定的三维物体,那么它是重心吗?

如果是这样,那么选择两个点,找到它们之间的中点。然后取这个中点和第三个点,找到它们之间的距离的1/3(更接近中点)。那是你的质心。我不是为你做数学的。