Java 如何从这个代码中得到整个多边形的颜色?
下面是计算机图形学概念的代码扫描线算法,但另一个平面不是多边形而是有颜色的,我如何修复它Java 如何从这个代码中得到整个多边形的颜色?,java,algorithm,graphics,variable-assignment,scanline,Java,Algorithm,Graphics,Variable Assignment,Scanline,下面是计算机图形学概念的代码扫描线算法,但另一个平面不是多边形而是有颜色的,我如何修复它 import javax.swing.*; import java.awt.*; public class CG4 extends JFrame { int m1 = -1,m2 = 0,m3 = 2; int ymax=400,ymin=100; int ytemp=ymin+1; public void Call(){ CG4 cg4 = new C
import javax.swing.*;
import java.awt.*;
public class CG4 extends JFrame {
int m1 = -1,m2 = 0,m3 = 2;
int ymax=400,ymin=100;
int ytemp=ymin+1;
public void Call(){
CG4 cg4 = new CG4();
cg4.setTitle("ScanLine");
cg4.setSize(1000,1200);
cg4.setVisible(true);
cg4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void paint(Graphics g){
Calculate(g);
}
public void Calculate(Graphics g){
g.drawLine(250,100,200,200);
g.drawLine(200,200,200,300);
g.drawLine(200,300,250,400);
g.drawLine(250,400,300,300);
g.drawLine(300,300,300,200);
g.drawLine(300,200,250,100);
while(ytemp<ymax){
int x1,x2;
x1=(ytemp-400)/m1;
x2=(ytemp+600)/m3;
g.setColor(Color.green);
g.drawLine(x1+1, ytemp, x2-1, ytemp);
ytemp++;
try{
Thread.sleep(10);
}
catch(InterruptedException ex){
Thread.currentThread().interrupt();
}
}
}
}
import javax.swing.*;
导入java.awt.*;
公共类CG4扩展了JFrame{
int m1=-1,m2=0,m3=2;
int-ymax=400,ymin=100;
int ytemp=ymin+1;
公开作废通知(){
CG4 CG4=新的CG4();
cg4.设置标题(“扫描线”);
cg4.设置大小(10001200);
cg4.setVisible(真);
cg4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@凌驾
公共空间涂料(图g){
计算(g);
}
公共空间计算(图g){
g、 抽绳(250100200200);
g、 抽绳(200300);
g、 抽绳(200300250400);
g、 抽绳(250400300300);
g、 抽绳(300200);
g、 抽绳(300200250100);
虽然(您正在自己内部创建一个CG4
(public void Call…CG4=new CG4…
)-不确定,但这很可疑(我不完全理解您的问题)@CarlosHeuberger我从另一个主类调用这个函数,这段代码在三角形的情况下成功执行,我认为问题出在calculate()的while循环中,但我不能理解这一点。但代码中只有一个循环(某种)在两条边界线之间画线(在数学意义上),不,它在哪里使用多边形的坐标-这不起作用。它需要根据Y(范围100-200、200-300、300-400)使用不同的线段。您还应该知道,绘制可以多次调用,在其中使用睡眠
不是一个好主意((假设您不想使用填充(形状))
和绘制(形状)
填充和绘制多边形的方法(
)我没有看到任何与填充三角形/凸多边形(扫描线算法)稍有相似的东西…对于初学者,您应该将其封装到一些函数中,并使用点将形状定义为参数…我只看到硬编码线…然后制作功能…因此,首先让左/右缓冲区为其提供数据并进行渲染以进行调试,并且只需一次工作,就可以用扫描线填充内部…请看您是crea在CG4内部设置一个CG4
(public void Call…CG4=new CG4…
)-不确定,但这很可疑(我不完全理解您的问题)@CarlosHeuberger我正在从另一个主类调用该函数,在三角形的情况下,该代码成功执行,我认为问题在calculate()的while循环中但是我不能理解这一点。但是代码中只有一个循环(某种)在两条边界线之间画线(在数学意义上),没有使用多边形坐标的地方-这不可行。它需要不同的线段,取决于Y(范围100-200,200-300,300-400)另外,您还应该注意,paint
可以多次调用,在其中使用sleep
不是一个好主意((假设您不想使用填充(形状)
和绘制(形状)
方法来填充和绘制多边形
)我看不到任何与填充三角形/凸多边形(您的扫描线算法)稍有相似的东西…对于初学者,您应该将其封装到某个函数中,并使用点将形状定义为参数…我只看到硬编码线…然后制作功能…因此,首先让左/右缓冲区为其馈电并进行渲染以进行调试,并且只有一次工作时,应使用扫描线填充内部…请参阅