![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 29.11.2013
Сообщений: 9
|
![]()
Очень нужна помощь
Задание: нарисовать секторную диаграмму, где значения x={11,12,23,40,50,60} Вот, то что я уже написала: int x=500, y=230, xp=500, yp=230; double d; ... case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: добавьте любой код отрисовки... //Ellipse(hdc,50,10,500,450); //center (275;230) d=(11*2*3.14)/196; x=int(xp*cos(d)+yp*sin(d)); y=int(-xp*sin(d)+yp*cos(d)); Pie(hdc,50,10,500,450,xp,yp,x,y); xp=x; yp=y; d=(12*2*3.14)/196; x=int(xp*cos(d)+yp*sin(d)); y=int(-xp*sin(d)+yp*cos(d)); Pie(hdc,50,10,500,450,xp,yp,x,y); xp=x; yp=y; d=(23*2*3.14)/196; x=int(xp*cos(d)+yp*sin(d)); y=int(-xp*sin(d)+yp*cos(d)); Pie(hdc,50,10,500,450,xp,yp,x,y); xp=x; yp=y; d=(40*2*3.14)/196; x=int(xp*cos(d)+yp*sin(d)); y=int(-xp*sin(d)+yp*cos(d)); Pie(hdc,50,10,500,450,xp,yp,x,y); xp=x; yp=y; d=(50*2*3.14)/196; x=int(xp*cos(d)+yp*sin(d)); y=int(-xp*sin(d)+yp*cos(d)); Pie(hdc,50,10,500,450,xp,yp,x,y); xp=x; yp=y; d=(60*2*3.14)/196; x=int(xp*cos(d)+yp*sin(d)); y=int(-xp*sin(d)+yp*cos(d)); Pie(hdc,50,10,500,450,xp,yp,x,y); xp=x; yp=y; EndPaint(hWnd, &ps); break; Вот, то что мне показывает программа: ![]() Ну, никак не могу понять как сделать повороты секторов. Если убрать везде xp=x; yp=y;, то прога рисует правильных размеров секторы в одном месте. А если не убирать, то у секторов какие-то странные размеры. |
![]() |
![]() |
![]() |
#2 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
![]() Код:
Код:
Если помог, проси поставить минус. Будь оригинален!
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 29.11.2013
Сообщений: 9
|
![]()
196 - это сумма элементов последовательности. Я хотела по пропорции перевести в радианы.
Но щас попробую 180 поставить, вдруг заработает) А зачем 30 градусов? Последний раз редактировалось Rolana; 29.11.2013 в 18:51. |
![]() |
![]() |
![]() |
#4 | |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
![]()
Вы же хотели повороты секторов. Вот, если к каждому прибавите 30 градусов, то каждый сектор повернется на 30 градусов. Если нужно повернуть на 45, то прибавляйте 45.
Мат. теория: Цитата:
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 29.11.2013 в 20:38. |
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 29.11.2013
Сообщений: 9
|
![]()
Вот у меня уже переделано под цикл и для общего случая.
Код:
angle1 - угол прибавления для поворота. Теперь пропорционально куски правильные по отношению друг к другу. Но их размеры почему-то явно не соответствую заданным углам (переменная angle). Убрала двойку в формуле вычисления угла. Секторы стали правильных размеров. Все, кроме последнего, рисуются правильно. Прям беда какая-то. Код:
За поворот угла ОГРОМНОЕ спасибо. Последний раз редактировалось Rolana; 29.11.2013 в 21:12. Причина: Отредактировала код) |
![]() |
![]() |
![]() |
#6 |
Регистрация: 29.11.2013
Сообщений: 9
|
![]()
Работает!!!
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Диаграмма | Falcao | Visual C++ | 1 | 04.06.2013 17:57 |
ER-диаграмма | Tanuush | Microsoft Office Access | 0 | 14.04.2013 18:47 |
Диаграмма | Azat_MAI | Компоненты Delphi | 4 | 05.04.2012 15:25 |
Диаграмма | Exo | Microsoft Office Excel | 19 | 22.08.2011 16:44 |
Диаграмма | guckaboss | Microsoft Office Access | 1 | 24.02.2011 19:11 |