我想知道是否可以仅使用Java2D在JPanel中创建像this这样的正弦光栅。
我不熟悉Swing和Java2D喷气式飞机,所以我可能会遇到一些简单的事情。如果事实上不可能这样做,有人可以提供一个简单的教程如何在JPanel中使用OpenGL和JOGL吗? 我知道Java2D和JOGL很好地协同工作但我真的不知道如何初始化东西以使OpenGL图形显示在我的普通GUI中。
答案 0 :(得分:0)
问题主要由trashgod回答。使用LinearGradientPaint,可以通过使用具有许多samplePoints的线性分级来创建真正的正弦波光栅。 下面是一个创建正弦波光栅的示例函数。
再次感谢您的帮助!
public LinearGradientPaint getSineWaveGrating(int numberCycles, int samplePoints, Point2D startP, Point2D endP, Color color) {
float[] fractions = new float[samplePoints+1];
Color[] colors = new Color[samplePoints+1];
for(int i=0;i<=samplePoints;i++) {
fractions[i] = i*(1/(float)samplePoints);
double cosArg = Math.PI+((i*numberCycles*2*Math.PI)/samplePoints);
double rectifiedCos = (Math.cos(cosArg)+1)/2;
colors[i] = new Color(color.getRed(),color.getGreen(),color.getBlue(),(int)(255*rectifiedCos));
}
return new LinearGradientPaint(startP, endP, fractions, colors);
}