🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Ruediger Kolb Thu, 14 Dec 1989 10:48
Re: Parallele Polylines
#63
Author: 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           
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads