Воскресенье, 05.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: Seqular, Pavel  

Закон отражения
Olechka35Дата: Вторник, 28.12.2010, 03:43 | Сообщение # 16
Новичок
Группа: Пользователи
Сообщений: 5
Репутация: 0
Замечания: 0%
Статус: Offline
Спасибо! Я немножко поменяла алгоритм м все получилось, не мерцает!
 
SeqularДата: Вторник, 28.12.2010, 09:01 | Сообщение # 17
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Приведите Ваше решение! Вдруг кому-нибудь оно пригодится?

Поддерживаю также проект сообщество молодых сисадминов
 
Olechka35Дата: Вторник, 28.12.2010, 15:50 | Сообщение # 18
Новичок
Группа: Пользователи
Сообщений: 5
Репутация: 0
Замечания: 0%
Статус: Offline
Code
program shar2;
uses crt,graph;
const
    pole1x=30;
    pole1y=30;
    pole2x=600;
  pole2y=430;
  radiuslusa=20;
  radiusshar=10;
  alpha=40;
  zaderjkastenka=1.5;
  zaderjkashag=5;
var
  grDriver : integer;
  grMode   : integer;
  x1,y1,x2,y2:real;
  v0, alfa:real;
  x11,y11,x21,y21:integer;
  dt:real;
  zaderjka: integer;
  inlusa: boolean;
begin
  grDriver:= Detect;
  grMode:= 12;
  InitGraph( grDriver, grMode, 'c:\tp\bgi' );
  setcolor(green);
  ellipse(pole1x, pole1y, 0, 270, radiuslusa, radiuslusa);
  ellipse(pole1x, pole2y, 90, 0, radiuslusa, radiuslusa);
  ellipse(pole2x, pole1y, 270, 180, radiuslusa, radiuslusa);
  ellipse(pole2x, pole2y, 180, 90, radiuslusa, radiuslusa);
  line(pole1x+radiuslusa, pole1y, pole2x-radiuslusa, pole1y);
  line(pole1x+radiuslusa, pole2y, pole2x-radiuslusa, pole2y);
  line(pole1x, pole1y+radiuslusa, pole1x, pole2y-radiuslusa);
  line(pole2x, pole1y+radiuslusa, pole2x, pole2y-radiuslusa);
  x1:=300; y1:=200;
  dt:=1;
  v0:=1;
  alfa:=alpha;
  zaderjka:=500;
      while (not keypressed) and (inlusa=false) and (zaderjka<10000) do begin
   x2:=x1+v0*cos(alfa*pi/180)*dt;
         y2:=y1+v0*sin(alfa*pi/180)*dt;
          x21:=round(x2);  
   x11:=round(x1);
          y21:=round(y2);  
   y11:=round(y1);
   setcolor(0);
   circle(x11,y11, radiusshar);
   setcolor(4);
   circle(x21,y21, radiusshar);
   setcolor(green);
   line(pole1x+radiuslusa, pole1y, pole2x-radiuslusa, pole1y);
   line(pole1x+radiuslusa, pole2y, pole2x-radiuslusa, pole2y);
   line(pole1x, pole1y+radiuslusa, pole1x, pole2y-radiuslusa);
   line(pole2x, pole1y+radiuslusa, pole2x, pole2y-radiuslusa);

   if ((x2<=pole1x+radiuslusa-radiusshar) and (y2<=pole1y+radiuslusa-radiusshar)) then begin
    inlusa:=true;
    setcolor(0);
    circle(x21,y21, radiusshar);
    setcolor(4);
    circle(pole1x,pole1y, radiusshar);
   end;

   if ((x2>=pole2x-radiuslusa+radiusshar) and (y2<=pole1y+radiuslusa-radiusshar)) then begin
    inlusa:=true;
    setcolor(0);
    circle(x21,y21, radiusshar);
    setcolor(4);
    circle(pole2x,pole1y, radiusshar);
   end;

   if ((x2<=pole1x+radiuslusa-radiusshar) and (y2>=pole2y-radiuslusa+radiusshar)) then begin
    inlusa:=true;
    setcolor(0);
    circle(x21,y21, radiusshar);
    setcolor(4);
    circle(pole1x,pole2y, radiusshar);
   end;

   if ((x2>=pole2x-radiuslusa+radiusshar) and (y2>=pole2y-radiuslusa+radiusshar)) then begin
    inlusa:=true;
    setcolor(0);
    circle(x21,y21, radiusshar);
    setcolor(4);
    circle(pole2x,pole2y, radiusshar);
   end;

   if ((y2<pole1y+radiusshar+1) or (y2>pole2y-radiusshar-1)) then begin
    alfa:=360-alfa;
    zaderjka:=round(zaderjka*zaderjkastenka);
          end;
   if ((x2<pole1x+radiusshar+1) or (x2>pole2x-radiusshar-1)) then begin
          alfa:=360-alfa;
        v0:=-v0;
    zaderjka:=round(zaderjka*zaderjkastenka);
          end;

         x1:=x2;
         y1:=y2;
  delay(zaderjka);
  zaderjka:=zaderjka+zaderjkashag;
     end;
readln;
end.

Кривенько, конечно, но может и правда пригодится кому-то.

 
Valentin1981Дата: Пятница, 23.03.2012, 08:08 | Сообщение # 19
Новичок
Группа: Пользователи
Сообщений: 1
Репутация: 0
Замечания: 0%
Статус: Offline
Как можно верить в такие сказки? Всё у нас нахаляву, и это тоже. Если во всё верить, так ничего и не увидим.Прав Д. Соло "Разруха начинается с воровства, а воровство начинается с халявы". Вот и закон. Всё на этом построено. Нужно рациональное мышление
 
SeqularДата: Пятница, 23.03.2012, 08:15 | Сообщение # 20
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Valentin1981, Это к чему?

Поддерживаю также проект сообщество молодых сисадминов
 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;