Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2013, 00:49   #1
Levons
Новичок
Джуниор
 
Регистрация: 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.
Levons вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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