Тема: Як намалювати коло

Мені відома точка А(500,500), радіус кола 400, і градуси (цикл від 0 до 360) потрібно дізнатися точку Б(у = ?,х = ?). За якою формулою можна знайти Б(у=? ,х=?) ? Напишіть формулу.
Цикл буде змінювати градус від 0 до 360 і знову повертатися на 0, відрізок А,Б має стати подібним до годинникової стрілки тобто постійно рухатися.

2

Re: Як намалювати коло

Піфагор вам у поміч!

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»

3

Re: Як намалювати коло

0xDADA11C7 - двійка вам з математики, Піфагор тут не допоможе.
А допоможуть синус і косинус, гляньте визначення в підручнику.

4

Re: Як намалювати коло

Подякували: Betterthanyou, Arete2

5

Re: Як намалювати коло

Прихований текст

#include <GL\glut.h>
#include <math.h>

float x = 900, y = 500, t = 90;

void dis()
{
    if (t < 180)
    {
        x = 500 + 400 * cos(t);
        y = 500 + 400 * sin(t);
    }
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_LINES);
    glColor3f(0.2, 0.2, 1);
    glPushMatrix();
    glVertex2f(500, 500);
    glVertex2f(y, x);
    glPopMatrix();
    glEnd();
    t++;
    if (t == 360)
        t = 0;
    glutSwapBuffers();
}

void Anime(int)
{
    glutPostRedisplay();
    glutTimerFunc(1000, Anime, 0);
}

int main(int argcp, char **argv)
{
    glutInit(&argcp,argv);  //ініціалізації GLUT-машини.
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);  //mode - це режим стану екрана
    glutInitWindowPosition(200, 10);// x,y  = позиція вікна на екрані в пікселях 
    glutInitWindowSize(900, 900);// width,height  - ширина і висота вікна в пікселях
    glutCreateWindow("Анімація");
    glClearColor(1, 1, 1, 0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity(); // функція замінює поточну матрицю на одиничну матрицю.
    glOrtho(-1, 1000, -1, 1000, -100, 100);
    glutDisplayFunc(dis);
    glutTimerFunc(1000,Anime,0); //реєструє таймера зворотного виклику для спрацьовування в задану кількість мілісекунд
    glutMainLoop();
    return 0;
}

https://yadi.sk/d/QpEeEy26Y69ZL (можливо не запуститься це OpenGL програма)
Відрізок Б() рухається по колу але не плавно пригає

6 Востаннє редагувалося 0xDADA11C7 (28.07.2014 20:16:44)

Re: Як намалювати коло

koala
значить я не зміг правильно висловити свою думку, бо гадав, що сінуси і косінуси знаходяться поруч з Піфагором.

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»

7

Re: Як намалювати коло

Від Піфагора до синусів років так 1000 - синуси винайшов Аріабхата в Індії. Греки використовували певний аналог - хорди - але все одно на 300 років пізніше за Піфагора.

Подякували: 0xDADA11C71

8

Re: Як намалювати коло

Мені ще не вдалося зобразити годинникову стрілку тому що координати х та у ідуть не послідовно

Прихований текст

for (int i = 0; i < 360;i++)
    {
        x = (500 + 400 * sin(i));
        y = (500 + 400 * cos(i));
        glVertex2f(x, y);
        glVertex2f(500, 500);
    }

ось так вони йдуть

Прихований текст
500 900
836 716
863 333
556 104
197 238
116 613
388 884
762 801
895 441
664 135
282 164
100 501
285 837
668 862
896 554
760 196
384 116
115 389
199 764
559 895
865 663
834 280
496 100
161 286
137 669
447 896
805 758
882 383
608 114
234 200
104 561
338 865
720 833
899 494
711 160
328 138
103 448
242 806
618 882
885 606
798 233
436 105
133 340
167 722
507 899
840 710
860 327
549 103
192 243
118 620
395 885
768 796
894 434
658 132
276 168
100 508
291 841
674 859
897 547
754 191
378 119
113 396
204 769
566 894
868 656
830 275
489 100
157 292
140 676
454 897
809 753
880 376
601 113
229 205
105 568
344 868
726 829
899 487
705 156
322 141
102 455
248 810
625 879
887 599
793 227
429 106
130 346
171 727
514 899
844 704
857 320
542 102
188 249
120 626
401 887
773 792
893 427
651 129
270 172
100 515
297 844
680 856
897 540
749 187
371 121
111 403
209 774
573 893
870 650
826 269
482 100
154 298
144 682
461 898
813 747
878 369
594 111
224 210
107 575
351 871
732 825
899 480
699 153
316 144
101 462
253 815
631 877
889 592
788 222
422 107
127 353
175 733
521 899
847 697
854 314
535 101
183 254
122 633
408 889
778 787
892 420
645 127
264 176
100 523
303 848
687 853
898 533
743 182
364 123
110 410
214 779
580 891
873 643
822 263
475 100
150 305
147 688
468 898
818 742
875 363
587 109
219 215
108 582
358 873
737 821
899 473
693 149
309 148
101 469
259 819
638 875
890 586
783 217
415 108
125 359
179 739
528 898
851 691
851 308
528 101
179 260
125 640
415 891
783 782
890 413
638 124
259 180
101 530
309 851
693 850
899 526
737 178
358 126
108 417
219 784
587 890
875 636
818 257
468 101
147 311
150 694
475 899
822 736
873 356
580 108
214 220
110 589
364 876
743 817
898 466
687 146
303 151
100 477
264 823
645 872
892 579
778 212
408 110
122 366
183 745
535 898
854 685
847 302
521 100
175 266
127 646
422 892
788 777
889 407
631 122
253 184
101 537
316 855
699 846
899 519
732 174
351 128
107 424
224 789
594 888
878 630
813 252
461 101
143 317
154 701
482 899
826 730
870 349
573 106
209 225
111 596
371 878
749 812
897 459
680 143
297 155
100 484
270 827
651 870
893 572
773 207
401 112
120 373
188 750
542 897
857 679
844 295
514 100
171 272
130 653
429 893
793 772
887 400
625 120
248 189
102 544
322 858
705 843
899 512
726 170
344 131
105 431
229 794
601 886
880 623
809 246
454 102
140 323
157 707
489 899
830 724
868 343
566 105
204 230
113 603
378 880
754 808
897 452
674 140
291 158
100 491
276 831
658 867
894 565
768 203
395 114
118 379
192 756
549 896
860 672
840 289
507 100
167 277
133 660
436 894
798 766
885 393
618 117
242 193
103 551
328 861
711 839
899 505
720 166
338 134
104 438
234 799
608 885
882 616
805 241
447 103
137 330
161 713
496 899
834 719
865 336
559 104
199 235
115 610
384 883
760 803
896 445
668 137
285 162
100 498
282 835
664 864
895 558
762 198
388 115
116 386
197 761
556 895
863 666
836 283
499 100
163 283
136 666
443 895
802 761
883 386

