如何使用旋转轴为铰链在三维空间中的矩形?(How to rotate a rectangle in

2019-10-16 18:31发布

我正在寻找具有固定轴为铰链旋转的矩形的正向的数学或算法计算。 正如你可以在下面的图片中看到。

我有4个矩形的顶点位置(x,y)和原产地是矩形的中心,因此所需的算法将投射我原来形状的顶点形成所要求的形状顶点。 (请参见下图)

我知道它很容易与3D库做到这一点,但我需要与2D图形的高级语言像.NET或Java或东西没有任何3D或互补的图书馆这样做。

请帮我带任何想法或基准或比所有源代码或算法更好。

在此先感谢您质量的时间。

Answer 1:

总结以上我的评论:

  • http://en.wikipedia.org/wiki/Rotation_matrix
  • http://en.wikipedia.org/wiki/3D_projection
  • http://en.wikipedia.org/wiki/Viewing_frustum


Answer 2:

从我的经验,有两个层面的工作的时候,我发现了一个名为奇妙的工具巨大成功处理 。 处理是Java编程语言的一个扩展,在任何可视化专门针对,从数据结构来恐吓物理模拟。 从你提供的帮助的图形,我假设你想在任何给定的时间绕点或轴一个结构。 看看功能丰富的API参考,处理报价(我是新用户,不幸的是我不能链接两个以上的项目,将会把链接下面API参考)。 他们有旋转和变换点周围独特的功能。 但是,它不旋转的结构围绕上述点,而是旋转了整个屏幕,一切都包含围绕点。 例如,如果你想绕原点(0,0)通过45度的一切,这将是简单的:

void setup()
{
  size(200, 200); // Set the size of the screen to 200 x 200 pixels
  background(255); // Set the background to white
  smooth(); // Smooth the edges of the rectangles
  fill(192); // Fill the rectangle with a light gray
  noStroke(); // No black border on rectangle
  rect(40, 40, 40, 40); // Create an equilateral rectangle (square) that is 40 x 40 pixels at the point (40,40)

  pushMatrix(); //Let the compiler know that you will be modifying the Matrix
  rotate(radians(45)); // Rotate the screen about the origin (by default) 45 degrees clockwise
  fill(0); // Color the following rectangle black
  rect(40, 40, 40, 40); // Draw an equivalent rectangle as the last one, only at the new modified screen coordinates
  popMatrix(); // Let the compiler know you are done modifying the matrix
}

上面的代码将创建两个相同的正方形,一个在点(40,40)和一个在约原点顺时针45度。

有一个非常详细的教程,在那里,可以发现这里这解释了详细得多的一切。 我真的希望这会有所帮助。 祝一切顺利! API参考:processing.org/reference/



文章来源: How to rotate a rectangle in 3d space using an axis as a HINGE?