Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2014, 00:20   #11
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Вот код:

Код:
var angle: double;
    d,x,y, R: double;
    p,l, xc, yc: Integer;
begin
Form1.Canvas.MoveTo(50,200);
Form1.Canvas.LineTo(450,200);

Form1.Canvas.MoveTo(250,20);
Form1.Canvas.LineTo(250,370);

angle :=0;
while(angle<369)
do
  begin
    x :=300+ 50* Cos(angle);
    y :=200+ 50* Sin(angle);
    angle:=angle+0.5;
    p := Round(x);
    l := Round(y);
    Form1.Canvas.Pixels[p,l] := clRed;
  end;

  R := 50; // радиус окружности
  xc := 250; // координаты центра окружности
  yc := 200;

  // код проверки
// специально закрашиваем большую область чтобы видно что подходит под условия
 for p := 0 to 500 do
   for l := 0 to 500 do
   begin
     d := sqrt(sqr(p-R-xc) + sqr(l-yc));
     if (d < R) and (l-yc < 0) then  Form1.Canvas.Pixels[p,l] := clGreen;  // l-yc  меньше нуля потому что оси развернуты в делфи так
   end;
end;
Изображения
Тип файла: jpg Безымянный.jpg (12.7 Кб, 105 просмотров)
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 21.10.2014 в 00:28.
WorldMaster вне форума Ответить с цитированием
Старый 21.10.2014, 00:32   #12
Vadim7721
Пользователь
 
Аватар для Vadim7721
 
Регистрация: 30.09.2014
Сообщений: 27
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Вот код:

Код:
var angle: double;
    d,x,y, R: double;
    p,l, xc, yc: Integer;
begin
Form1.Canvas.MoveTo(50,200);
Form1.Canvas.LineTo(450,200);

Form1.Canvas.MoveTo(250,20);
Form1.Canvas.LineTo(250,370);

angle :=0;
while(angle<369)
do
  begin
    x :=300+ 50* Cos(angle);
    y :=200+ 50* Sin(angle);
    angle:=angle+0.5;
    p := Round(x);
    l := Round(y);
    Form1.Canvas.Pixels[p,l] := clRed;
  end;

  R := 50; // радиус окружности
  xc := 250; // координаты центра окружности
  yc := 200;

  // код проверки
 for p := 0 to 500 do
   for l := 0 to 500 do
   begin
     d := sqrt(sqr(p-R-xc) + sqr(l-yc));
     if (d < R) and (l-yc < 0) then  Form1.Canvas.Pixels[p,l] := clGreen;
   end;
end;
Спасибо большое, но прошу прощения, можно это сделать попроще, например вот так ?
[ CODE]
var
Angleouble;
d,x,y, R: double;
p,l, xc, yc: Integer;
Begin
Angle:=0;
While (angle <369) do
Begin
x :=300+ 50* Cos(angle);
y :=200+ 50* Sin(angle);
angle:=angle+0.5;
p := Round(x);
l := Round(y);
R := 50;
xc := 250;
yc := 200;
for p := 0 to 500 do
for l := 0 to 500 do
begin
d := sqrt(sqr(p-R-xc) + sqr(l-yc));
if (d < R) and (l-yc < 0) then
Writeln ( ' все попадает ');
End;
End;
End.
[/CODE]

Последний раз редактировалось Vadim7721; 21.10.2014 в 00:35.
Vadim7721 вне форума Ответить с цитированием
Старый 21.10.2014, 00:34   #13
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Цитата:
Ведь насколько я знаю, теорема Пифагора относится к прямоугольному треугольнику (гипотенуза)^2= (катет) ^2 + ( катет )^ 2
Простите за нескромный вопрос: "А сколько Вам лет?"
Если Вы удосужитесь нарисовать некоторую точку на Вашем рисунке и опустить из нее перпендикуляры на оси, а так же соедините точку с "центром полукруга", то увидите тот самый прямоугольный треугольник (и катеты, и гипотенузу - линию, которая соединяет точку с "центром полукруга").
А вот если Вы не поленитесь, и нарисуете много, ну очень много точек, которые попадают в круг, то с еще большей вероятностью поймете, при чем тут Пифагор.

PS: Под понятием "центр полукруга" следует понимать точку, которая была центром круга, частью которого является рассматриваемый полукруг.
Ну это так, ...


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 21.10.2014, 00:48   #14
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Да можно еще проще.

Код:
var 
d,x,y, R: double;
p,l, xc, yc: Integer;
Begin
R := 50;
   xc := 250;
   yc := 200;
  for p := 0 to 500 do
   for l := 0 to 500 do
   begin
     d := sqrt(sqr(p-R-xc) + sqr(l-yc));
     if (d < R) and (l-yc < 0) then
     Writeln ( ' все попадает ');
  End;
 End.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 21.10.2014, 00:56   #15
Vadim7721
Пользователь
 
Аватар для Vadim7721
 
Регистрация: 30.09.2014
Сообщений: 27
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Да можно еще проще.

Код:
var 
d,x,y, R: double;
p,l, xc, yc: Integer;
Begin
R := 50;
   xc := 250;
   yc := 200;
  for p := 0 to 500 do
   for l := 0 to 500 do
   begin
     d := sqrt(sqr(p-R-xc) + sqr(l-yc));
     if (d < R) and (l-yc < 0) then
     Writeln ( ' все попадает ');
  End;
 End.
Разве не надо readln (x,y); ?
Vadim7721 вне форума Ответить с цитированием
Старый 21.10.2014, 01:06   #16
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Ведь насколько я знаю, теорема Пифагора относится к прямоугольному треугольнику (гипотенуза)^2= (катет) ^2 + ( катет )^ 2
мы тута окадемиев не кончали, но высшее абразавание вам даду!
Изображения
Тип файла: jpg _screen.jpg (101.2 Кб, 98 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.10.2014, 09:30   #17
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Vadim7721 Посмотреть сообщение
Разве не надо readln (x,y); ?
Сами то хоть что нибудь сделайте. Вам итак основной алгоритм разжевали.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описание функции по рисунку X-REY Паскаль, Turbo Pascal, PascalABC.NET 0 20.11.2011 16:20
назначить рисунку собитые SkrudjMakdak JavaScript, Ajax 1 06.07.2011 00:00
Как прикрепить рисунок к рисунку GrEFon HTML и CSS 2 26.11.2007 17:21
Окно по рисунку Stanislav Общие вопросы Delphi 2 03.10.2007 14:18
окно по рисунку Roof Помощь студентам 7 16.07.2007 21:18