⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sickdisplaypanel.java

📁 j2me实现的移动机器人代码(Java实现)
💻 JAVA
字号:
/*
 * Created on 2005-4-18
 */
package cie.mobile.sick;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;

/**
 * @author lxm
 */
public class SickDisplayPanel extends JPanel
{
    /**
     * Comment for <code>serialVersionUID</code>
     */
    private static final long serialVersionUID = 1L;
    private RangeData data = null;
    private int[] databuf;
    int maxR = 3000; //mm
    private boolean bDrawing = false;
    double startangle;
    int lastx=0, lasty=0;
    int dataLength;
    
    public SickDisplayPanel(int width, int height, int data_length)
    {
	databuf = new int[data_length];
        this.setPreferredSize(new Dimension(width, height));
    }
    
    /* (non-Javadoc)
     * @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
     */
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        int orginX = this.getWidth()/2;
        int orginY = this.getHeight()-5;
        g.setColor(Color.RED);
        g.fillOval(orginX, orginY, 10, 10);
        g.setColor(Color.BLACK);
        double lscale = (double) this.getHeight()/(double) maxR;
        double jscale = (Math.PI-2*startangle)/dataLength;
        int x, y;
        boolean b = true;
        boolean bconnect = false;
        lastx = orginX;
        lasty = orginY;
        for(int i=0; i<dataLength; i++)
        {
            b = true;
            if(databuf[i]>1000){
                b = false;
                bconnect = false;
            }
            x = (int) (orginX + databuf[i]*lscale*Math.cos(i*jscale+startangle));
            y = (int) (orginY - databuf[i]*lscale*Math.sin(i*jscale+startangle));
	    /*
            if(!bconnect && b){
                lastx = x;
                lasty = y;
                bconnect = true;
            }
            if(b)
            {
                g.drawLine(lastx, lasty, x, y);
            }
	    
            lastx = x;
            lasty = y;
	    */
	    g.drawLine(orginX, orginY, x, y);
        }
    }
    
    public void paintData(RangeData data)
    {
	    this.data = data;
	    startangle = data.getStartAngle()*Math.PI/180.0;
	    data.getData(databuf);
	    dataLength = data.getLength();
	    repaint();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -