Entrar
¿Usuario nuevo? Regístrate
war_3d · War 3D
? ¿Ya estás suscrito? Entrar en Yahoo!

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes buscar mensajes antiguos en un grupo.

Mensajes

  Mensajes Ayuda
Avanzado
War 3D Solo falta rellenar las circunferencias!!!   Lista de mensajes  
Responder | Reenviar Mensaje #435 de 894 |
espero que sea util
saludos a todos!!
atte rasrules



Jue, 4 de Sep, 2003 11:07 pm

rasrulesgl
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

// pruebabressenham.cpp : Defines the entry point for the console application.
#include "stdafx.h"
//#include "stdio.h"
#include "string.h"
#include "iostream.h"

char *mask;

void puntos_circulo(int x, int y, int valor,float radio)
{
//coordenada del centro
//(radio*2+1)*(radio+1-y) - ( (radio-x) )

//x,y
mask[int( (radio*2+1)*(radio+1-y) - (radio-x) )-1]=valor;
//y,x
mask[int( (radio*2+1)*(radio+1-x) - (radio-y) )-1]=valor;
//-x,y
mask[int( (radio*2+1)*(radio+1-y) - (radio+x) )-1]=valor;
//-y,x
mask[int( (radio*2+1)*(radio+1-x) - (radio+y) )-1]=valor;
//x,-y
mask[int( (radio*2+1)*(radio+1+y) - (radio-x) )-1]=valor;
//y,-x
mask[int( (radio*2+1)*(radio+1+x) - (radio-y) )-1]=valor;
//-x,-y
mask[int( (radio*2+1)*(radio+1+y) - (radio+x) )-1]=valor;
//-y,-x
mask[int( (radio*2+1)*(radio+1+x) - (radio+y) )-1]=valor;
}


void CircunferenciaBressenham(float radio)
{
//algoritmo de bressenham para circulos
int x,y,e;
x=radio;
y=0;
e=0;
while(y<x)
{
puntos_circulo(x,y,1,radio);
e = e+2*y+1;
y = y + 1;
if ((2*e)>(2*x-1))
{
x= x-1;
e=e-2*x+1;
}
}
}


void CircunferenciaPuntoMedio(float radio)
{
//algoritmo de punto medio para circulos
int x,y,d,delta_E, delta_SE;
x=0;
y=radio;
d=1-int(radio);
delta_E=3;
delta_SE=5-(int(radio)*2);
puntos_circulo(x,y,1,radio);
while (y > x)
{
if(d<0){
d+=delta_E;
delta_E +=2;
delta_SE+=2;
x++;
}else{
d+=delta_SE;
delta_E+=2;
delta_SE+=4;
x++;
y--;
}
}
puntos_circulo(x,y,1,radio);
}

void RellenarCircunferencia(float radio)
{
int i;
bool sw=false;
for (i=0 ; i <(radio*2+1)*(radio*2+1) ; i++)
{

mask[i] = '1';
}
}

void MascaraCircular (float radio, char *Mascara)
{//pre Radio > 0
//reservo espacio para la mascara
mask= new char[int((radio*2+1) * (radio*2+1))];
//inicializo en 0 la mascara
int i,j;
for (i=0 ; i <radio*2+1 ; i++)
{
for (j=0 ; j <radio*2+1 ; j++)
{
mask[int(j*(radio*2+1)+i)] = '0';
}
}

mask[int( (radio*2+1)*(radio+1-0) - (radio-0) )-1]=1;
// CircunferenciaPuntoMedio(radio);
CircunferenciaBressenham(radio);
memcpy(Mascara,mask,((radio*2+1)*(radio*2+1)));

}


int main(int argc, char* argv[])
{

char *Mayatona;

float L ;
cin>>L;

int i, j;

MascaraCircular (L, Mayatona);
// mask = new char [(L*2+1)*(L*2+1)];

for (i=0 ; i <L*2+1 ; i++)
{
for (j=0 ; j <L*2+1 ; j++)
{
if (Mayatona[int(j*(L*2+1)+i)] == 1)
{
printf ("XX");
}
else
{
printf ("__");
}
}
printf("\n");
}

//delete Mayatona;

return 0;
}




Reenviar Mensaje #435 de 894 |
Desplegar mensajes Autor Ordenar por fecha

espero que sea util saludos a todos!! atte rasrules // pruebabressenham.cpp : Defines the entry point for the console application. #include "stdafx.h" ...
raulaillon@...
rasrulesgl
Sin conexión Enviar mensaje
4 de Sep, 2003
11:07 pm
Avanzado

Copyright © 2009 Yahoo! Todos los derechos reservados.
Política de Privacidad Actualizada - Condiciones del servicio - Directrices - Ayuda