首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用归一化向量存储标题

使用归一化向量存储标题
EN

Stack Overflow用户
提问于 2012-10-13 01:13:55
回答 3查看 377关注 0票数 1

我正在用C#/XNA做一个简单的游戏。我的演员们把他们打算成为Vector2的方向存储起来。在每个更新周期,我将标题规范化(因为它的设置方式可能导致不同的长度),并添加heading*Speed到位置以移动参与者。

这看起来很不雅致。从逻辑上讲,一个方向没有长度,它是单位长度的定义。实际情况下,常量归一化的计算量是微不足道的。

  1. XNA有NormalizedVector2吗?
  2. 如何创建一个与XNA的Vector2兼容的(即可以添加到它中等等)?扩展Vector2并重写Length属性?
  3. 在我如何完成我想要完成的事情时,是否存在更大的概念性问题?
EN

回答 3

Stack Overflow用户

发布于 2012-10-13 01:26:51

  1. 不是的。XNA中唯一的二维矢量是Vector2
  2. 你不能。因为Vector2struct,所以你不能轻蔑它。但是,您可以创建自己的类型,并提供一个方法将其转换为Vector2 (通过创建一个新的Vector2)。

实际上,我怀疑您当前的方法(使用Vector2并只调用规格化可能是最好的方法。如果您真的担心很多调用,请使用out作为参数,因为它的效率略高一些。

票数 2
EN

Stack Overflow用户

发布于 2012-10-13 01:47:15

  1. 据我所知
  2. 如前所述,向量不能被子类化,但是您可以创建一个Direction来处理计算,它可以被解析为一个Vector2,或者只有一个Vector。
  3. 我只需要用一个酉向量,然后用矩阵旋转它。在性能方面,它避免了通常是缓慢操作的分割。即使在逻辑上,它更常见的表示方向为向左30°,而不是x+ y。
票数 0
EN

Stack Overflow用户

发布于 2012-10-13 12:14:19

我是不是遗漏了什么?归一化向量就是x+y总和为1并指向一个方向的向量。它没有长度,就像任何向量一样。

您可以将规范化向量存储在同一类型的向量中。当然,当你需要改变某些事情的方向时,你需要更新它。

这里描述了一个相当简单的概念:http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.vector2.normalize.aspx

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12869066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档