Informatika va grafika
331 subscribers
324 photos
761 videos
689 files
210 links
Dasturlash: c++, java, delphi, javascript, VBA, vb#,c#
Grafika: 3ds max, flash8, Swishmax, coreldraw, photoshop.
Informatika: grafik ob ‘ektlarni yaratish Pascal tilini o‘rganish, Excelda formalar yaratish, HTML, CSS bilan tanishish Admin @Algoritmchi
Download Telegram
Pascal ABC NET dasturida 3D grafikada animatsiya. uses Graph3D;
function ParametricTrajectory(a,b: real; N: integer; fun: real->Point3D) := PartitionPoints(a,b,N).Select(fun);

begin
var tr := ParametricTrajectory(0,2*Pi,100,t->P3D(8*cos(t),4*sin(t),0));
Polyline3D(tr);
var b := Sphere(tr.First,1,Colors.Blue);
b.AnimMoveTrajectory(tr.Skip(1),5).Forever.Begin;
end.
//Pascal ABCNET dasturida Kubik-Rubik dasturi.
uses Graph3D;

var InnerColor := RGB(70,70,70);
var sec := 0.5;

var g := new Object3D[3,3,3];

procedure CreateCube;
begin
var a := 1.03;

for var x := 0 to 2 do
for var y := 0 to 2 do
for var z := 0 to 2 do
if (x,y,z) <> (1,1,1) then
begin
var b := Box(0+x*a-a,0+y*a-a,-0.5+z*a-a,1,1,0.01,z=0 ? Colors.White : InnerColor);
var b3 := Box(0+x*a-a,0+y*a-a,0.5+z*a-a,1,1,0.01,z=2 ? Colors.Yellow : InnerColor);

var b1 := Box(0.5+x*a-a,0+y*a-a,0+z*a-a,0.01,1,1,x=2 ? Colors.Red : InnerColor);
var b4 := Box(-0.5+x*a-a,0+y*a-a,0+z*a-a,0.01,1,1,x=0 ? Colors.Orange : InnerColor);

var b2 := Box(0+x*a-a,0.5+y*a-a,0+z*a-a,1,0.01,1,y=2 ? Colors.Green : InnerColor);
var b5 := Box(0+x*a-a,-0.5+y*a-a,0+z*a-a,1,0.01,1,y=0 ? Colors.Blue : InnerColor);

g[x,y,z] := Group(b,b1,b2,b3,b4,b5);
end;
end.
uses Graph3D;
begin
Window.Title := '3D-примитивы';
var rr := Rectangle3D(-3.5,-2,0,3,2,Colors.MediumPurple);
rr.Rotate(v3d(0,1,0),30);
var стрелки := CoordinateSystem(2);
var Ar := Arrow(3,0,0,0,0,2,Colors.Tan);
var p := P3D(5,-5,0);
var t := TruncatedCone(p,2,0.9,0.7,False,Colors.Red);
p := p.MoveX(-2);
TruncatedCone(p,2,0.9,0.7,Colors.BlueViolet);
p := p.MoveX(-2);
Cylinder(p,2,0.9,False,Colors.Crimson);
p := p.MoveX(-2);
var cc := Cylinder(p,2,0.9,Colors.Chocolate);
p := p.MoveX(-2);
var конус := Cone(p,2.5,0.9,Colors.DarkGreen);
p := p.MoveX(-2);
var c := Sphere(p.MoveZ(0.7),1,Colors.Crimson);
Text3D(p.MoveZ(2.3),'Сфера',0.7);
p := P3D(5,-2,0);
var чайник := Teapot(p.MoveZ(0.9),Colors.ForestGreen);
//чайник.Rotate(V3D(0,1,0),45);
var bb := BillboardText(p.Move(2,0,0.7),'Billboard'+NewLine + '"Чайник"',12);
p := p.MoveX(-2.75);
var cb := Cube(p.MoveZ(0.75),1.5,Colors.DodgerBlue);
cb.Scale(1.2);
cb.Rotate(V3D(0,0,1),45);
p := p.MoveX(-2.75);
end.
uses Graph3D;
begin
var m := DiffuseMaterial(Colors.Green) + SpecularMaterial(128,30) + EmissiveMaterial(RGB(0,64,0));
Sphere(4,0,0,2,m);
Cube(8,0,0,4,RainbowMaterial);
Cube(0,0,0,4,DiffuseMaterial(Colors.Green) + ImageMaterial('dog.jpg',0.5,0.5));
end.
uses graphABC;
var x: integer;
begin
setwindowsize(400,400);
centerwindow;
for x:=20 downto 1 do begin
pie(100+5*x,200,10*x,30,330);
FloodFill(100+4*x,200,RGB(255,5,00+x*10));
end;
end.
Курсорни кўрсатилган йўналишда силжитиш клавишлари
ёрдамида экран миқёсида силжитсангиз бўлади

