我目前正在製作一個程序,它可以在質量彈簧移動時爲其簡單運動提供動畫。除了繪製像春天之類的東西之外,我的所有工作都有所不同,我的程序目前使用graphics.drawline方法繪製一條直線來表示彈簧。我最好想要像this這樣的東西,但是我對圖形並不是很有經驗,也不知道如何去接近它,我試圖自己制定一個算法,但它一直在崩潰。有誰知道任何現有的算法,我可以在這裏使用?如果春天的伸展看起來逼真,那也會很棒(如果可能的話)。在java中繪製鋸齒形(彈簧)
這裏是我當前的代碼:
g.fillRect(width/10 - 2, height/2 - 10, 4, 20);
g.fillRect(9*width/10 - 2, height/2 - 10, 4, 20);
g.drawLine(width/10, height/2, (int) (width/2 - (sCoefficientH * s)), height/2);
g.fillOval((int) (width/2 - (sCoefficientH * s)) -5, height/2 - 5, 10, 10);
正如你可以看到有連接的牆(小矩形)的橢圓形(代表彈簧上的質量)的線路。如果我可以在這個類中添加一個新的方法,該方法需要2個座標和一個寬鬆的大小(它看起來不會壓縮),並返回圖形對象(注意我沒有使用Graphics2D)正確的地方,那麼我認爲它會看起來好多了。 This就是它現在的樣子。
我會一展身手。你想要它是垂直還是水平?你想能夠指定線圈的數量或尺寸(寬度等)? – 2016-03-03 16:49:42
@willywonka_dailyblah非常感謝你!我的模擬可以是任何方向。用戶給出的輸入是彈簧的自然長度和原始延伸,所以也許自然長度越長,線圈的數量越大。我的代碼中的'sCoefficientH'就是這樣,無論輸入的長度如何,彈簧的末端總是會穿過相同的區域,所以如果長度不同的線圈數量不同,那麼這將非常酷。你在想什麼樣的算法?劃線的組合? – Loua
我會嘗試做一個_general_彈簧類型,你只需要指定彈簧的端點,並且它會相應地旋轉彈簧。我可以讓你指定線圈的寬度和數量。順便說一句,我不明白你的'sCoefficientH' - 你的意思是一種泊松因子? – 2016-03-03 17:02:12