- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2D旋转的数据基础-Read.doc
2D旋转的数据基础 考虑笛卡儿直角坐标系中单个点旋转的情况。如图二示,这里点P(x,y)到原点O绕O点逆时针旋转角度θ后到点P′(x′,y′)。由三角函数的几何意义,有x = r*cos α ,y = r*si n α和x′ = r*cos(α +θ) , y′ = r*sin(α + θ),推出:
x′ = x * cos θ – y * sin θy′ = y * cos θ + x * sin θ 当把旋转点一般化为Q(x0,y0),得到:
x′ = x0 + (x - x0) cos θ - (y - y0) sin θ y′ = y0 + (y - y0) cos θ + (x - x0) sin θ 在开发时,我们使用设备坐标系,它以屏幕的左上角为坐标原点,y轴方向向下。此时,我们不妨视θ为饶旋转点顺时针旋转的角度,这样,上面的公式依然成立。
图二 2D点的旋转 一般图像的旋转算法 1、算法思想 为实现整个图像的旋转,我们首先获取源图像每个点的像素值。然后根据旋转点和角度的大小计算出新图像的大小。再逐点计算源图像中每个点经旋转后在新图像中对应点的坐标,并把相应的像素值赋给它。 在图三中,阴影部分为源图像,O为旋转点,P、Q分别为旋转前后图像左上角的点,cx,cy为O相对于源图像左上角P点的坐标值。这里我们以O为圆心,以O距图像4个顶点的距离的最大值作为半径dr画圆,这样图像无论以任何角度旋转都不会超出这个圆的范围。于是,我们就以该圆为画布绘制旋转所得新图像。由于实际中图像是用矩形表示的,于是我们生成和圆的外切正方形(图中虚线部分)等大小的新图像。 对源图像中任一点(i,j),根据上面的公式,不难计算出旋转θ度在新图像中的位置,即相对于Q点的位置(destX , destY):
destX = dr + (i - cx) *cos(radian) - (j - cy)*sin(radian);destY = dr + (j - cy) *cos(radian) + (i - cx)*sin(radian); 计算出这个位置后,把该点的像素值赋值到这个位置,如此对每个点进行这种变换,即可实现整个图像的旋转。 旋转后的图像较大,在实际绘制时需要做位置调整,不难看出,Q点相对于P点的偏移量为(cx-dr , cy-dr)。即假设源图像的屏幕位置为(a , b),则旋转后的图像位置应该为( (a + cx – dr) , (b + cy – dr) )。
图三 旋转算法示意图 2、在J2ME中的算法实现 我们将上面的思想具体化,得到算法的流程图(见图四示)
图四 算法流程图 在MIDP2.0中,Image类提供了两个方法:getRGB()和createRGBImage(),分别完成获取图像象素信息和通过像素数组创建图像的功能。借助于这两个方法,结合上面的流程图,我们得到实现图像旋转算法的代码,如下面所示。
/***@param imgSource 源图像*@param cx 旋转点相对于源图像坐上角横坐标*@param cy 旋转点相对于源图像坐上角纵坐标 *@param theta 图像逆时针旋转的角度*@param dd 含2个元素的整形数组,存放新图像相对源图像沿x轴和y轴的位置偏移量*@return 旋转后的图像**/public Image rotate(Image imgSource, int cx, int cy, double theta, int[] dd) { if (Math.abs(theta % 360) 0.1) return imgSource; //角度很小时直接返回 int w1 = imgSource.getWidth(); //原始图像的高度和宽度 int h1 = imgSource.getHeight(); int[] srcMap = new int[w1 * h1]; imgSource.getRGB(srcMap, 0, w1, 0, 0, w1, h1); //获取原始图像的像素信息 int dx = cx w1 / 2 ? cx : w1 - cx; //计算旋转半径 int dy = cy h1 / 2 ? cy : h1 - cy; double dr = Math.sqrt(dx * dx + dy * dy); int wh2 = (int) (2 * dr + 1); //旋转后新图像为正方形,其边长+1是为了防止数组越界 int[] destMap = new int[wh2 * wh2]; //存
您可能关注的文档
- 2016-07-09上海汽车集团股份有限公司关于实施2015年度利润分配方案.PDF
- 2016-11-01关于更换2014年重大资产重组项目持续督导人员-华闻传媒.PDF
- 2016-17年度全州考试公告.PDF
- 2016亚洲物业管理展览会简介FactSheet.PDF
- 2016卓越班组长-课程设置-苏州工业园区高技能人才网.PDF
- 2016土建筑类答案(社会)A.PS.PDF
- 2016工业自动化展5.1号馆展位图.PDF
- 2016年10月19-21日上海光大会展中心2016.10.19-21-Aaronia.PDF
- 2016年12月13日P.6-P.7工作纸延伸阅读〈致萧军、萧红〉(节录)鲁迅刘.PDF
- 2016年4月至6月完成处理根据《守则》索取资料的个案1渔农自然护理署.PDF
- 2024-2025学年安徽省卓越县中联盟高一(上)期中联考物理试卷(含答案).pdf
- 2024-2025学年广东省惠州市第一中学高二(上)期中物理试卷(含答案).docx
- 2024-2025学年广东省惠州市第一中学高二(上)期中物理试卷(含答案).pdf
- 2024-2025学年内蒙古鄂尔多斯一中伊金霍洛分校九年级(上)月考物理试卷(10月份)(含答案).docx
- 2023-2024学年山东省淄博市张店六中八年级(下)期中物理试卷(含答案).pdf
- 2024-2025学年河南省安阳市龙安实验中学八年级(上)第一次月考物理试卷(含答案).pdf
- 2024-2025学年河南省安阳市龙安实验中学八年级(上)第一次月考物理试卷(含答案).docx
- 2024-2025学年江苏省常州实验中学九年级(上)期中物理试卷(含答案).docx
- 2024-2025学年湖北省武汉市江岸区八年级(上)期中物理试卷(含答案).docx
- 2024学校食品安全周活动总结(30篇).pdf
文档评论(0)