我試圖創建一個算法來找到一個圓上的切線,以便我可以計算該圓與物體發生碰撞時的反射角。我知道圓心和半徑的x和y值。我也有與其他對象的影響點的x和y值。任何關於如何計算使用Java庫的切線的幫助都很好,或者如果有人對如何計算反射角度有任何建議,我們將會感激。謝謝。從圓上的點計算切線?
回答
從我的理解,你實際上想要計算圓的入射角。爲此,您需要知道圓的運動角度以及它反彈的表面的角度;無論圓的碰撞角度如何,碰撞點都是相同的,因爲碰撞點是相同的。如果你有這個角度,那麼這個圓的新角度由(360 - circle's angle + (surface's angle * 2)) % 360
給出。我懷疑你跟蹤了圓的移動角度,儘管你可能已經有兩個變量來描述它的移動,也許是沿着這樣一條線:「對於每一次更新,移動圓圈dx
單位和dy
個單位」。如果你有這個,你可以用(180/π) * arctan(dy/dx)
來計算圓的角度。這個公式可以工作,因爲dy/dx
給出了平面上圓的運動所產生的線的斜率。一旦我們有了斜率,我們就取它的反正切(arctan),以弧度給出它的角度。最後,我們將該角度轉換爲180/π
部分的度數。
這也適用於如果我們使用表面的斜率。假設表面是從點(x1, y1)
開始並結束於點(x2, y2)
的線。表面的斜率可通過(y1 - y2)/(x1 - x2)
找到。然後我們可以像之前一樣應用公式,替換曲面的斜率,如下所示:(180/π) * arctan((y1 - y2)/(x1 - x2))
。
現在,您已經擁有圓和曲面,並且可以應用上面的第一個公式。
是的,謝謝。這正是我的意思。雖然我對錶面的角度有些困惑,但我的意思是,將使用什麼來代替dy和dx來計算其角度? – John 2012-03-07 23:20:10
你基本上需要找到表面的斜率。假設曲面是一條從'(x1,y1)'點開始併到'(x2,y2)'點的線。那麼'dy = y2 - y1'和'dx = x2 - x1'。 – justinrstout 2012-03-07 23:33:57
謝謝。如果碰撞位於角落,表面斜率是碰撞點處圓的切線?如果是的話,我應該如何讓dy和dx離開這個斜坡? – John 2012-03-07 23:45:13
- 1. 計算兩個圓上兩點之間的切線圓弧
- 2. 計算一個圓上兩個切線的交點?
- 3. 如何計算3D圓的切線?
- 4. 計算橢圓上的點
- 5. 用SAGE計算橢圓曲線上一個點的y座標?
- 6. 在Java Card上使用橢圓曲線計算添加點
- 7. 切線空間,切線/ Binormal計算
- 8. 以橢圓軌道計算橢圓軌道上的點
- 9. 從圓弧計算圓的大小?
- 10. 計算3D切線空間
- 11. 從上面3點計算圓心和半徑
- 12. 計算圓上一點的座標,沿圓的中心與另一點之間的一條直線?
- 13. 計算通過中心的圓與線的交點
- 14. 如何計算曲線上的點?
- 15. 計算最適合橢圓的線條
- 16. 如何計算圓柱的頂點法線?
- 17. 如何用CGAL計算線段和圓的交點
- 18. 計算橢圓和線的交點處理中
- 19. 將圓轉換爲橢圓,以便從橢圓邊框計算點的距離
- 20. 如何計算由三點給出的兩條直線的半徑爲R的圓的兩個切點
- 21. 計算圓中的點數 - 步長?
- 22. 如何計算橢圓弧的點
- 23. 用圓角矩形計算外線
- 24. svg:如何在計算的線上設置一個圓?
- 25. Python的計算圓
- 26. 從Python列表中計算線交點
- 27. 從分散點計算直線
- 28. 計算最接近2個圓的交點的圓的座標
- 29. 計算圓弧和直線之間的圓角
- 30. 圓點算法?
那麼,你在問如何找到切線方程? – noMAD 2012-03-07 21:33:53
如何處理紙張和鉛筆? – 2012-03-07 21:34:28
那麼,我想這可能是一個答案是的,但有沒有什麼方法可以讓Java庫更容易地做我正在做的事情?此外,我所做的整個事情是計算這個反射角度的好方法。 – John 2012-03-07 21:36:31