0
我想要一個正方形(由head
代表)始終面向鼠標(由Mouse
表示 - 是的,它是LWJGL)。我有一個有點麻煩,實際上得到它面對torward鼠標,因爲我使用glRotatef(angle)
,這使用三點尋找角度
- 需要度,而大多數Java
Math
功能涉及弧度 - 是很難做到的,因爲我有沒有辦法知道我有多遠都以朝鼠標
我颳起了下面的Java代碼,它假設0度指向旋轉直線上升:
double mx = Mouse.getX();
double my = Mouse.getY();
double rx = head.x;
double ry = head.y + 1;
double vx = head.x;
double vy = head.y;
double mtor = Math.sqrt(Math.pow(mx + rx, 2) + Math.pow(my + ry, 2));
double mtov = Math.sqrt(Math.pow(mx + vx, 2) + Math.pow(my + vy, 2));
double rtov = Math.sqrt(Math.pow(rx + vx, 2) + Math.pow(ry + vy, 2));
double rotate = Math.toDegrees(Math.acos((Math.pow(mtov, 2) + Math.pow(rtov, 2) - Math.pow(mtor, 2))/(2*mtov*rtov))));
然而,這產生了一些奇怪的結果:
(該用白色方塊側的前部。對於一個完整的專輯去http://imgur.com/a/4DwFg)
下面是一些控制檯輸出:
Mouse X: 555.0
Mouse Y: 439.0
Reference X: 400.0
Reference Y: 301.0
Vertex X: 400.0
Vertex Y: 300.0
Rotation: 65.56236879269605
Mouse X: 552.0
Mouse Y: 440.0
Reference X: 400.0
Reference Y: 301.0
Vertex X: 400.0
Vertex Y: 300.0
Rotation: 65.5244609346555
那麼,我究竟做錯了什麼? (額外的信貸:有沒有更好的方法來做到這一點在OpenGL?)
如果您對我在做什麼有任何疑問,請告訴我。 – maybeWeCouldStealAVan
這總是會返回一個-45或135的值。 –
您是不是指'double dy =(my-vy);'?如果我這樣做,它會起作用。謝謝! –