首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >点集上的二维旋转会引起倾斜畸变

点集上的二维旋转会引起倾斜畸变
EN

Stack Overflow用户
提问于 2013-01-15 18:00:23
回答 1查看 827关注 0票数 1

我正在用OpenGL编写一个应用程序(尽管我认为这个问题与此无关)。我有一些2d点集数据,我需要旋转。后来它被投影到3d中。

我使用这个公式进行轮换:

代码语言:javascript
运行
复制
x' = x cos f - y sin f
y' = y cos f + x sin f

在哪里'f‘是角度。当我旋转点集时,结果是倾斜的。影响的严重程度因角度而异。

很难描述,所以我有照片;红色的东西是一些简单的几何学。2d点集是你在它们周围看到的白色多边形的顶点。第一张图片显示不失真的点集,第二张图片显示旋转后的点集。不仅仅是旋转时发生的倾斜,有时似乎也会发生位移。

代码本身是微不足道的:

代码语言:javascript
运行
复制
double cosTheta = cos(2.4);
double sinTheta = sin(2.4);
CalcSimplePolyCentroid(listHullVx,xlate);
for(size_t j=0; j < listHullVx.size(); j++)   {

    // translate
    listHullVx[j] = listHullVx[j] - xlate;

    // rotate
    double xPrev = listHullVx[j].x;
    double yPrev = listHullVx[j].y;
    listHullVx[j].x = ((xPrev*cosTheta) - (yPrev*sinTheta));
    listHullVx[j].y = ((yPrev*cosTheta) + (xPrev*sinTheta));

    // translate
    listHullVx[j] = listHullVx[j] + xlate;
}

如果我注释掉上面‘/旋转’下面的代码,应用程序的输出就是第一个映像。然后再把它加回第二个图像。实际上没有其他事情发生(afaik)。

所使用的数据类型都是双倍的,所以我不认为这是一个精度问题。有人知道为什么旋转会导致像上面的图片所显示的那样的倾斜吗?

编辑菲利普的评论如下是正确的。这可能与轮换无关,我也没有提供足够的信息来解决这个问题;

我在图片中显示的几何图形代表了建筑物。它们是从龙/拉特地图坐标生成的。在我用来进行转换的点数据中,我忘记了用一个实际的投影到笛卡尔坐标空间,只是映射了x->lon,y->lat,我认为这就是我看到扭曲的原因。我请求删除这个问题,因为我不认为它对其他人有用。

EN

回答 1

Stack Overflow用户

发布于 2013-01-15 18:09:05

更新:由于您的注释,使错误不太可能出现在所提供的代码中。

最后一个提示: std变换公式只有在同体系统是笛卡尔的情况下才是有效的,在ios上有时会出现倒y Achsis。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14343884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档