路径可以在数学上表示为: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 – 如何在轴上旋转正弦曲线所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)