计算机图形学中的固定旋转

private void fixedRotate(int o,int i,double t,double x,double y)

    {

        translate(o, i, -x, -y);

        rotate(o, i, t);

        translate(o, i, x, y);

    }


private void rotate(int o,int i,double t)

    {

        double x1, y1;

        x1 = x[o, i];

        y1 = y[o, i];


        x[o, i] = x1 * Math.Cos(t) - y1 * Math.Sin(t);

        y[o, i] = x1 * Math.Sin(t) + y1 * Math.Cos(t);

    }

因此,从 translate() 方法,该点指向 (0,0) 点。然后旋转完成,点再次平移。但是在 rotate() 方法中,x1 和 x2 将始终为 0。所以 x[o,i] y[o,i] 都是 0。据我所知,这段代码应该将点返回到同一个地方。但是代码运行良好。请解释。提前致谢!


九州编程
浏览 409回答 1
1回答

守候你守候我

好吧,我想通了。方法中的 x 和 yfixedRotation()表示多边形的中心。这意味着如果它是一个正方形,则正方形的中点被转换为 center(0,0) 点
打开App,查看更多内容
随时随地看视频慕课网APP