Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 3 ] 
AutorSpráva
Offline

Skúsený užívateľ
Skúsený užívateľ
Ako spraviť screenshot pascalovského grafického výstupu?

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 17.05.2007 21:07

Ahojte,

mám taký netradičný problém - potrebujem screenshot obrazovky z pascalu - presnejšie screenshot grafického výstupu (knižnica Graph). Niečo som našiel, ale nejako to nefunguje.

Ten výstup je vlastne riešením zadania jedného maturitného dôkazu, s ktorým si trošku nevieme rady, tak som to skúsil cez Pascal - niečo z toho vyšlo, ale treba to ešte dať do nejakého normálnejšieho formátu.

Zadanie znie:
Vyšetrite množinu všetkých bodov X v rovine, pre ktoré platí |AX| : |BX| = 3. A a B sú ľubovoľné zadané rôzne body.

Ten útvar neviem pomenovať, len opísať - predstavte si vajce uvarené natvrdo a pozdĺžne rozrezané - tou množinou je len to vaječné bielko :)

A keby niekto chcel, môže si to vyskúšať (a skontrolovať ma, či to je OK):
Kód:
{najdite vsetky body X pre ktore |AX| : |BX| = 3}
Program Mnozina;
Uses Crt, Graph;
Const A1 = 1*3;
      A2 = 240;
      B1 = 141*3;
      B2 = 240;
      Opakovanie = 2000;
      Koef = 3;
