Buenas tardes Colegas.
Hoy tengo un gran dolor de cabeza con respecto a un triangulo.
He tratado de hacerlo de mil maneras pero no lo logro conseguir.
Tengo este codigo
Código C++:
Ver original# include <conio.h>
# include <dos.h>
# include <stdlib.h>
void SetMCGA(void)
{ asm{
MOV AH,00H
MOV AL,13H
INT 10h
}}
void SetText(void)
{ asm{
MOV AX,0003H
INT 10h
}
}
void ActPunto(int x, int y,int c)
{ pokeb(0xA000,320*y+x ,c);
}
void SwapInt(int *a, int *b)
{ int aux;
aux=*a;
*a=*b;
*b=aux;
}
void Linea (int x0, int y0, int x1, int y1, char color)
{ int dx, dy, IncrS, IncrN, d, x, y, IncrX, IncrY;
{
if (x0 > x1)
{ SwapInt(&x0,&x1);
SwapInt(&y0,&y1);
};
IncrY = (y1 > y0) ? 1:-1;
dx=x1-x0;
d=2*dy-dx;
IncrS=2*dy;
IncrN=2*(dy-dx);
x=x0;
y=y0;
ActPunto(x,y,color);
for (;x < x1;)
{
if (d <= 0)
{
d+=IncrS;
x+=1;
}
else
{
d+=IncrN;
x+=1;
y+=IncrY;
};
ActPunto(x,y,color);
};
}
else
{if (y0 > y1);
{
SwapInt(&x1,&x0);
SwapInt(&y1,&y0);
}
IncrX = (x1 > x0) ? 1:-1;
dy=y1-y0;
d=2*dx-dy;
IncrS=2*dx;
IncrN=2*(dx-dy);
x=x0;
y=y0;
ActPunto(x,y,color);
while (y < y1)
{
if (d <= 0)
{
d+=IncrS;
y+=1;
}
else
{
d+=IncrN;
y+=1;
x+=IncrX;
};
ActPunto(x,y,color);
};
};
}
void triangulo(int x, int y, int x1, int y1, int x2, int y2, int c)
{
Linea(x,y,x1,y1,c);
Linea(x,y,x2,y2,c);
Linea(x2,y2,x1,y1,c);
}
union REGS i,o;
void show_mouse()
{ i.x.ax=1;
int86(0X33,&i,&o);
}
void hide_mouse()
{ i.x.ax=2;
int86(0X33,&i,&o);
}
void get_mouse_pos(int *x, int *y, int *button)
{ i.x.ax=3;
int86(0X33,&i,&o);
*x=o.x.cx;
*y=o.x.dx;
*button=o.x.bx,&i;
}
void main(void)
{ SetMCGA();
int button,x1,y1,x2,y2,cx=150,cy=150,cx1=100,cy1=100,cx2=200,cy2=100;
triangulo(cx,cy,cx1,cy1,cx2,cy2,7);
while(!kbhit())
{ show_mouse();
get_mouse_pos(&x1,&y1,&button);
x2=x1;
y2=y1;
while (button==1)
{ hide_mouse();
triangulo(cx,cy,cx1,cy1,cx2,cy2,0);
if ((cx==x1/2) && (cy==y1))
{ cx=x2/2;
cy=y2;
}
triangulo(cx,cy,cx1,cy1,cx2,cy2,7);
x1=x2;
y1=y2;
get_mouse_pos(&x2,&y2,&button);
}
}
SetText();
}
Yo lo que quiero es que pinte los angulos y las funciones trigonometricas