Uses GraphABC;
procedure KeyDown(Key: integer);
begin
case Key of
VK_Left: Window.Left := Window.Left - 2;
VK_Right: Window.Left := Window.Left + 2;
VK_Up: Window.Top := Window.Top - 2;
VK_Down: Window.Top := Window.Top + 2;
end;
end;

begin
OnKeyDown := KeyDown;
end.

Курсорни кўрсатилган йўналишда силжитиш клавишлари
ёрдамида экран миқёсида силжитсангиз бўлади
Qadalgich orqali boshqarish. Quyidagi dasturni terib ko'ring.
program mouseBut;
uses GraphABC, Events;
var x, y, R, xk, yk, a: integer;
procedure Krug(col: color);
begin
SetPenColor(col); SetBrushColor(col); Circle(x, y, R);
end;
procedure Knopka(s: string);{қадалгич тасвирини чизиш процедураси }
begin
SetBrushColor(clGreen); rectangle(xk, yk, xk + a, yk + a);
SetFontColor(clYellow); SetFontSize(14); TextOut(xk + 12, yk + 4, s);
end;
procedure mDown(xm, ym, mb: integer);{қадалгич босилганда диирани қайта чизиш процедураси}
begin
Krug(clWhite);
xk := 20; yk := 10; Knopka('<');
if (mb = 1) and (xm > xk) and (xm < xk + a) and (ym > yk) and (ym < yk + a) then x := x - 8; {чапга}
xk := 320; yk := 10; Knopka('>');
if (mb = 1) and (xm > xk) and (xm < xk + a) and (ym > yk) and (ym < yk + a) then x := x + 8; {ўнгга}
SetWindowCaption(IntToStr(xm) + ', ' + IntToStr(ym) + ', ' + IntToStr(x) + ', ' + IntToStr(y));
Krug(clRed);
end;
begin
setWindowSize(400, 300);
x := 200; y := 150; R := 20; a := 40;
mDown(x, y, 0);
OnMouseDown := mDown;
end.
Пример 1.pas
1.3 KB
Misol 1.
Курсорни чапга, ўнга, пастга, юқорига силжитиш клавишларини босиш билан
ойнадаги доирани кўрсатилган йўналишда силжитиш кўзда тутилган.
Esc ишни тўхтатади. Quyidagai dasturni terib ko'ring.
program keyEvent;
uses GraphABC, Events;
var x, y, R: integer;
procedure Krug(col: color);
begin
col:= clBlue;
SetPenColor(col); SetBrushColor(col); Circle(x, y, R);
end;
procedure
kDown(key: integer);
begin
Krug(clWhite);
if key = VK_Left then x := x - 8;
if key = VK_Right then x := x + 8;
if key = VK_Up then y := y - 8;
if key = VK_Down then y := y + 8;
if key = VK_Escape then CloseWindow;
SetWindowCaption('x=' + IntToStr(x) + ' y=' + IntToStr(y) + ' R=' + IntToStr(R));
Krug(clRed);
end;
begin
setWindowSize(400, 400);
x := 200; y := 200; R := 20; Krug(clRed);
OnKeyDown := kDown;
end.
Пример 4
1.Сичқон кўрсаткичи ойна усда юритилса кўрсаткич координаталари
ойна сарлавҳасида кўрсатилади.
2. Сичқон қурилмасининг қадалгичи босилса қадалгични чап ёки
ўнг қадалгич эканлиги ҳақида хабар берилад
Ойна чап қадалгич орқали чертиса жорий нуқтада айланача пайдо бўлади.
1.Сичқон кўрсаткичи ойна усда юритилса кўрсаткич координаталари
ойна сарлавҳасида кўрсатилади.
2. Сичқон қурилмасининг қадалгичи босилса қадалгични чап ёки
ўнг қадалгич эканлиги ҳақида хабар берилад
3.Ойна синқончанинг чап ёки ўнг қадалгич орқали чертиса жорий нуқтада айланача пайдо бўлади.
program mouseEvent;
uses GraphABC, Events;
const r = 8;
procedure
mDown(x, y, mb: integer);
if mb = 1 then textOut(10, 10, 'Чап қадалгич босилди ');
{сообщение о нажатой кнопке}
if mb = 2 then textOut(10, 10, 'ўнг қадалгич босиди. ');
Sleep(200);
Rectangle(x-r, y-r, x + r, y + r); MoveTo(x, y);
end;
procedure
mMove(x, y, mb: integer);
begin
if mb = 1 then LineTo(x, y);
if mb = 2 then SetPixel(x, y, clRed);
SetWindowCaption('Курсор координаталари: ' + IntToStr(x) + ', ' + IntToStr(y));
MoveTo(x, y);
end;
procedure
mUp(x, y, mb: integer);
begin
FillRect(10, 10, 160, 26); Circle(x, y, r);
end;
begin
OnMouseDown := mDown;
OnMouseUp := mUp;
OnMouseMove := mMove;
end.
program GrafRed;
uses GraphABC, Events;
var w: integer;
col: color;
procedure kPress(ch: char);
begin
if ch = 'r' then col := clRed;
if ch = 'g' then col := clGreen;
if ch = 'b' then col := clBlue;
if ch = 'w' then col := clWhite;
end;
procedure kDown(key: integer);
begin
if key = VK_Up then w := w + 1;
if key = VK_Down then w := w - 1;
if key = VK_Delete then ClearWindow(clWhite);
end;
procedure
mDown(x, y, mb: integer);
begin
MoveTo(x, y);
end;
procedure
mMove(x, y, mb: integer);
begin
setPenColor(col); SetPenWidth(w);
SetWindowCaption(IntToStr(x) + ', ' + IntToStr(y));
if mb = 1 then LineTo(x, y); { рисование линии }
end;
begin
{ основная программа: вызов обработчиков событий}
Col:=ClRed;
OnKeyPress := kPress;
OnKeyDown := kDown;
OnMouseDown := mDown;
OnMouseMove := mMove
end.
Пример 5.
Энг содда график редактор ишга тушади. Мичқончанинг чап қадалгичи босилаб
кўрсаткич ҳаракатга келса, унинг изада чизиқ пайдо бўлади. r, g, b клавишлорини
чизиқ ранги ўзгаради. w клавиши босилганда кўрсатгич ўчиргичга айланади.
Del ойнани тозалайди
Пример 6.
Составить программу, подсчитывающую количество щелчков
кнопкой мыши по падающей мишени
program Game;
uses GraphABC, Events;

var x, y, a, k, n: integer;

procedure mDown(xm, ym, mb: integer);
begin
if (mb = 1) and (xm > x) and (xm
< x + a) and (ym > y) and (ym < y + a) then
k := k + 1; {счетчик попаданий}
end;

begin
SetWindowSize(600, 500); SetBrushColor(clGreen);
a := 40; k := 0; n := 0; x := 100 + random(200); y := 10;
repeat
ClearWindow;
n := n + 1; x := x + random(40) - 20; y := y + random(20); rectangle(x, y, x + a, y + a);
OnMouseDown := mDown; Sleep(100);
until (y > WindowHeight);
SetFontColor(clYellow); SetFontSize(50);
TextOut(180, 180, ' ' + intToStr(k) + ':' + intToStr(n) + ' ');
end.