3

我正在将我们的一个旧应用程序从 vb6 更新到 c#,并且在此过程中必须重新创建原始程序员设计的自定义控件。该控件简单地获取对象的尺寸,矩形或圆锥形,并在 3D 中放置对象的轮廓草图(我认为技术上是 2.5D)。当然,控制或算法的代码无处可寻。

事先对此一无所知,除了视角之外,我几乎已经复制了所有内容。我正在使用我在此处的另一个答案中找到的代码。

        }
        double w = 400;
        double h = 250;
        double t = 0.6; // tilt angle   
        double X = w / 2 - x;
        double Y = h / 2 - y;
        double a = h / (h + Y * Math.Sin(t));
        double u = a * X + w / 2;
        double v = a * Y * Math.Cos(t) + h / 2;
        }

不过,我需要帮助的最后一点是将视角从左到右旋转大约 30 度,所以我没有直视。

谢谢你的帮助。

4

1 回答 1

0

正如评论者所说:您应该使用矩阵让您的生活变得轻松。

旋转可以很容易地通过乘以 2 个矩阵,一个旋转矩阵和一个透视矩阵来完成:

// We don't have a view matrix here
Matrix4x4 modelProjection = Matrix4x4.Perspective(400, 250, Math.PI / 4) * Matrix4x4.RotationX(degree);
// Get a specifics point position, use x and y to determine the screen position and z for the z-order
Vector3 screenPosition = modelProjection * myPosition; // myPosition is a Vector3

为了运行代码,您必须做一些事情: 实现一个 C# 矩阵,或者从其他任何地方获取它。是实现矩阵的绝佳来源。

于 2012-10-11T15:16:03.867 回答