方法1. 简单1 LED方法

这是一个很忽悠的方法,把LED看成是屏幕中心,把光枪摄像头的视野范围看作是屏幕范围。

假设WII枪头摄像头的数据范围为[0,1024]*[0,768],显示器屏幕分辨率为dx,dy。如果从手柄获取到的坐标值为x,y,则对应的屏幕位置为(x*dx/1024,y*dy/1024)。LED的位置放在屏幕中间最好,放在边缘也不差。如果给定人所站位置及屏幕大小等数据,那么可以得到精确的打法。

方法2. 貌似是官方的2LED方法

使用2 LED。感觉跟上面的方法原理类似,由于是2LED,所以还能多识别枪的旋转方向。2LED的位置放在屏幕上方或下方中间。

参考:

wiki - wiimote/pointing

---http://www.wiibrew.org/wiki/Wiimote/Pointing

A Better Wiimote Pointer

----http://blog.dawnofthegeeks.com/?p=496

 

上面两种方法的精确度改进

上面两种方法都是不精确的,没有定位过程和关于屏幕分辨率的设置。为了加强使用体验,我发现了一个来自http://www.davidhawley.co.uk/WiiSensorBar.aspx的文章《Make your Wiimote aim accurately and how the Wii sensor bar works with widescreen tv's》。按照里面的方法,可以通过修改人距离屏幕的距离或者LED间距离来改良精确度。最赞的是,页面里还包含了一个计算器,直接看图:

 

方法3:我的精确方法

假设1:2(不够求解就用3)个LED与屏幕处于同一个平面,令该平面为X-Y平面。

假设2枪使用总是平衡的。(如果这个不假设的话,可以多加LED或者使用枪内置的加速度传感器的数据也可以,不过暂不确定加速度传感器的精确程度)

那么要解决的问题有2个:

问题1如果枪所在点为(x,y,z)且方向为(n,m,p),那么通过这条直线的方程及平面方程Z=0就可以求得枪射在X-Y平面上的位置。

如何求x,y,z,n,m,p这6个值?有些值是可以直接固定的,例如方向不考虑大小则可以令p=1。当然,基本解决思路是用待定系数法。 系数法中的方程来源:有方向向量(n,m,p)及A,B,可以求出新的方向向量P(下面有解释)。其中A,B是枪头摄像头所获得的某LED的x,y坐标点转化得到的该LED到枪与枪所指方向的x,y轴方向的偏移角度。这样,用P和点(x,y,z)可以得到某LED的坐标值(这个已知),那么可以两个方程。

问题2通过开始对屏幕的四个角分别开一枪得到四角的X-Y坐标值,以及通过获取屏幕的分辨率,那么以后得到的X-Y坐标值就可以通过映射转换到屏幕分辨率值。如何转换,没思考下去,应该挺简单的。

当前遇到的问题是: 有方向向量(n,m,p), 给出A,B后, 如何求出新的方向向量P?

为了解释下A,B,是什么,看下面新的坐标系。

如果用这个新的坐标系来解释A、B的话。方便点,左边箭头轴是X',上箭头是Y',斜的那个是Z'。  那么向量P在Z'Y'上投影与Z'轴正方向的夹角为A,在Z'X'上投影与Z'轴正方向的夹角为B。

待续。。。

特别鸣谢:

其实1LED方法是追不了月的名字很长的火云大爷最先提出的而我在后面看到2LED方法时才决定使用的,虽然说理论上有明显的缺陷,但是实际效果还不错。另外他还提出了一个很忽悠的理论上都还不知道怎么求解的2LED方法,这里就略过了。

非常感谢小罗同学在这个问题上花费了不少时间并在最后给我指出了这个问题其实不是那么容易解决的,于是我想到下次可以试试用数值方法去求解。

