试图获得两个向量的相对角度。
但是代码输出的内容是关闭的。
任何人都知道我哪里出错了?
使用两个向量和这一行
ofDrawBitmapString(ofToString(point.angle(mouse), 5), 20, 40);
输出应与vec2f状态中的度数相同。 此外,如果您将两个矢量设置为相同的角度但相距更远,则会再次给出不同的值。
...困惑?
有人用它取得了成功吗?
我尝试创建自己的计算但是使用set tan和atan甚至不能正确地为我工作..
一个非常简单的计算应该让我感到难过。
答案 0 :(得分:1)
如果你想获得鼠标相对于中心的角度,使用atan2应该让你排序:
ofDrawBitmapString("mouse angle: " + ofToString(ofRadToDeg(atan2(mouseY,mouseX)), 3),30,30);
如果你想让旋转与另一个点相比,不要忘记先在两点之间进行减法(例如鼠标,其他点)。
如果你想获得3D中2个矢量之间的角度( of xVec3f ),你需要对两个矢量进行标准化,然后得到矢量之间的点积的acos
angle_in_radians = acos(v1.dot(v2))
ofxVec3f 已经通过 angle()和 angleRad()方法为您提供了此功能,其中角度返回以度为单位的角度和angleRad用弧度表示。
这是一个基本测试,显示控制台中两个随机向量之间的角度:
ofxVec3f v1(ofRandom(0,20),ofRandom(0,20),ofRandom(0,20));
ofxVec3f v2(ofRandom(0,20),ofRandom(0,20),ofRandom(0,20));
printf("v1(%f,%f,%f)\tv2(%f%f%f)\tangle:%f",v1.x,v1.y,v1.z,v2.x,v2.y,v2.z,v1.angle(v2));
//here's a test print: v1(10.333943,16.629400,5.899722) v2(3.60652910.2126262.595955) angle:12.418082