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