关于WII光枪定位的设计(转)的更多相关文章

  1. EasyPR--开发详解(5)颜色定位与偏斜扭转

    本篇文章介绍EasyPR里新的定位功能:颜色定位与偏斜扭正.希望这篇文档可以帮助开发者与使用者更好的理解EasyPR的设计思想. 让我们先看一下示例图片,这幅图片中的车牌通过颜色的定位法进行定位并从偏 ...

  2. 游戏数值——LOL篇 以LOL为起点-说游戏数值设计核心思路

      附     文   文档在今年三月份我动笔写了一小部分,但当时思路凌乱,行文梗阻,于是丢在一边构思了半年,现在又回过头来慢慢写,希望能写好写完吧,初衷是希望即时萌新也能看懂,但是好像并不能行——本 ...

  3. 室内定位系列(一)——WiFi位置指纹(译)

    原文:<Advanced Location-Based Technologies and Services>--chapter 2 WiFi Location Fingerprint 作者 ...

  4. WebApp 设计要素

    从去年开始就负责公司WebApp的产品跟设计工作,最近整体大改了两个版本,也算累积了一些实际的经验.在不断学习的过程中,发现对于WebApp可以直接用于项目上的资料比较零碎,在这里总结一下,供初做 W ...

  5. [Architecture Design] 跨平台架构设计

    [Architecture Design] 跨平台架构设计 跨越平台 Productivity Future Vision 2011 在开始谈跨平台架构设计之前,请大家先看看上面这段影片,影片内容是微 ...

  6. 几种MEMS陀螺仪(gyroscope)的设计和性能比较

    现在市场上的MEMS陀螺仪主要有SYSTRON.BOSCH和INVENSENSE设计和生产.前两者设计的陀螺仪属高端产品,主要用于汽车.后者的属低端产品,主要用于消费类电子,象任天堂的Wii.ADI2 ...

  7. 一步一步实现基于Task的Promise库(三)waitFor方法的设计

    在上一篇中我们已经完成了Task.js里面的all和any方法,已经可以完美的解决大部分需求,我们再来看一个需求: 我们要先读取aa.txt的内容,然后去后台解析,同时由用户指定一个文件,也要读取解析 ...

  8. Windows 平台 (UWP)应用设计

    Make Your Apps Cooperate with Cross-App Communication :  https://rewards.msdn.microsoft.com/Challeng ...

  9. selenium 难定位元素,时间插件,下拉框定位,string

    1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: fin ...

随机推荐

  1. SCSF智能客户端学习笔记(一)

    什么是智能客户端 要了解智能客户端,首先要认识瘦客户端技术和胖客户端技术各自的优缺点. 对于前者,典型的应用就是使用浏览器,通过输入URL远程访问服务端,并向服务端发送命令,获取服务端的资源,然后在客 ...

  2. 失败的数据库迁移UDB

    公司采用的是ucloud的云主机,数据库也是架设在云主机上.由于数据越来越多数据查询数据越来越慢,所以我决定往 UDB上迁移.当时考虑的理由如下: (1)云主机底层架设在虚拟机上IO性能有折损,而UD ...

  3. 6.Inout双向端口信号处理方法

    Verilog中inout端口的使用方法 (本文中所有Verilog描述仅为展示inout端口的用法,实际描述则需要更丰富的功能描述) Inout端口的使用 在芯片中为了管脚复用,很多管脚都是双向的, ...

  4. springboot注解

    @RestController和@RequestMapping注解 我们的Example类上使用的第一个注解是 @RestController .这被称为一个构造型(stereotype)注解.它为阅 ...

  5. 如何在Win10下设置图片的浏览方式为windows照片查看器

    小编前些天刚装好了win10,一阵心奋啊,今天刚打开一个图片,却发现图片的默认打开方式是window应用商店的app, 这让我觉得特别不舒服,没有之前windows自带的照片查看器好用,后来我本想进入 ...

  6. CentOS6.5 安装JDK1.7详细步骤参考

    一般情况下,我们都要将linux自带的OPENJDK卸载掉,然后安装SUN的JDK. 首先查看Linux自带的JDK是否已安装. 输入如下命令,查看已经安装的JAVA版本信息. 输入如下命令,查看JD ...

  7. Weblogic环境下hibernate、antlr类加载冲突问题分析及解决方案

    公司应用项目在客户部署时经常遇到此类问题,为避免实施部署时增加配置量,花了点时间找到了此问题的终极解决办法(方案二.修改org.hibernate.hql.ast.HqlLexer的源代码).在此进行 ...

  8. 低功耗(LPS)VLSI 电路设计中的一些注意事项

    1. Non-Retention RAM/Register: 如果使用的RAM/Register本身在Power-Down状态下不可以保存自身的状态,那么一定要保证它们在power-up的时候会进行r ...

  9. python 循环技巧

    原文地址:http://docs.pythontab.com/python/python3.4/datastructures.html#tut-tuples 在字典中循环时,关键字和对应的值可以使用  ...

  10. html5.js

    可以让IE8等不支持Html5的浏览器,支持Html5元素,比如<header> <footer> <section>等标签 /* HTML5 Shiv v3.7. ...