欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

java实现计算机图形学中点画线算法

发布时间:2025/4/14 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java实现计算机图形学中点画线算法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

代码;DrawLine.java;

import javax.swing.*; import java.awt.*;public class DrawLine extends JPanel {public static void main(String[] args) {JFrame frame = new JFrame("Midpoint line drawing algorithm"); frame.getContentPane().add(new DrawLine()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(350, 350); frame.setVisible(true);}protected void paintComponent(Graphics g) {super.paintComponent(g);//g.drawLine(50, 50, 200, 250);//g.fillRect(80+7, 80+7, 8, 8);Point p1=new Point(0,0);Point p2=new Point(200,200);int x,y,xEnd;int a,b,p;if(p1.x>p2.x){x=p2.x;y=p2.y;xEnd = p1.x;}else{x=p1.x;y=p1.y;xEnd = p2.x;}a =p1.y-p2.y;b =p2.x-p1.x;p =2*a+b;//SetPixel(hdc, x,y,color);g.fillRect(x+7, y+7, 8, 8);while(x<xEnd){x++;if(p<0){y++;p+=2*(a+b);}elsep +=2*a;//SetPixel(hdc, x,y,color);g.fillRect(x+7, y+7, 8, 8);}}}class Point{int x;int y;Point(int x,int y){this.x=x;this.y=y;}int getX() {return x;}void setX(int x) {this.x = x;}int getY() {return y;}void setY(int y) {this.y = y;} }

这里需要自定义一个Point类,包含x、y成员;

使用 g.fillRect(x+7, y+7, 8, 8) 在坐标x、y画一个 8 像素大小的方块,代替设置一个像素点的颜色;fillRect,填充方块;

引入swing库,swing.*;

命令行构建并运行,结果如下;

    这是中点画线算法,一个点一个点出来的,不是用 drawLine 函数画的;

如果把算法中x++、y++修改;

    while(x<xEnd)
    {
        x=x+10;
        if(p<0)
        {
            y=y+10;
            p+=2*(a+b);
        }
        else
            p +=2*a;
        //SetPixel(hdc, x,y,color);
                g.fillRect(x+7, y+7, 8, 8);
    }

    改为每次增加10,因为方块是8个像素大小;则效果如下;

 

中点画线算法原理可参阅网上,或,

https://blog.csdn.net/qq_41883085/article/details/102730878

总结

以上是生活随笔为你收集整理的java实现计算机图形学中点画线算法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。