я спробував відсортувати але теж нічого не вийшло (стрілка іде плавніше але змінює свій напрямок)

Прихований текст
234 200
229 205
224 210
219 215
214 220
209 225
204 230
199 235
192 243
242 193
197 238
248 189
183 254
253 184
188 249
259 180
179 260
264 176
175 266
270 172
171 272
276 168
167 277
282 164
163 283
285 162
161 286
291 158
157 292
297 155
154 298
303 151
150 305
309 148
147 311
143 317
316 144
140 323
322 141
328 138
137 330
338 134
133 340
344 131
130 346
351 128
127 353
125 359
358 126
364 123
122 366
371 121
120 373
118 379
378 119
384 116
116 386
388 115
115 389
113 396
395 114
401 112
111 403
408 110
110 410
415 108
108 417
422 107
107 424
429 106
105 431
436 105
104 438
447 103
103 448
454 102
102 455
461 101
101 462
468 101
101 469
475 100
100 477
482 100
100 484
489 100
100 491
496 100
100 498
499 100
100 501
507 100
100 508
514 100
100 515
521 100
100 523
528 101
101 530
535 101
101 537
542 102
102 544
549 103
103 551
556 104
559 104
104 561
566 105
105 568
573 106
107 575
580 108
108 582
587 109
110 589
594 111
111 596
601 113
113 603
608 114
115 610
116 613
618 117
118 620
625 120
120 626
631 122
122 633
638 124
125 640
645 127
127 646
651 129
130 653
658 132
133 660
664 135
136 666
668 137
137 669
674 140
140 676
680 143
144 682
687 146
147 688
693 149
150 694
699 153
154 701
705 156
157 707
711 160
161 713
720 166
167 722
726 170
171 727
732 174
175 733
737 178
179 739
743 182
183 745
749 187
188 750
754 191
192 756
760 196
197 761
762 198
199 764
768 203
204 769
773 207
209 774
778 212
214 779
783 217
219 784
788 222
224 789
793 227
229 794
798 233
234 799
805 241
242 806
809 246
248 810
813 252
253 815
818 257
259 819
822 263
264 823
826 269
270 827
830 275
276 831
834 280
282 835
836 283
285 837
840 289
291 841
844 295
297 844
847 302
303 848
851 308
309 851
854 314
316 855
857 320
322 858
860 327
328 861
863 333
865 336
338 865
868 343
344 868
870 349
351 871
873 356
358 873
875 363
364 876
878 369
371 878
880 376
378 880
882 383
384 883
883 386
388 884
885 393
395 885
887 400
401 887
889 407
408 889
890 413
415 891
892 420
422 892
893 427
429 893
894 434
436 894
895 441
443 895
896 445
447 896
897 452
454 897
897 459
461 898
898 466
468 898
899 473
475 899
899 480
482 899
899 487
489 899
899 494
496 899
500 900
899 505
507 899
899 512
514 899
899 519
521 899
899 526
528 898
898 533
535 898
897 540
542 897
897 547
549 896
896 554
556 895
895 558
559 895
894 565
566 894
893 572
573 893
892 579
580 891
890 586
587 890
889 592
594 888
887 599
601 886
885 606
608 885
882 616
618 882
880 623
625 879
878 630
631 877
875 636
638 875
873 643
645 872
870 650
651 870
868 656
658 867
865 663
664 864
863 666
668 862
860 672
674 859
680 856
857 679
854 685
687 853
851 691
693 850
847 697
699 846
844 704
705 843
840 710
711 839
836 716
720 833
834 719
830 724
726 829
826 730
732 825
737 821
822 736
818 742
743 817
813 747
749 812
754 808
809 753
805 758
760 803
802 761
762 801
798 766
768 796
793 772
788 777
773 792
783 782
778 787

я застосував формулу <x=r*sin(градус),y=r*cos(градус)> так як в мене вісь х і у від 0 до 1000 то я до х і у додавав 500 коло вийшло проблема в том що координати не послідовні тому анімація стрілки не вийшла тоді я вирішив відсортувати,сортував таким чином х додав у і сортував їхню суму.
Як можна зробити анімацію стрілки ?

Post's attachments

OpenGL.rar 141.95 kb, 124 downloads since 2014-07-29 

9

Re: Як намалювати коло

Betterthanyou написав:

sin(градус),

Всі стандартні функції обчислюють кути в радіанах, а не градусах.

Подякували: Betterthanyou1