🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: dnet.graphik
Article #63

Re: Parallele Polylines

#63
From: Ruediger Kolb
Date: Thu, 14 Dec 1989 10:48
61 lines
2679 bytes
------------------------------------------------------------------------------
Date:         Wed, 13 Dec 89 10:24:39 MEZ
From:         "H. Pudlatz" <URZ04@DMSWWU1A>
Subject:      Parallele Polylines


Das folgende Unterprogramm ist zwar nicht in Pascal, sondern in FORTRAN 77
(IBM-Version), ausserdem malt es fuer IANZ = 1 eine Autobahn, also drei
parallele Linien statt zweier. Es sollte aber wohl leicht an die ursprueng-
liche Problemstellung (SCHICK at DMRHRZ11) angepasst werden koennen.
Eine Warnung am Schluss: das UP ist "quick and dirty" (es trifft keine
besonderen Vorkehrungen fuer die generierten Polylines bei spitzen Ecken),
es erscheint mit aber zum Zeichnen dicker Linien mit einer duennen Feder
bei einem Penplotter ganz brauchbar.

Gruss H. Pudlatz
----------------------

      SUBROUTINE  PARLIN (N, X, Y, ABST, IANZ)
      REAL        X(*), Y(*), U(1000), V(1000)
*
*.... Zeichnen paralleler Polylines
*
*     Parameter:
*        N    = Anzahl der Punkte der urspruenglichen Polyline
*        X, Y = x- und y-Vektoren der Polyline
*        ABST = Abstand der parallelen Polylines voneinander
*        IANZ = Anzahl der jeweils rechts und links zu
*               zeichnenden Polylines
*

      CALL GPL (N, X, Y)     ! mittlere Polyline,
      DO J = -IANZ, IANZ     ! symmetrisch links und rechts dazu
         M = 0               ! IANZ Polylines im Abstand ABST
         DD= ABST*J
         DO I = 1, N-1
            DX= X(I+1)-X(I)
            DY= Y(I+1)-Y(I)
            S = DD/SQRT (DX**2 + DY**2)
            U(M+1) = X(I  ) - S*DY
            V(M+1) = Y(I  ) + S*DX
            U(M+2) = X(I+1) - S*DY
            V(M+2) = Y(I+1) + S*DX
            M = M + 2
            IF (M .GE. 999) THEN
               CALL GPL (M, U, V)
               U(1) = U(M)
               V(1) = V(M)
               M = 1
            END IF
         END DO
         IF (M .GT. 1) CALL GPL (M, U, V)
      END DO
      END
Acknowledge-To: <URZ04@DMSWWU1A>

-- 
Ruediger Kolb		                Phone: +49-2241-14-2644  
GMD   					e-mail:
Postfach 1240               		kolb@gmdzi                   
D-5205 Sankt Augustin       		kolb@f3.gmd.dbp.de           
Technical Details
Message-ID: <1778@gmdzi.UUCP>
Path: arc1-ca.pugleaf.net!gmdzi!kolb

Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit
X-Google-Thread: 115c6e,e60011b95314eb59
X-Google-Attributes: gid115c6e,public
X-Google-ArrivalTime: 1989-12-14 02:48:30 PST
Path: arc1-ca.pugleaf.net!gmdzi!kolb
From: kolb@gmdzi.UUCP (Ruediger Kolb)
Newsgroups: dnet.graphik
Subject: Re: Parallele Polylines
Message-ID: <1778@gmdzi.UUCP>
Date: 14 Dec 89 10:48:30 GMT
Distribution: dnet
Organization: GMD, Sankt Augustin, F. R. Germany
Lines: 61
Approved: kolb@gmdzi.UUCP