如果您想获得鼠标相对于中心的角度,使用 atan2 应该可以对您进行排序:
ofDrawBitmapString("mouse angle: " + ofToString(ofRadToDeg(atan2(mouseY,mouseX)), 3),30,30);
如果您想与另一点进行比较,请不要忘记先在两点(例如鼠标,其他点)之间进行减法运算。
如果您想获得 3D 中 2 个向量之间的角度(ofxVec3f),您需要对这两个向量进行归一化,然后获得向量之间的点积的 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