我一直在研究一些關於幾何圖元的算法,其中兩個對我來說最重要的是筆畫和圓圈。 Oracle似乎沒有提供用於繪製這些形狀的確切信息。我之所以要這樣做,是因爲我需要將來自繪畫的受影響像素存儲到用於遊戲碰撞檢測的texturePaint []中。我主要想要專家的意見,如果它的價值,甚至做,因爲使用bufferedImages是影響我有多大,我可以製作我的遊戲地圖,因爲內存問題。它是否會減慢我的繪畫過程,通過數組迭代顯着的數量還是java遍歷每個像素以進行繪畫以繪製其形狀?幾何圖元的Java算法
1
A
回答
1
在速度方面,writeableraster可讓您對圖像進行快速更改。如果需要,您還可以使用諸如fork/join之類的工具加快速度。
在碰撞檢測方面,恐怕你不得不依靠自己的手卷數學函數。這裏是an example。
編輯:
我在做那樣的編碼,我發現,使用writeableraster的setPixels方法是很多不是依靠的paintComponent方法,如繪製形狀更快。如果您想更確定一些,可以編寫一些函數來重複10000次操作來測試每種方法,並查看哪種方法更快完成。
此外,除了多線程外,您還可以使用java的double buffering和BufferStrategy工具在需要之前準備後續柵格。通過這種方式,每一個連續的光柵在輪到它時就被簡單地「打開」,因爲它已經被預渲染在緩衝區中。
我希望這些額外的鏈接幫助。
相關問題
- 1. JAVA中的ESRI幾何壓縮算法
- 2. 幾何弧算法
- 3. 計算幾何設定點算法的
- 4. Java中的二元運算算法
- 5. Java中的熱圖算法
- 6. 好的Java圖算法庫?
- 7. 結合幾個圖像算法
- 8. 任何3D幾何算法庫在Java中?
- 9. 連接幾何線的算法
- 10. 幾何中值:Weiszfeld算法是否有Java實現?
- 11. Java圖形佈局算法
- 12. 在java中下拉列表中的幾天的可行算法
- 13. Java內部的幾何圖形
- 14. 計算法線幾何着色器
- 15. 歐幾里德算法(JS)
- 16. 歐幾里得算法
- 17. Java的算法
- 18. 計算幾何Javascript
- 19. 測量計算幾何算法的運行時間
- 20. 可以處理圓錐弧段的計算幾何算法
- 21. 用於圖論算法的Java庫
- 22. 用於比較圖算法的Java
- 23. Java計算器幾乎完成
- 24. Java pong遊戲圖形或幾何2D
- 25. Python中的歐幾里德算法/ GCD
- 26. GCD,歐幾里德的算法
- 27. 調整幾何圖形/幾何圖形
- 28. 如何計算Java PrefixAverages算法
- 29. 如何計算Java中某個日期的星期幾?
- 30. Java 3D幾何庫
好的,所以如果我使用fork和在繪畫過程中使用用於創建形狀的幾何算法連接,我可以足夠快地迭代以將受影響的像素添加到數組,同時將其繪製到屏幕上?在可寫入的光柵中使用setPixels方法的速度還不止是將受影響的像素存儲爲區域並將其繪製爲形狀? – StoneAgeCoder
@StoneAgeCoder +1繼續嘗試學習。我剛纔編輯了我原來的答案,以解決您的問題。這回答了你的問題了嗎? – CodeMed
感謝您的建議。我閱讀了兩篇文章,並測試了BufferedImage中的setPixels方法。不幸的是,當我使用可寫光柵的getData()方法時,它不能正確繪製,但是當我使用getAlphaRaster()時它工作得很好,但返回了我實際需要的灰度版本。在這之後,我只是嘗試了setRGB()方法,它看起來比使用paintComponent()方法逐個像素地填充一個矩形的速度快100倍。另外,爲了準備代碼形式的多個緩衝區,我真的需要什麼? – StoneAgeCoder