最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

iphone 陀螺仪 测试软件,iPhone

运维笔记admin35浏览0评论

iphone 陀螺仪 测试软件,iPhone

iphone 陀螺仪 测试软件,iPhone

我对此表示怀疑并放弃了(晚上晚了,似乎什么都没得到)。 这用于Unity3d项目。

如果有人想在我离开的地方接机,我将很乐于详细介绍所有这些东西。

基本上在发现某些误报之后,我想我会尝试使用低通滤波器对其进行过滤,然后尝试通过查找趋势来消除反弹,然后(acc_x [i-1] + acc_x [i] )/ 2。

看来误报仍然来自倾斜,我尝试将其消除。

如果此代码有用或将您引向某个地方,请告诉我!

using UnityEngine;

using System.Collections.Generic;

///

/// rbi.noli@gmail

///

public class AccelerometerInput : MonoBehaviour

{

Transform myTransform;

Gyroscope gyro;

GyroCam gyroCam;

void Awake()

{

gyroCam= FindObjectOfType ();

myTransform = transform;

if (SystemInfo.supportsGyroscope) {

gyro = Input.gyro;

gyro.enabled = true;

}

}

bool shouldBeInitialized = false;

void Update ()

{

transform.Translate (GetAccelerometer ());// * Time.deltaTime * speed);

//GetComponent ().AddForce (GetAccelerometer ());

}

public float speed = 10.0F;

public Vector3 dir;

public float f;

Vector3 GetAccelerometer()

{

dir = Input.acceleration;

dir.x *= gyro.attitude.x;

dir.z *= gyro.attitude.z;

if (Mathf.Abs (dir.x) < .001f)

dir.x = 0;

dir.y = 0;

if (Mathf.Abs (dir.z) < .001f)

dir.z = 0;

RecordPointsForFilter (dir);

//print ("Direction : " + dir.ToString("F7"));

return TestPointsForVelocity();

}

Vector3[] points = new Vector3[20];

int index;

void RecordPointsForFilter(Vector3 recentPoint)

{

if (index >= 20)

index = 0;

points [index] = EvaluateTrend (recentPoint);;

index++;

}

//try to remove bounces

float xTrend = 0;

float zTrend = 0;

float lastTrendyX = 0;

float lastTrendyZ = 0;

Vector3 EvaluateTrend(Vector3 recentPoint)

{

//if the last few points were positive, and this point is negative, don't pass it along

//accumulate points into a trend

if (recentPoint.x > 0)

xTrend += .01f;

else

xTrend -= .1f;

if (recentPoint.z > 0)

zTrend += .1f;

else

zTrend -= .1f;

//if point matches trend, keep it

if (xTrend > 0) {

if (recentPoint.x > 0)

lastTrendyX = recentPoint.x;

} else // xTrend < 0

if (recentPoint.x < 0)

lastTrendyX = recentPoint.x;

if (zTrend > 0) {

if (recentPoint.z > 0)

lastTrendyZ = recentPoint.z;

} else // xTrend < 0

if (recentPoint.z < 0)

lastTrendyZ = recentPoint.z;

return new Vector3( lastTrendyX, 0, lastTrendyZ);

}

Vector3 TestPointsForVelocity()

{

float x = 0;

float z = 0;

float xAcc = 0;

float zAcc = 0;

int successfulHits = 0;

for(int i = 0; i < points.Length; i++)

{

if(points[i]!=null)

{

successfulHits ++;

xAcc += points[i].x;

zAcc += points[i].z;

}

}

x = xAcc / successfulHits;

z = zAcc / successfulHits;

return new Vector3 (x, 0, z);

}

}

发布评论

评论列表(0)

  1. 暂无评论