我目前正在制作一个程序,它可以在质量弹簧移动时为其简单运动提供动画。除了绘制像春天之类的东西之外,我的所有工作都有所不同,我的程序目前使用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