android – 如何在轴上旋转正弦曲线

android – 如何在轴上旋转正弦曲线,第1张

概述我正在编写2D游戏.我取得的是基于自定义路径移动精灵. 路径可以在数学上表示为:y = sin(x)..因此运动是波. 我想以这种方式旋转这个波浪,所以运动不是水平的,而是垂直的,或者有一些自定义角度相对于原点. 我数学上有点弱.抱歉.有人可以帮忙. 我的代码是这样的 for (int i=0; i<300; i++) { coordinatesX[i] = i; coordinatesY 我正在编写2D游戏.我取得的是基于自定义路径移动精灵.
路径可以在数学上表示为:y = sin(x)..因此运动是波.
我想以这种方式旋转这个波浪,所以运动不是水平的,而是垂直的,或者有一些自定义角度相对于原点.
我数学上有点弱.抱歉.有人可以帮忙.
我的代码是这样的

for (int i=0; i<300; i++) {  coordinatesX[i] = i;  coordinatesY[i] = (float) (50 * Math.sin(coordinatesX[i]));}createpath (coordinatesX,coordinatesY);...
解决方法 好吧,你的对象用一些起始坐标(x,y)^ t表示.要在2D空间中旋转,您可以使用旋转矩阵

R = [ cos(a) -sin(a)]    [ sin(a) cos(a) ]

由于您还想执行平移T(沿正弦波移动),您可以通过将2D坐标扩展到3D同质坐标来构成仿射变换.假设你的平移将是(tx,ty)并且你的旋转角度(以弧度表示)是a,变换矩阵将是

T = [ cos(a) -sin(a) tx      sin(a) cos(a)  ty        0       0     1 ]

将原始(x,y)点转换为(x,y,1)时,简单

T * (x,1)^t

会做的.

您可以通过将所有元素除以最后一个(即,您松散一个维度),从均匀坐标到笛卡尔坐标.因为在这个简单的情况下,它们始终为1,您可以简单地删除最后一个坐标并返回2D.

编辑:
多重T和(x,1)^ t得出:

T*(x,1)^t = [ cos(a) -sin(a) tx ] [ x ]              [ sin(a) cos(a)  ty ]*[ y ]  =              [   0      0      1 ] [ 1 ]              = [ cos(a)*x - sin(a)*y + tx ]               [ sin(a)*x + cos(a)*y + ty ] =                [           1              ]              = (cos(a)*x - sin(a)*y + tx,sin(a)*x + cos(a)*y + ty,1)^t
总结

以上是内存溢出为你收集整理的android – 如何在轴上旋转正弦曲线全部内容,希望文章能够帮你解决android – 如何在轴上旋转正弦曲线所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1128496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存