- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写一个 2D 游戏。我实现的是在自定义路径的基础上移动 Sprite 。路径可以用数学表示为: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,y,1)^t
会成功的。
您可以通过将所有元素除以最后一个元素来从齐次坐标返回到笛卡尔坐标(即您失去一个维度)。由于在这种简单的情况下它们始终为 1,因此您可以简单地删除最后一个坐标并返回 2D。
编辑:将 T 和 (x,y,1)^t 相乘得到:
T*(x,y,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 - 如何在轴上旋转正弦曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8793188/
绘制余弦曲线 要求:在屏幕上用“*”(星号)显示0°~360°的余弦函数cos(x)曲线。(不使用数组) 问题分析与算法设计 对一般的显示器来说,只能按行输出,即:输出第一行信
我希望在 iOS 的循环中为单线贝塞尔曲线制作动画。我脑海中的想法类似于 Siri 之前 iPhone 4 上的语音控制屏幕。曲线不需要对任何东西使用react,即。音频、麦克风等,只需要从屏幕左到屏
我正在尝试制作一个更逼真的动画 svg 旗帜,随风飘扬。这是我目前正在使用的一个简单的标志库: 如您所见,我绘制了一个正方形,并沿顶部和底部边缘添加了一个中点。为
我正在尝试制作一个更逼真的动画 svg 旗帜,随风飘扬。这是我目前正在使用的一个简单的标志库: 如您所见,我绘制了一个正方形,并沿顶部和底部边缘添加了一个中点。为
我是一名优秀的程序员,十分优秀!