
为了旋转/平移物体(仅绕z轴旋转和仅在xy平面上平移)不仅仅是wrt到全局中心(设备中心)而且还有其他任意点,我创建了一个算法,这是正确的(因为所有高级我已经讨论过的编码器认为它是正确的),但是在实现中删除不需要的翻译需要花费很多时间(算法是在8月4日创建的,并且是在同一天实现的,从那以后代码被修改了15次).
这是http://www.pixdip.com/opengles/transform.php#ALGO1的实现
产生不希望的翻译的代码行在里面:
private static void updateModel(int upDown, float xAngle, float yAngle, float zAngle) {
并列出如下:
Matrix.multiplyMV(GLES20Renderer._uBodyCentreMatrix, 0, GLES20Renderer._ModelMatrixBody, 0, GLES20Renderer._uBodyCentre, 0);
objX = GLES20Renderer._uBodyCentreMatrix[0];
objY = GLES20Renderer._uBodyCentreMatrix[1];
即使进行了以下更改,沿着+ Y的不期望的转换仍然存在:
objY = _uBodyCentreMatrix[1] - _uBodyCentre[1];
zAngle = 0;
ds = 0;
由于Renderer类的这些字段,-0.545867f每次调用时都会将值添加到Y坐标onDrawFrame():
private static final float[] _uBodyCentre = new float[]{-0.019683f, -0.545867f, -0.000409f, 1.0f};
protected static float[] _uBodyCentreMatrix = new float[4];
在http://www.pixdip.com/opengles/transform.php#FIELDS中
我需要帮助才能理解为什么不希望的翻译发生,转换的确切错误,或者算法是错误的.
万向锁可以成为一个问题吗?
请不要让我执行/练习更简单的示例,因为我准备了Renderer类来进行关于全局z轴的旋转/转换,而我所进入的这个新任务使用相同的类,稍作修改 updateModel()
(请注意,所需的旋转仅约为z轴,仅在xy平面内平移)
[API 10-> 15] …
我正在寻找最新智能手机上所有组件及其电源排放的列表.
优选以mA为单位,因此可以很容易地将其与电池容量(通常以mAh表示)进行比较.
传感器的功能实际上可以通过SDK获得,也可以轻松找到AndroidFragmentation上的大多数设备.然而,我正在寻找的是其他硬件组件的可比数据,以考虑它们的效率.
额外奖励:对传感器更新频率更低的请求是否会降低传感器的能耗,因为它只返回一个值getPower()?