Консультация № 108759
10.11.2007, 00:55
0.00 руб.
0 1 1
Добрый вечер всем экспертам!!!
Препод задал следующую задачку. Хотя я и не учусь на программиста но он сказал ответишь поставлю.
Нужно написать программу, которая рисует линию по алгоритму ЦДА(в графическом режиме С++).

Обсуждение

Неизвестный
10.11.2007, 01:02
общий
это ответ
Здравствуйте, AZER!

Было уже что подобное...только помоему по алгоритму Бразенхема...С ЦДА они очень похожи...
Теория - http://ermak.cs.nstu.ru/kg_rivs/graf03.htm
Практика - См. приложение. Там даже с осями нарисаванными...

Приложение:
#include <stdio.h>#include <conio.h>#include <graphics.h>main (){int gdriver=DETECT,gmode,errorcode,y1=190,x2=60,y2=70,c;float p,px,py;float x1=160.0;initgraph(&gdriver, &gmode,"");errorcode=graphresult();if (errorcode !=grOk){printf ("Graphics error");}setbkcolor(15);setcolor(5);settextstyle(GOTHIC_FONT,HORIZ_DIR,2);outtextxy (150,10,"Laboratornaya rabota N 3");outtextxy (150,30,"Gal‘cov Andrey");if (x1>x2 && y1>y2) {c=x1; x1=x2; x2=c;c=y1; y1=y2; y2=c; }px=x2-x1;py=y2-y1;putpixel(x1*2,y1*2,1);p=px/py;while(x1<x2) { x1+=p; y1++;putpixel(x1*2,y1*2,1); }outtextxy (120,100,"otrezok (60-70)-(160,190) po algoritmu CDA. Turbo C");setcolor(8);line(60*2,70*2,160*2,190*2);/*line(50,55,50,210);line(50,210,180,210);line(50,55,45,60);line(50,55,55,60);line(47,190,53,190);line(180,210,175,205);line(180,210,175,215);line(47,70,53,70);line(160,207,160,213);line(60,207,60,213);setcolor(4);outtextxy(37,55,"y");outtextxy(185,210,"x");settextstyle(GOTHIC_FONT,HORIZ_DIR,1);outtextxy(25,195,"190");outtextxy(32,73,"90");outtextxy(60,215,"60");outtextxy(150,217,"160");*/}
Форма ответа