Line clipping: Cohen-Sutherland
Project description
Line clipping
lineclipping.f90
Cohen-Sutherland line clipping algorithm for massively parallel coarray modern Fortran. Input scalars or arrays, output intersections orNaN
if no intersection.lineClipping.py
Cohen-Sutherland line clipping algorithm for Python. Input scalars, output intersection length, orNone
if no intersection.
Julia line clipping is at https://github.com/scivision/lineclipping-julia
Install
To install the latest release:
pip install pylineclip
Fortran
If you want to use the Fortran Cohen-Sutherland line clipping modules directly (optional):
meson build
meson test -C build
Usage
The main difference with textbook implementations is that I return a sentinel value (NaN, None, nothing) if there's no intersection of line with box.
Python
import pylineclip.lineclipping as lc
x3,y3,x4,y4 = lc.cohensutherland((xmin, ymax, xmax, ymin, x1, y1, x2, y2)
If no intersection, (None, None, None, None)
is returned.
Fortran
lineclipping.f90 has two subroutines. Pick Ccohensutherland if you're calling from C/C++/Python, which cannot tolerate assummed-shape arrays. It's a slim wrapper to cohensutherland which is elemental (can handle scalar or any rank array).
Fortran programs will simply use
use lineclipping
call cohensutherland(xmin,ymax,xmax,ymin,x1,y1,x2,y2)
The arguments are:
INPUTS
------
xmin,ymax,xmax,ymin: upper left and lower right corners of box (pixel coordinates)
INOUT
-----
x1,y1,x2,y2:
in - endpoints of line
out - intersection points with box. If no intersection, all NaN
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pylineclip-1.0.0.tar.gz
.
File metadata
- Download URL: pylineclip-1.0.0.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c1506df20de89e7ff0b631e48572314c77adc4b20de549c0c4e328cc98374d3 |
|
MD5 | c91d3424ce2ff16d37b4ac673d054696 |
|
BLAKE2b-256 | 2eeddabd4cc3d7c666c6980787bb1ec3ff72ca275a0e157a550048cac60b9f4d |