logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak stworzyć tarcze enkodera w PostScript? Udostępnię program i opis

Tawez 22 Cze 2005 00:51 6467 4
REKLAMA
  • #1 1596932
    Tawez
    Poziom 18  
    Posty: 265
    Pomógł: 19
    Ocena: 5
    Jakiś czas temu, gdy bawiłem się PostScript'em
    napisałem mały programik przydatny przy robieniu tarcz enkoderów.
    Jeśli było by zainteresowanie z Waszej strony, mógł bym ten programik tu umieścić wraz ze stosownym opisem.

    Na rysunku próbka możliwości ;)
    Załączniki:
    • Jak stworzyć tarcze enkodera w PostScript? Udostępnię program i opis enkoder.gif (18.27 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 1598679
    olo2
    Poziom 13  
    Posty: 61
    Pomógł: 4
    Witam

    Jestem bardzo zainteresowany tym programem , gdyby to nie sprawiło problemu prosił bym o umieszczenie na serwerze ew: usolo(_at_)yahoo.com

    pozdrawiam
  • REKLAMA
  • #3 1599897
    Tawez
    Poziom 18  
    Posty: 265
    Pomógł: 19
    Ocena: 5
    Skoro jest przynajniej jeden zainteresowany to warto się podzielić.
    Oto więc opis i sam program.

    Cechy
    Poniższe rozwiązanie nie wymusza na nas używania pirackiego oprogramowania oraz działa praktycznie w dowolnym systemie operacyjnym.
    Rozdzielczość wydruku zależy jedynie od parametrów urządzenia, na którym będziemy drukować. Jeżeli potrzebujemy 1200dpi wystarczy jedynie znaleźć odpowiednią drukarkę, a nie zmieniać coś w w rysunku.

    Co będzie potrzebne?
    Potrzebne będą trzy rzeczy: dowolny edytor tekstowy (np. Notepad), drukarka z obsługą PostScript'u oraz papier lub folia do drukowania. Jeżeli nie mamy drukarki z obsługą PostScript'u, wystarczy program mogący odczytywać i drukować pliki w tym formacie, może to być na przykład darmowy GhostScript. Dla osób, które chciały by się pobawić PostScript'em polecam edytor z możliwością kolorowania składni.

    Kilka uwag technicznych
    - Podstawowa jednostka miary to punkt (1 punkt = 1/72 cala).
    - Punkt o współrzędnych (0,0) początkowo znajduje się w lewym dolnym rogu kartki.
    - Komentarze w PostScript zaczynają się od znaku procent % i kończą znakiem nowej linii.
    - PostScript rozróżnia wielkość liter, zatem zmienna, Zmienna i ZMIENNA to trzy różne rzeczy.

    Program enkoder
    Postaram się krótko opisać podstawowe elementy, z których będziemy później składać nasze tarcze enkoderów. Parametry przekazywane do funkcji ujęte są w nawiasach ostrych: <zmienna>.

    Jednostki miary
    Dostępne są trzy funkcje umożliwiające określenie rozmiarów w bardziej użytecznych jednostkach niż punkt. Są to inch, cm i mm. Stosuje się je w sposób naturalny, podając przed nazwą jednostki odpowiednią wartość. Istotna jest spacja pomiędzy wartością a jednostką miary!
    1 cm
    0.73 inch
    14 mm


    Kierunek obrotu
    Do dyspozycji mamy dwie stałe określające kierunek obrotu: CW i CCW. Stałe te są wykorzystywane przy wywoływaniu funkcji qrotate.

    Funkcja ring
    Służy do rysowania czarnego okręgu o podanym promieniu.
    Sposób wywołania: <promień> ring


    Funkcja mask
    Służy do rysowania białego koła o podanym promieniu.
    Sposób wywołania: <promień> mask


    Funkcja circle
    Rysuje obwiedzione na czarno białe koło o podanym promieniu.
    Sposób wywołania: <promień> circle
    1 inch circle


    Funkcja cross
    Rysuje czarny krzyż wpisany w niewidoczny okrąg o podanym promieniu.
    Sposób wywołania: <promień> cross
    W przykładzie rozmiar podano w punktach.



    Funkcja wheel
    Rysuje okrąg składający się z podanej ilości segmentów.
    Sposób wywołania: <promień_wewnętrzny> <promień_zewnętrzny> <segmenty> wheel
    Parametr <segmenty> określa ilość białych i czarnych segmentów, przy czym rysowane są tylko czarne.
    1 cm 2 cm 16 wheel


    Funkcja qrotate
    Obraca układ współrzędnych o 1/2 segmentu w kierunku określonym przez <kierunek>. Parametr <segmenty> podajemy aby było wiadomo jaki kąt ma jeden segment.
    Sposób wywołania: <kierunek> <segmenty> qrotate
    CW 16 qrotate


    Funkcja userwheel
    Jest to jedyna funkcja, którą zalecam modyfikować. W miejscu pomiędzy liniami zawierającymi %begin i %end możemy wstawić wywołania wyżej opisanych funkcji w celu stworzenia odpowiedniego koła enkodera.
    Sposób wywołania: <x> <y> userwheel
    Parametry <x> i <y> określają położenie środka rysowanego koła na kartce. Znając rozmiar kartki, marginesy przy drukowaniu oraz rozmiar naszego koła, z łatwością możemy określić wartości tych parametrów.
    /userwheel {
      gsave
      translate
      %twoj kod
      %begin 
      ...
      %end
      grestore
    } def


    Na dołączonym rysunku przedstawiono działanie funkcji składowych. Kolor szary odpowiada niezadrukowanej powierzchni papieru. Przykład e) pokazuje działanie funkcji wheel wywołanej z następującymi parametrami: 0.5 cm 1 cm 16 wheel.


    Jak rysować?
    Do tej pory opisałem jedynie funkcje. Sama obecność ich definicji w pliku nie spowoduje jeszcze, że zostaną wykonane, jak zresztą w większości języków programowania. Aby coś się narysowało powinniśmy:
    - wypełnić funkcję userwheel odpowiednimi wywołaniami funkcji składowych
    - przynajmniej raz wywołać naszą funkcję pisząc na przykład 10 cm 10 cm userwheel
    - wreszcie na samym końcu napisać polecenie showpage, które powoduje zamknięcie bieżącej strony i wysłanie jej do drukarki.

    W programie na samym końcu jest przykładowy fragment rysujący dwa identyczne koła na jednej kartce.
    %%main program
    10 cm 7.5 cm userwheel
    10 cm 20 cm userwheel
    %%main program end
    showpage



    Przykłady
    Poniżej zamieszczono przykładowe kody odpowiedzialne za wyrysowanie kół z pierwszego postu w tym wątku.
    Wybrany kod należy wstawić pomiędzy %begin i %end w funkcji userwheel.
    .5 cm .7 cm 2 wheel
    .7 cm .9 cm 4 wheel
    .9 cm 1.1 cm 8 wheel
    1.1 cm 1.3 cm 16 wheel
    1.3 cm 1.5 cm 32 wheel
    1.5 cm 1.7 cm 64 wheel
    1.7 cm 1.9 cm 128 wheel
    1.9 cm 2.1 cm 256 wheel
    
    
    2.15 cm ring
    .45 cm ring
    .3 cm cross


    1 cm 1.5 cm 32 wheel
    CW 32 qrotate
    1.5 cm 2 cm 32 wheel
    2.1 cm ring
    .9 cm ring
    .7 cm cross
    .2 cm mask


    Uwagi
    - Jeżeli rysowane linie okażą się za cienkie (dotyczy funkcji ring, circle i cross), można zmienić wartość w linii 10: 0.1 setlinewidth na większą.

    - Wywołanie funkcji qrotate spowoduje obrócenie układu współrzędnych na stałe (patrz drugi przykład). Można to zignorować lub wywołać funkcję qrotate z przeciwnym kierunkiem obrotu i taką samą ilością segmentów.

    I to tyle na temat programu.
    W razie pytań jestem do dyspozycji.

    Owocnego użytkowania.
    Załączniki:
    • Jak stworzyć tarcze enkodera w PostScript? Udostępnię program i opis podstawowefigury.gif (7.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • encoder300.ps (2 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #4 1600006
    olo2
    Poziom 13  
    Posty: 61
    Pomógł: 4
    Dzieki serdeczne :)
  • #5 2000615
    Tawez
    Poziom 18  
    Posty: 265
    Pomógł: 19
    Ocena: 5
    Nastała ostatnio jakaś mania na zamykanie tematów.
    Czemu ona miała by służyć, nie wiem, ale na szczęście sa mądrzejsi ode mnie ;)

    Cóż, ja w tym temacie już nic więcej nie dodam.
    Pozostają jedynie ludzie, którzy będą mieli pytania.
    Jeśli temat zostanie zamknięty, pozostanie im PW.
REKLAMA