Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.11.2006, 14:11
vinni vinni вне форума
Начинающий
 
Регистрация: 26.01.2006
Сообщения: 135
Репутация: 10
По умолчанию Окружность

Привет. подскажыте плиз как нарисовать окружность на форме ПО ПИКСЕЛЯМ? Т.е. не стандартным Ellips'ом, а с помощью Form1.Canvas.Pixels[x,y]. Нужен сам алгоритм (курсовик такой). Заранее спасибо!
Ответить с цитированием
  #2  
Старый 16.11.2006, 15:31
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

по формуле окружности:
Y= -b±sqrt(sqr(R)-sqr(X-a))
где (a,b) центр окружности.
перевести это в паскалевский синтаксис и загнать в цикл думаю сам догадаешься игрека 2 штуки для кажд Х как видишь.
Ответить с цитированием
  #3  
Старый 16.11.2006, 15:56
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

http://www.delphisources.ru/forum/showthread.php?t=818
Ответить с цитированием
  #4  
Старый 16.11.2006, 15:59
vinni vinni вне форума
Начинающий
 
Регистрация: 26.01.2006
Сообщения: 135
Репутация: 10
По умолчанию

не совсем понятно.... почему стоит плюс/минус (какой знак использовать на этом месте) и с каким условием (или диапазон) должен быть цикл?
Ответить с цитированием
  #5  
Старый 16.11.2006, 16:47
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

//Должно работать

function TForm1.RotatePixel(x0,y0,x,y,alpha:real):Tpoint; //Поврот точки
var
Pix:TPoint;
R:real;
beta:real;
begin
R:=sqrt(sqr(x0-x)+sqr(y0-y)); //Находим радиус
beta:=ArcTan2((y0-y),(x0-x)); //Компинсирующий угол
alpha:=pi*alpha/180;
Pix.X:=Round(R*-cos(alpha-beta)+x0);
Pix.y:=Round(R*sin(alpha-beta)+y0);
result:=Pix;
end;

procedure TForm1.DrawCircle(x0,y0,R:real);
var
i:real;
pix:Tpoint;
begin
i:=0;
while i<3600 do begin
i:=i+0.1;
Pix:=rotatePixel(x0,y0,x0+R,y0,i);
form1.Canvas.Pixels[Round(Pix.X),Round(Pix.Y)]:=clblack;
end;
end;
Ответить с цитированием
  #6  
Старый 16.11.2006, 17:02
vinni vinni вне форума
Начинающий
 
Регистрация: 26.01.2006
Сообщения: 135
Репутация: 10
По умолчанию

Decoding и ART - спасибо большое!! оба варианта работают :-)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter