/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template
 */
package primitivas;

import java.awt.Color;
import java.awt.Graphics;
import tiburcio.lib2D.s2D;

/**
 *
 * @author mario
 */
public class Primitivas extends s2D {

    /**
     * @param args the command line arguments
     */
    public Primitivas(){
      DEF_SISTEMA("Algoritmo DDA",600,600,Color.black);
    }
    
    public void paint(Graphics g){
      g.setColor(Color.green);  
      g.drawLine(100, 100, 400, 400);
      g.setColor(Color.blue);
      dibujaLinea(100,350,200,150,g);
      g.setColor(Color.magenta);
      for(int r=10;r<=200;r+=10){
          circulo(300,300,r,g);
      }
      circulo(300,300,100,g);
    }
    
    public void dibujaLinea(int x1, int y1, int x2, int y2,Graphics g){
      int dx=Math.abs(x2-x1);
      int dy=Math.abs(y2-y1);
      double dt;
      double x=x1,y=y1;
      int n;
       if (dx>=dy){
           dt = 1.0/dx;
           n = dx+1;
       }    
       else{
           dt = 1.0/dy;
           n = dy+1;
       }  
       
       int incx=(x1<=x2)?1:-1;
       int incy=(y1<=y2)?1:-1;
     
       for(int i=1;i<=n;i++){
           x+=dx*dt*incx;
           y+=dy*dt*incy;
           g.drawRect((int)(x+0.5),(int)(y+0.5),1,1);
       }
    }
    
    public void circulo(int xc,int yc, int radio,Graphics g){
           double inc=1.0/radio;
           for(double ang=0;ang<=Math.PI*2;ang+=inc){
               double x=radio*Math.cos(ang);
               double y=radio*Math.sin(ang);
               g.drawRect((int)(xc+x),(int)(yc-y),1,1);
           }
    }
    
    public static void main(String[] args) {
        // TODO code application logic here
        Primitivas p=new Primitivas();
    }
    
}