Var   X1, X2, i, j, citatel, menovatel :longint;
Procedure Inicializacia;
Var Gd, Gm :Integer;
Begin
  Gd:= 0;
  Gm:= 0;
  InitGraph(Gd, Gm, 'C:\TP7\BGI\');
  ClearDevice;
  SetColor(White);
  If GraphResult <> 0 Then Halt;
  {body}
  SetColor(4);
  Circle(A1, A2, 3);
  SetFillStyle(1, 4);
  FloodFill(A1, A2, 4);
  SetColor(3);
  Circle(B1, B2, 3);
  SetFillStyle(1, 3);
  FloodFill(B1, B2, 3);
End;

Begin
  Inicializacia;
  For i:= 1 To Opakovanie Do
  Begin
    For j:= 1 To Opakovanie Do
    Begin

      X1 := i*Koef;
      X2 := j*Koef;
      {vzorec pre vzdialenost 2 bodov: citatel je |AX|, menovatel |BX|}
      citatel := Trunc(Sqrt(Sqr(X1-A1)+Sqr(X2-A2)));
      menovatel := Trunc(Sqrt(Sqr(X1-B1)+Sqr(X2-B2)));
     
      If menovatel <> 0 Then
      If Trunc(citatel/menovatel) = 3 Then
      Begin
        PutPixel(X1, X2, 14);
      End;

    End;
  End;
  ReadKey;
End.


EDIT: trochu som upravil ten kód a výsledkom je zrazu kružnica :D mala by byť presnejšia.
Kód:
{najdite vsetky body X pre ktore |AX| : |BX| = 3}
Program Mnozina;
Uses Crt, Graph;
Const A1 = 10;
      A2 = 240;
      B1 = 50;
      B2 = 240;
      Opakovanie = 2000;
      Koef = 1;
Var   X1, X2, i, j :longint;
      citatel, menovatel :real;
Procedure Inicializacia;
Var Gd, Gm :Integer;
Begin
  Gd:= 0;
  Gm:= 0;
  InitGraph(Gd, Gm, 'C:\TP7\BGI\');
  ClearDevice;
  SetColor(White);
  If GraphResult <> 0 Then Halt;
  {body}
  SetColor(4);
  Circle(A1, A2, 3);
  SetFillStyle(1, 4);
  FloodFill(A1, A2, 4);
  SetColor(3);
  Circle(B1, B2, 3);
  SetFillStyle(1, 3);
  FloodFill(B1, B2, 3);
End;

Begin
  Inicializacia;
  For i:= 1 To Opakovanie Do
  Begin
    For j:= 1 To Opakovanie Do
    Begin

      X1 := i*Koef;
      X2 := j*Koef;

      citatel := Sqrt(Sqr(X1-A1)+Sqr(X2-A2));
      menovatel := Sqrt(Sqr(X1-B1)+Sqr(X2-B2));
      If menovatel <> 0 Then
      If citatel/menovatel = 3 Then
      Begin
        PutPixel(X1, X2, 14);
      End;
    End;
  End;
  ReadKey;
End.







_________________
A. S. Tanenbaum píše:
The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.11.06
Prihlásený: 31.12.07
Príspevky: 677
Témy: 9
Príspevok NapísalOffline : 17.05.2007 22:34

neviem či som dobre pochopil, ani som si nepozeral tvoj algoritmus a skúsil som niečo spraviť. Tiež mi to dáva kružnicu, tak si to pozri. Ako exportneš screen z pascalu neviem, ak to potrebuješ odovzdať vo forme obrázku, môžeš použiť export z môjho programu (menu vyvoláš pravým tlačidlom)
link: project1.rar - 0.18MB
Môžeš si tam pre prehladnosť aj pomeniť farby, a zaujimavé je sledovať ten priebeh so zmenami hodnôť. čím vyššie číslo, tým je kružnica trhanejšia, na jednotke to dáva úplne iný tvar a so záporními nič nevykreslí

//edit: to čo si našiel (getimage) je procedúra ktorá sa používa pri grafike. nejde o výstup na tlačiareň alebo do súboru, len do virtuálnej premennej zloženej z veľkého dvojrozmerného poľa farieb. Vlastne ti zachytí časť obrazovky definovanú argumentami a tú časť môžeš prilepiť niekde inde. Používa sa to pri rozpohybovaní objektov, ale to je na dlho

//edit2: pozerám že už bežne používať unit graph :rolleyes: a celkom sa ti to zapáčilo

//edit3: práve som zbadal, že pri čiernom pozadí ti nevykreslí prvý bod a prefarbí pozadie.. je tam bug :) nechce sa mi to opravovať, nedávaj čierne pozadie :rolleyes:


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.11.06
Prihlásený: 31.12.07
Príspevky: 677
Témy: 9
Príspevok NapísalOffline : 17.05.2007 23:54

ešte pripájam pár možných výstupov (prvé dva sú so vzdialenosťou 1, [záleží aj na vzájomnej polohe]. tretí je pre vzdialenosť 3 a posledný je znovu vzdialenosť 1 ale body sú takmer totožné)

Ako spraviť screenshot pascalovského grafického výstupu?Ako spraviť screenshot pascalovského grafického výstupu?Ako spraviť screenshot pascalovského grafického výstupu?Ako spraviť screenshot pascalovského grafického výstupu?


Odpovedať na tému [ Príspevkov: 3 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. infanview - ako na screenshot

v Ostatné programy

0

792

01.07.2007 22:55

Marosh Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Návod: Ako si spravit doma zmrzlinu original ako z obchodu?

v Jedlo, pitie a varenie

7

4084

22.08.2009 15:55

david3504 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako spravne zapojit 4 ohmovy subak do 8 ohmoveho vystupu?

v Elektronika

11

781

02.12.2012 2:53

AdrianVAIO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako to spravit ?

v Siete

1

537

18.08.2008 22:32

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako si to spraviť?

v Redakčné systémy

1

543

13.06.2007 17:23

Flety Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako spravit preklikavaci obsah

v JavaScript, VBScript, Ajax

1

435

04.09.2012 22:13

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako to mam spravit??

v Počítačové hry

9

947

08.07.2007 14:07

rado1121 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako najrýchlejšie spraviť komentáre?

v Ostatné

1

701

09.12.2009 20:07

tomxi Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako spravit fake index ?

v PHP, ASP

6

911

04.09.2008 22:58

matto71 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako spravit galeriu obrazkov

v JavaScript, VBScript, Ajax

0

495

27.02.2010 15:47

Pades Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako spravit nieco taketo???

v JavaScript, VBScript, Ajax

7

967

06.02.2009 14:31

max-m Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako spraviť web server

v Ostatné

10

2707

16.09.2017 22:40

ejv Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako spravit www - FAQ...

v HTML, XHTML, XML, CSS

2

1197

20.11.2006 19:58

Kcnk Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako spraviť editovateľný footer?

v Redakčné systémy

7

731

04.07.2012 23:47

m1roslav Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako spraviť diskusné forum

v Redakčné systémy

1

683

28.05.2007 20:14

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako spravit z wifi lan

v Siete

16

2279

31.12.2021 17:02

4040 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  
cron

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra