我有一个相当简单的问题.我觉得我应该在很久以前找到答案,但不知何故我无法解决这个琐碎的问题.
给定矢量v =(x,y),我想知道它是'一般'方向.那是"向上","向下","向左"或"向右"
如果矢量的方向介于45和135度之间,则矢量的一般方向为"向上"."左"在135到225度之间.'向下'介于225和315度之间.'右'在315到45度之间.
我并不关心角度恰好是45度,135度,225度或315度的情况.
问题是,我不想使用三角学.我很确定这是一个简单的解决方案.
我认为解决方案可以将整个圈子分成八个.这是我到目前为止所拥有的.
if(x > 0 && y > x)
return Up
if(x > 0 && y > 0 && y < x )
return Right
... etc ...
Run Code Online (Sandbox Code Playgroud)
基本上,我知道我可以找到解决方案.我对你自己解决这个问题的方法更感兴趣.
谢谢 !
编辑:使用的向量未标准化.您可以使用一对点表示任何矢量.只需假装向量的原点是(0,0).
确实有一种方法.所有你必须意识到,如果abs(y)> abs(x),那么方向是垂直的,否则方向是水平的.如果是垂直的,y上的符号将指示向上/向下,否则,x上的符号将指示向左/向右.所以:
if (abs(y) > abs(x)) {
if (y > 0) up else down
} else {
if (x > 0) right else left
}
Run Code Online (Sandbox Code Playgroud)
45度角总是向左或向右.
| 归档时间: |
|
| 查看次数: |
3188 次 |
| 最近记录: |