|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.06.2010, 19:00 | #1 |
Пользователь
Регистрация: 10.03.2010
Сообщений: 15
|
Компьютерная графика на С++
В обшем,надо написать программу на языке си и встроенном в него ассемблере.
Нарисовать параллелограмм с помощью функций ассемблера. Затем а) задать растяжение объекта попеременно по одной и другой диагонали, увеличив объект до размеров экрана б)задать вращение объекта вокруг оси у, приняв за точку вращения одну из вершин. |
05.06.2010, 20:22 | #2 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
халява ниже
|
05.06.2010, 22:05 | #3 |
Пользователь
Регистрация: 10.03.2010
Сообщений: 15
|
не понял вас
|
05.06.2010, 22:09 | #4 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
1. Читаем правила форума.
2. Если задаете вопрос(ы), то подразумеваться, что Вы уже имеете написанные код (его часть) / наработки. 3. За "спасибо" никто Вам не будет выполнять Ваше задание. |
05.06.2010, 22:14 | #5 |
Пользователь
Регистрация: 10.03.2010
Сообщений: 15
|
Есть две похожие программы,завтра скину коды. извините, я новичок!
|
06.06.2010, 11:47 | #6 |
Пользователь
Регистрация: 10.03.2010
Сообщений: 15
|
Нарисовать прямоугольный треугольник с прямым углом в верхнем правом углу. Реализовать вращение фигуры по спирали, а также реализовать приближение треугольника.
Решение: #include <iostream.h> #include <graphics.h> #include <conio.h> #include <math.h> #include <dos.h> void videobufer(void); void lines(int); void lines0(int); void line1(int,int,int,int,int,int); void line2(int,int,int,int,int); void line3(int,int,int,int,int,int); void line4(int,int,int,int,int); main() {int xp, xpp, xp1, yp1, xp2, yp2, xp3, yp3, xp4, yp4; int xb,yb,x250=350,y200=200; //координата int k=1,i,j,vr,m,r=190; clrscr(); videobufer(); m=3; for(vr=240;vr>=0;vr--) { xp1=x250+ceil(cos(vr*m*3.14/180)*r); yp1=y200-ceil(sin(vr*m*3.14/180)*r); xp2=x250+ceil(cos((vr+120)*m*3.14/180)*r); yp2=y200-ceil(sin((vr+120)*m*3.14/180)*r); xp3=x250+ceil(cos((vr+90)*m*3.14/180)*r); yp3=y200-ceil(sin((vr+90)*m*3.14/180)*r); xp4=x250+ceil(cos((vr+30)*m*3.14/180)*r); yp4=y200-ceil(sin((vr+30)*m*3.14/180)*r); xp4=x250+ceil(cos((vr-60)*m*3.14/180)*r/1.45); yp4=y200-ceil(sin((vr-60)*m*3.14/180)*r/1.45); xp4=x250+ceil(cos((vr+360)*m*3.14/180)*r/1.45); yp4=y200-ceil(sin((vr+360)*m*3.14/180)*r/1.45); //1 линия if (xp1>xp2) {if (yp1>yp2) line2(xp2,yp2,xp1,yp1,1); else { xp=x250-xp2; xp=x250+xp; xpp=xp1-x250; xpp=x250-xpp; line3(xp,yp2,xpp,yp1,1,x250);}} else {if (yp1>yp2) { xp=xp2-x250; xp=x250-xp; xpp=x250-xp1; xpp=x250+xpp; line1(xp,yp2,xpp,yp1,1,x250);} else line4(xp2,yp2,xp1,yp1,1);} //2 линия if (xp2>xp3) {if (yp2>yp3) line2(xp3,yp3,xp2,yp2,1); else { xp=x250-xp3; xp=x250+xp; xpp=xp2-x250; xpp=x250-xpp; line3(xp,yp3,xpp,yp2,1,x250);}} else {if (yp2>yp3) { xp=xp3-x250; xp=x250-xp; xpp=x250-xp2; xpp=x250+xpp; line1(xp,yp3,xpp,yp2,1,x250);} else line4(xp3,yp3,xp2,yp2,1);} //3 линия if (xp3>xp4) {if (yp3>yp4) line2(xp4,yp4,xp3,yp3,1); else { xp=x250-xp4; xp=x250+xp; xpp=xp3-x250; xpp=x250-xpp; line3(xp,yp4,xpp,yp3,1,x250);}} else {if (yp3>yp4) { xp=xp4-x250; xp=x250-xp; xpp=x250-xp3; xpp=x250+xpp; line1(xp,yp4,xpp,yp3,1,x250);} else line4(xp4,yp4,xp3,yp3,1);} //4 линия if (xp4>xp1) {if (yp4>yp1) line2(xp1,yp1,xp4,yp4,1); else { xp=x250-xp1; xp=x250+xp; xpp=xp4-x250; xpp=x250-xpp; line3(xp,yp1,xpp,yp4,1,x250);}} else {if (yp4>yp1) { xp=xp1-x250; xp=x250-xp; xpp=x250-xp4; xpp=x250+xpp; line1(xp,yp1,xpp,yp4,1,x250);} else line4(xp1,yp1,xp4,yp4,1);} delay(50); //1 линия if (xp1>xp2) {if (yp1>yp2) line2(xp2,yp2,xp1,yp1,0); else { xp=x250-xp2; xp=x250+xp; xpp=xp1-x250; xpp=x250-xpp; line3(xp,yp2,xpp,yp1,0,x250);}} else {if (yp1>yp2) { xp=xp2-x250; xp=x250-xp; xpp=x250-xp1; xpp=x250+xpp; line1(xp,yp2,xpp,yp1,0,x250);} else line4(xp2,yp2,xp1,yp1,0);} //2 линия if (xp2>xp3) {if (yp2>yp3) line2(xp3,yp3,xp2,yp2,0); else { xp=x250-xp3; xp=x250+xp; xpp=xp2-x250; xpp=x250-xpp; line3(xp,yp3,xpp,yp2,0,x250);}} else {if (yp2>yp3) { xp=xp3-x250; xp=x250-xp; xpp=x250-xp2; xpp=x250+xpp; line1(xp,yp3,xpp,yp2,0,x250);} else line4(xp3,yp3,xp2,yp2,0);} //3 линия if (xp3>xp4) {if (yp3>yp4) line2(xp4,yp4,xp3,yp3,0); else { xp=x250-xp4; xp=x250+xp; xpp=xp3-x250; xpp=x250-xpp; line3(xp,yp4,xpp,yp3,0,x250);}} |
06.06.2010, 11:48 | #7 |
Пользователь
Регистрация: 10.03.2010
Сообщений: 15
|
else {if (yp3>yp4)
{ xp=xp4-x250; xp=x250-xp; xpp=x250-xp3; xpp=x250+xpp; line1(xp,yp4,xpp,yp3,0,x250);} else line4(xp4,yp4,xp3,yp3,0);} //4 линия if (xp4>xp1) {if (yp4>yp1) line2(xp1,yp1,xp4,yp4,0); else { xp=x250-xp1; xp=x250+xp; xpp=xp4-x250; xpp=x250-xpp; line3(xp,yp1,xpp,yp4,0,x250);}} else {if (yp4>yp1) { xp=xp1-x250; xp=x250-xp; xpp=x250-xp4; xpp=x250+xpp; line1(xp,yp1,xpp,yp4,0,x250);} else line4(xp1,yp1,xp4,yp4,0);} if (vr>120 && k==1) r--;else k=2; if (vr<120 && k==2) r++; } getch(); return 0;} void line1(int x1, int y1, int x2, int y2, int c, int t) { int x, y, dx, dy, d, xb, i, xx; x=x1; y=y1; dx=x2-x1; dy=y2-y1; d=-dx; if (dx>dy) for(;x<=x2;x++) {xx=t-x; xx=t+xx; xb=ceil(xx/8); i=(y-1)*80+xb; if (c==1) lines(i); else lines0(i); d=d+2*dy; if (d>=0) {y++; d=d-2*dx;}} else for(;y<=y2;y++) {xx=t-x; xx=t+xx; xb=ceil(xx/8); i=(y-1)*80+xb; if (c==1) lines(i); else lines0(i); d=d-2*dx; if (d<=0) {x++; d=d+2*dy;}} } void line2(int x1, int y1, int x2, int y2, int c) { int x, y, dx, dy, d, xb, i; x=x1; y=y1; dx=x2-x1; dy=y2-y1; d=-dx; if (dx>dy) for(;x<=x2;x++) {xb=ceil(x/8); i=(y-1)*80+xb; if (c==1) lines(i); else lines0(i); d=d+2*dy; if (d>=0) {y++; d=d-2*dx;}} else for(;y<=y2;y++) {xb=ceil(x/8); i=(y-1)*80+xb; if (c==1) lines(i); else lines0(i); d=d-2*dx; if (d<=0) {x++; d=d+2*dy;}} } void line3(int x1, int y1, int x2, int y2, int c, int t) { int x, y, dx, dy, d, xb, i,xx; x=x2; y=y2; dx=x1-x2; dy=y1-y2; d=-dx; if (dx>dy) for(;x<=x1;x++) {xx=x-t; xx=t-xx; xb=ceil(xx/8); i=(y-1)*80+xb; if (c==1) lines(i); else lines0(i); d=d+2*dy; if (d>=0) {y++; d=d-2*dx;}} else for(;y<=y1;y++) {xx=x-t; xx=t-xx; xb=ceil(xx/8); i=(y-1)*80+xb; if (c==1) lines(i); else lines0(i); d=d-2*dx; if (d<=0) {x++; d=d+2*dy;}} } void line4(int x1, int y1, int x2, int y2, int c) { int x, y, dx, dy, d, xb, i; x=x2; y=y2; dx=x1-x2; dy=y1-y2; d=-dx; if (dx>dy) for(;x<=x1;x++) {xb=ceil(x/8); i=(y-1)*80+xb; if (c==1) lines(i); else lines0(i); d=d+2*dy; if (d>=0) {y++; d=d-2*dx;}} else for(;y<=y1;y++) {xb=ceil(x/8); i=(y-1)*80+xb; if (c==1) lines(i); else lines0(i); d=d-2*dx; if (d<=0) {x++; d=d+2*dy;}} } void lines(int t) { asm{ mov bx,t //вывод бита mov al,11111111b mov es:[bx],al } } void lines0(int t) { asm{ mov bx,t //вывод бита mov al,00000000b mov es:[bx],al } } void videobufer(void) { asm{ //установка режима mov ah,00h mov al,12h int 10h //регистр адреса mov dx,3ceh mov al,5 //регистр режима out dx,al //регистр данных mov dx,3cfh mov al,0 //режим записи out dx,al //смещение видеобуфера mov ax,0a000h mov es,ax //маска бита mov dx,3ceh mov al,8 out dx,al inc dx mov al,11111111b out dx,al //очистка регистра зашелки mov bx,0 mov al,0 mov es:[bx],al //установка регистра маски карты mov dx,3c4h mov al,2 out dx,al inc dx mov al,2 //color out dx,al } } |
06.06.2010, 11:49 | #8 |
Пользователь
Регистрация: 10.03.2010
Сообщений: 15
|
Реализовать падающее вращение буквы H
Исходный код #include<graphics.h> #include<conio.h> #include<dos.h> #include<stdlib.h> #include<math.h> struct point { float x,y,z; }; point br[30]; void main() { int dr=DETECT,mod,index; float y,z; float cs,sn; int xo=320,yo=100; float angle=0.1; initgraph(&dr,&mod,""); br[0].x=0; br[0].y=0; br[0].z=0; br[1].x=20; br[1].y=0; br[1].z=0; br[2].x=20; br[2].y=50; br[2].z=0; br[3].x=0; br[3].y=50; br[3].z=0; br[4].x=20; br[4].y=20; br[4].z=0; br[5].x=40; br[5].y=20; br[5].z=0 br[6].x=40; br[6].y=30; br[6].z=0; br[7].x=20; br[7].y=30; br[7].z=0; br[8].x=40; br[8].y=0; br[8].z=0; br[9].x=60; br[9].y=0; br[9].z=0; br[10].x=60; br[10].y=50; br[10].z=0; br[11].x=40; br[11].y=50; br[11].z=0; br[12].x=40; br[12].y=0; br[12].z=10; br[13].x=60; br[13].y=0; br[13].z=10; br[14].x=60; br[14].y=50; br[14].z=10; br[15].x=40; br[15].y=50; br[15].z=10; br[16].x=20; br[16].y=20; br[16].z=10; br[17].x=40; br[17].y=20; br[17].z=10; br[18].x=40; br[18].y=30; br[18].z=10; br[19].x=20; br[19].y=30; br[19].z=10; br[20].x=0; br[20].y=0; br[20].z=10; br[21].x=20; br[21].y=0; br[21].z=10; br[22].x=20; br[22].y=50; br[22].z=10; br[23].x=0; br[23].y=50; br[23].z=10; cs=cos(angle); sn=sin(angle); while(!kbhit()) { setcolor(0); moveto(xo+br[0].x,yo+br[0].y); for(index=0;index<4;index++) { lineto(xo+br[index].x,yo+br[index].y); } lineto(xo+br[0].x,yo+br[0].y); moveto(xo+br[4].x,yo+br[4].y); for(index=4;index<8;index++) { // moveto(xo+br[5].x,yo+br[5].y); lineto(xo+br[index].x,yo+br[index].y); } moveto(xo+br[8].x,yo+br[8].y); for(index=8;index<12;index++) { lineto(xo+br[index].x,yo+br[index].y); } lineto(xo+br[8].x,yo+br[8].y); moveto(xo+br[12].x,yo+br[12].y); for(index=12;index<16;index++) { lineto(xo+br[index].x,yo+br[index].y); } lineto(xo+br[12].x,yo+br[12].y); moveto(xo+br[16].x,yo+br[16].y); for(index=16;index<20;index++) { // moveto(xo+br[5].x,yo+br[5].y); lineto(xo+br[index].x,yo+br[index].y); } moveto(xo+br[20].x,yo+br[20].y); for(index=20;index<24;index++) { lineto(xo+br[index].x,yo+br[index].y); } lineto(xo+br[20].x,yo+br[20].y); moveto(xo+br[0].x,yo+br[0].y); lineto(xo+br[20].x,yo+br[20].y); moveto(xo+br[1].x,yo+br[1].y); lineto(xo+br[21].x,yo+br[21].y); moveto(xo+br[2].x,yo+br[2].y); lineto(xo+br[22].x,yo+br[22].y); moveto(xo+br[3].x,yo+br[3].y); lineto(xo+br[23].x,yo+br[23].y); //---------------- moveto(xo+br[8].x,yo+br[8].y); lineto(xo+br[12].x,yo+br[12].y); moveto(xo+br[9].x,yo+br[9].y); lineto(xo+br[13].x,yo+br[13].y); moveto(xo+br[10].x,yo+br[10].y); lineto(xo+br[14].x,yo+br[14].y); moveto(xo+br[11].x,yo+br[11].y); lineto(xo+br[15].x,yo+br[15].y); for(index=0;index<25;index++) { y=br[index].y*cs+br[index].z*sn; z=-br[index].y*sn+br[index].z*cs; br[index].y=y; br[index].z=z; } // setcolor(14); delay(50); clrscr(); yo++; } } |
06.06.2010, 11:50 | #9 |
Пользователь
Регистрация: 10.03.2010
Сообщений: 15
|
вот два примера. надо сделать по их подобию. помогите,пожалуйста!
|
06.06.2010, 12:04 | #10 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
оберните этот УЖАС в тег CODE, хотя врятли кто-то будет здесь в этом разбираться. Советую обратиться в фриланс. Ужасный стиль
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Компьютерная графика в паскале | Kravec | Паскаль, Turbo Pascal, PascalABC.NET | 35 | 03.04.2015 15:36 |
Компьютерная графика на C# | Mclaren | Софт | 0 | 02.06.2010 23:57 |
Компьютерная графика на Pascal | Foxtrot_1 | Помощь студентам | 10 | 31.05.2010 18:22 |
компьютерная графика | Черная тень | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 11.01.2009 07:29 |