[ 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 | 35
Bydlisko: BA - WESTSIDE

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 | 9

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 | 9

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?


 [ Príspevkov: 3 ] 


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



Podobné témy

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

Ako spravit screenshot na Android?

v Ostatné operačné systémy

13

283

06.10.2024 14:07

tatko Tom

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

infanview - ako na screenshot

v Ostatné programy

0

853

01.07.2007 22:55

Marosh

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

4156

22.08.2009 15:55

david3504

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

819

02.12.2012 2:53

AdrianVAIO

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

Ako to spravit ?

v Siete

1

592

18.08.2008 22:32

shiro

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

Ako spraviť editovateľný footer?

v Redakčné systémy

7

783

04.07.2012 23:47

m1roslav

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

ako spraviť diskusné forum

v Redakčné systémy

1

726

28.05.2007 20:14

JanoF

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

ako si to spraviť?

v Redakčné systémy

1

589

13.06.2007 17:23

Flety

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

Ako spravit preklikavaci obsah

v JavaScript, VBScript, Ajax

1

491

04.09.2012 22:13

emer

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

ako to mam spravit??

v Počítačové hry

9

995

08.07.2007 14:07

rado1121

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

Ako najrýchlejšie spraviť komentáre?

v Ostatné

1

840

09.12.2009 20:07

tomxi

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

Ako spravit fake index ?

v PHP, ASP

6

964

04.09.2008 22:58

matto71

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

Ako spravit galeriu obrazkov

v JavaScript, VBScript, Ajax

0

553

27.02.2010 15:47

Pades

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

ako spravit nieco taketo???

v JavaScript, VBScript, Ajax

7

1015

06.02.2009 14:31

max-m

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

Ako spraviť web server

v Ostatné

10

2770

16.09.2017 22:40

ejv

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

ako spravit www - FAQ...

v HTML, XHTML, XML, CSS

2

1255

20.11.2006 19:58

Kcnk



© 2005 - 2024 PCforum, edited by JanoF