algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Kreślenie okręgów - Implementacja w C/C++
Ocena użytkownikóww: *****  / 5
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 29 marca 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Okrag - C++/Unit1.cpp:
//Tomasz Lubiński (C)2007 
//www.algorytm.org
//Algorytm kreslenia okregow z punktem srodkowym
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void CirclePoints(int x, int y, int x_move, int y_move)
{
        Form1->Image->Canvas->Pixels[x+x_move][y+y_move] = clBlack;
        Form1->Image->Canvas->Pixels[y+x_move][x+y_move] = clBlack;
        Form1->Image->Canvas->Pixels[y+x_move][-x+y_move] = clBlack;
        Form1->Image->Canvas->Pixels[x+x_move][-y+y_move] = clBlack;
        Form1->Image->Canvas->Pixels[-y+x_move][-x+y_move] = clBlack;
        Form1->Image->Canvas->Pixels[-x+x_move][-y+y_move] = clBlack;
        Form1->Image->Canvas->Pixels[-y+x_move][x+y_move] = clBlack;
        Form1->Image->Canvas->Pixels[-x+x_move][y+y_move] = clBlack;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int x, y;
int x_move, y_move, radius;
int d;
x_move = StrToInt(Edit1->Text);
y_move = StrToInt(Edit2->Text);
radius = StrToInt(Edit3->Text);
        x = 0;
        y = radius;
        d = 5 - 4*radius;
        CirclePoints(x, y, x_move, y_move);
        while(y > x){
                if(d < 0){                      /* Select E */
                        d += x*8 + 12;
                        x++;
                }else{                          /* Select SE */
                        d += (x - y)*8 + 20;
                        x++;
                        y--;
                }
        CirclePoints(x, y, x_move, y_move);
        }
}
//---------------------------------------------------------------------------
 
Dodaj komentarz