|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.06.2013, 00:49 | #1 |
Новичок
Джуниор
Регистрация: 25.05.2013
Сообщений: 2
|
C++ Афинные Преобразования на плоскости С ГРАФИКОЙ
суть проблемы: одна из нужных в проге аффинных преобразований это поворот,но я никак его сделать не могу,так как нужный угол 135 по часовой стрелке,и в радианах это около 2.3562 а это дробное значение,которое чертов int не воспринимает дроби.
в программе T[3][3]={{-1,0,0},{0,-1,0},{0,0,1}} отвечает за поворот можете подсказать как повернуть на 135 градусов? ВОТ МОЕ ЗАДАНИЕ К КУРСОВОЙ Расположить фигуру так чтобы вершина В была в начале координат, а прямая ED была расположена в 1 и 2 четвертях симметрично оси ОY. http://www.fotolink.su/v.php?id=fbf1...660e3326115a61 или может я что-то не так сделал? мои данные для ввода (не обращайте внимание на арабскую хрень после //) 0 2 1 3 5 1 3 3 1 5 3 1 2 0 1 #include<stdio.h> #include<math.h> #include<conio.h> #include<graphics.h> int mnozh(int W[5][3],int A[5][3],int M[3][3]) // w-íóæåí ÷òîáû óáíîæàòü ìàòðèöû w-ðåçóëüòàò,a óìíîæàåòñÿ íà Ì { int i,j,k; for (i=0;i<=4;i++) // îòêðûòèå öûêëà äëÿ óìíîæåíèÿ { for(j=0;j<=2;j++) //òàê çàäàåòñÿ ìàñèâ { W[i][j]=0; // W -ìàòðèöà for (k=0;k<=2;k++) // öûêë óìíîæåíèÿ íà ê W[i][j]=W[i][j]+A[i][k]*M[k][j]; //ïðî÷èòàòü êàê óìíîæàþòñÿ ìàòðèöû } } for(i=0;i<=4;i++)// âûâîä ìàòðèöû { for(j=0;j<=2;j++) printf("%d ",W[i][j]); printf("\n"); } } void kord(int x,int y)// ââîä êîîðäèíàòíûõ îñåé { line(x,y,x,y+400); line(x-200,y+200,x+200,y+200); line(x,y,x+3,y+4); line(x,y,x-3,y+4); line(x+200,y+200,x+196,y+197); line(x+200,y+200,x+196,y+203); outtextxy(x+200,y+206,"X"); outtextxy(x+6,y,"Y"); outtextxy(x-9,y+201,"0"); }//êîîðäèíàòíûå îñè ñäåëàíû void ris(int x,int y, int A[5][3]) { moveto(x+A[0][0],y-A[0][1]);// çàäàåòñÿ íà÷àëüíàÿ òî÷êà lineto(x+A[1][0],y-A[1][1]); // ëèííèè îò ýòîé òî÷êè x+A ñäâèã íà A [1][0] âòîðàÿ ñòðîêà 0 ñòîëáåö lineto(x+A[2][0],y-A[2][1]); lineto(x+A[3][0],y-A[3][1]); lineto(x+A[4][0],y-A[4][1]); lineto(x+A[0][0],y-A[0][1]); line(x+A[0][0],y-2,x+A[0][0],y+2); outtextxy(x+A[0][0]-3,y+3,"2"); line(x+A[1][0],y-2,x+A[1][0],y+2); outtextxy(x+A[1][0]-3,y+3,"6"); line(x+A[2][0],y-2,x+A[2][0],y+2); outtextxy(x+A[2][0]-3,y+3,"4"); line(x-2,y-A[3][1],x+2,y-A[3][1]); line(x-2,y-A[0][1],x+2,y-A[0][1]); } int main() { int i,j,k; int A[5][3],B[5][3],C[5][3],M[3][3]={{1,0,0},{0,1,0},{-3,-3,1}},T[3][3]={{-1,0,0},{0,-1,0},{0,0,1}};// Ò ýòî ìàòðèöà ïàðàâîðòà!!!! printf("Vvod A:\n"); for (i=0;i<=4;i++) { for(j=0;j<=2;j++) { scanf("%d",&A[i][j]); } } printf("Result C:\n"); mnozh(C,A,M); printf("Result B:\n"); mnozh(B,C,T); for (i=0;i<=4;i++)//íà÷èíàåòñÿ ãðàôèêè { for(j=0;j<=2;j++) //öèêë óìíîæåíèÿ íà 20 { A[i][j]=20*A[i][j];// óâåëè÷èâàåì â 20 ðàç èç-çà òîãî ÷òî ïèêñåëè ìàëåíêèå C[i][j]=20*C[i][j]; B[i][j]=20*B[i][j]; } } initwindow ( 1000, 1000 ); line(500,0,500,1000);//äåëèò íà 4 ÷àñòè ýêðàí line(0,500,1000,500); //osi koordinat kord(250,50);//ô-öûÿ ðèñóåò êîîðäèíàòû kord(750,50); kord(250,550); ris(250,250,A); ris(750,250,C); ris(250,750,B); //koordinaty i tochki ris 1 outtextxy(250+A[0][0]+10,250-A[0][1]+3,"A"); outtextxy(250+A[1][0]+3,250-A[1][1]+3,"B"); outtextxy(250+A[2][0]-5,250-A[2][1]+5,"C"); outtextxy(250+A[3][0]+20,250-A[3][1]+5,"D"); outtextxy(235,250-A[0][1]-8,"-4"); outtextxy(235,250-A[3][1]-2,"-1"); setcolor (10); //kordinaty i tochki ris 2 outtextxy(750+C[0][0]-4,250-C[0][1]-17,"A"); outtextxy(750+C[1][0]-4,250-C[1][1]-17,"B"); outtextxy(750+C[3][0]+12,250-C[3][1]-17,"D"); outtextxy(750+C[2][0]-10,250-C[2][1]-17,"C"); outtextxy(739,250-C[3][1]-8,"1"); outtextxy(739,250-C[0][1]-8,"4"); //kordinaty i tochki ris 3 outtextxy(250+B[0][0]-4,750-B[0][1]-17,"A"); outtextxy(250+B[1][0]-4,750-B[1][1]-17,"B"); outtextxy(250+B[3][0]+12,750-B[3][1]-17,"D"); outtextxy(250+B[2][0]-10,750-B[2][1]-17,"C"); outtextxy(239,750-B[0][1]-8,"3"); getch(); closegraph(); return 1; } Последний раз редактировалось Levons; 03.06.2013 в 01:03. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++ Афинные Преобразования на плоскости С ГРАФИКОЙ | Levons | Помощь студентам | 0 | 25.05.2013 19:57 |
2D Афинные преобразования. | Alek-de-Mik | C# (си шарп) | 1 | 08.09.2012 19:21 |
Графические преобразования(Афинные, Проэкционные, Эвклидовые) | Rio309 | Помощь студентам | 1 | 03.10.2009 20:03 |
геомГетрические преобразования на плоскости | netbioz | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 02.06.2009 01:50 |
геометрические преобразования на плоскости(Графика в Паскале) | netbioz | Помощь студентам | 3 | 30.05.2009 14:59 |