所以我有一个任务,需要两个输入,男性和女性,并输出matingPairs,两者的产物。
除此之外,指令要求使用其中一个变量绘制形状。
我决定为每个值画圆圈。
我首先绘制交配台,然后是原始的较大的雄性和雌性圈,较大的交配台圈。
我遇到的问题显然是代表applet中的图形。如果数字高于100,则图形对于小程序来说太大了。
我正在寻找一种方法,基本上让交配的圆圈始终填充小程序,然后让雄性和雌性动态调整,使它们的大小相对于matingPairs圆形大小进行缩放。我正在使用JApplet。
非常感谢您提供任何指导。我真的在寻找一个解决方案,而不是朝着正确的方向发展。
答案 0 :(得分:1)
那么,您是否需要知道如何获得applets画布的大小或如何相应地缩放男/女圈?
编辑:
绘制圆圈以填充600x600区域应该很容易。请记住,在调用drawOval()/ fillOval()或类似方法时,您经常指定圆的左上角以及宽度和高度(即直径)。
接下来的问题是:什么代表输入(男性/女性)和输出(对)的大小,圆圈的面积或半径?无论是什么,都应该很容易计算输入/输出比率,然后将输出圆的固定大小乘以它,以获得输入圆的大小。
答案 1 :(得分:1)
您可能应该提供更多有关如何在Graphics
对象中绘制圆圈的说明
这个想法是管理两个不同尺度的二维空间;第一个是输入数据,第二个表示绘制此类数据的可用区域。第一个可以包含任何位置的数据,例如(5, 5)
,(0.2, 0.3)
或(1200, 3400)
。关键是使用适当的变换将第一个空间的原始坐标映射到第二个空间:scale + translation
必须在开始绘制之前计算此变换,并应用于绘制的任何点
我们的想法是将输入数据所在的矩形映射到图形中的可用区域。如果图形区域为200x200像素且数据可以从(0, 0)
到(400, 400)
,则只需将要绘制的点的坐标除以2即可。如果原始数据未以(0, 0)
为中心,请使用翻译。