2.1.164 • Published 3 months ago

@thi.ng/geom-isoline v2.1.164

Weekly downloads
118
License
Apache-2.0
Repository
github
Last release
3 months ago

geom-isoline

npm version npm downloads Twitter Follow

This project is part of the @thi.ng/umbrella monorepo.

About

2D isoline / contour extraction, using Marching squares. Ported from the Clojure version of thi.ng/ndarray.

Status

STABLE - used in production

Search or submit any issues for this package

Installation

yarn add @thi.ng/geom-isoline

ES module import:

<script type="module" src="https://cdn.skypack.dev/@thi.ng/geom-isoline"></script>

Skypack documentation

For Node.js REPL:

# with flag only for < v16
node --experimental-repl-await

> const geomIsoline = await import("@thi.ng/geom-isoline");

Package sizes (gzipped, pre-treeshake): ESM: 812 bytes

Dependencies

Usage examples

Several demos in this repo's /examples directory are using this package.

A selection:

ScreenshotDescriptionLive demoSource
Animated sine plasma effect visualized using contour linesDemoSource

API

Generated API docs

import * as g from "@thi.ng/geom";
import * as iso from "@thi.ng/geom-isoline";
import * as tx from "@thi.ng/transducers";

import * as fs from "fs";

// evaluate fn for each [x,y], create array
const makeField = (fn, width, height) =>
    iso.setBorder(
        [...tx.map(fn, tx.range2d(width, height))],
        width,
        height,
        1000
    );

// precompute field with given fn
const src = makeField(
    ([x, y]) => Math.sin(x * 0.1) * Math.cos(y * 0.1),
    100,
    100
);

// contour iterator
const contours = tx.iterator(
    tx.comp(
        // iso value => RGB color from
        tx.mapIndexed((i, x) => [x, [i / 20, 1 - i / 40, 1 - i / 20]]),
        // contour & color tuples
        tx.mapcat(([i, col]) => tx.map((pts)=> [pts, col], iso.isolines(src, 100, 100, i))),
        // wrap as polygon for svg
        tx.map(([pts, col]) => g.polygon(pts, { stroke: col}))
    ),
    // iso value range
    tx.range(-1, 1, 0.05)
);

// svg document wrapper
const doc = g.svgDoc(
    {
        width: 600,
        height: 600,
        fill: "none",
        "stroke-width": 0.1
    },
    ...contours
);

// output
fs.writeFileSync("contours.svg", g.asSvg(doc));

Authors

Karsten Schmidt

If this project contributes to an academic publication, please cite it as:

@misc{thing-geom-isoline,
  title = "@thi.ng/geom-isoline",
  author = "Karsten Schmidt",
  note = "https://thi.ng/geom-isoline",
  year = 2015
}

License

© 2015 - 2021 Karsten Schmidt // Apache Software License 2.0

2.1.164

3 months ago

2.1.163

4 months ago

2.1.161

4 months ago

2.1.162

4 months ago

2.1.158

5 months ago

2.1.159

5 months ago

2.1.160

4 months ago

2.1.156

5 months ago

2.1.157

5 months ago

2.1.154

5 months ago

2.1.155

5 months ago

2.1.153

5 months ago

2.1.152

6 months ago

2.1.151

6 months ago

2.1.150

7 months ago

2.1.149

7 months ago

2.1.148

7 months ago

2.1.147

8 months ago

2.1.146

8 months ago

2.1.145

8 months ago

2.1.130

12 months ago

2.1.132

11 months ago

2.1.131

11 months ago

2.1.134

11 months ago

2.1.133

11 months ago

2.1.136

10 months ago

2.1.135

10 months ago

2.1.138

10 months ago

2.1.137

10 months ago

2.1.139

10 months ago

2.1.141

9 months ago

2.1.140

10 months ago

2.1.143

9 months ago

2.1.142

9 months ago

2.1.144

8 months ago

2.1.129

12 months ago

2.1.128

12 months ago

2.1.127

1 year ago

2.1.126

1 year ago

2.1.125

1 year ago

2.1.124

1 year ago

2.1.123

1 year ago

2.1.122

1 year ago

2.1.121

1 year ago

2.1.120

1 year ago

2.1.119

1 year ago

2.1.118

1 year ago

2.1.117

1 year ago

2.1.116

1 year ago

2.1.115

1 year ago

2.1.114

1 year ago

2.1.113

1 year ago

2.1.112

1 year ago

2.1.111

1 year ago

2.1.110

1 year ago

2.1.109

1 year ago

2.1.107

1 year ago

2.1.106

1 year ago

2.1.108

1 year ago

2.1.105

1 year ago

2.1.104

1 year ago

2.1.103

1 year ago

2.1.102

1 year ago

2.1.101

1 year ago

2.1.98

1 year ago

2.1.99

1 year ago

2.1.100

1 year ago

2.1.97

1 year ago

2.1.96

1 year ago

2.1.95

1 year ago

2.1.94

1 year ago

2.1.93

1 year ago

2.1.92

1 year ago

2.1.90

2 years ago

2.1.91

1 year ago

2.1.89

2 years ago

2.1.88

2 years ago

2.1.87

2 years ago

2.1.86

2 years ago

2.1.85

2 years ago

2.1.83

2 years ago

2.1.84

2 years ago

2.1.81

2 years ago

2.1.80

2 years ago

2.1.58

2 years ago

2.1.59

2 years ago

2.1.57

2 years ago

2.1.69

2 years ago

2.1.67

2 years ago

2.1.68

2 years ago

2.1.65

2 years ago

2.1.66

2 years ago

2.1.63

2 years ago

2.1.64

2 years ago

2.1.61

2 years ago

2.1.62

2 years ago

2.1.60

2 years ago

2.1.78

2 years ago

2.1.79

2 years ago

2.1.76

2 years ago

2.1.77

2 years ago

2.1.74

2 years ago

2.1.75

2 years ago

2.1.72

2 years ago

2.1.73

2 years ago

2.1.70

2 years ago

2.1.71

2 years ago

2.1.56

2 years ago

2.1.55

2 years ago

2.1.54

2 years ago

2.1.52

2 years ago

2.1.53

2 years ago

2.1.49

2 years ago

2.1.47

2 years ago

2.1.48

2 years ago

2.1.46

2 years ago

2.1.50

2 years ago

2.1.51

2 years ago

2.1.45

2 years ago

2.1.44

2 years ago

2.1.43

2 years ago

2.1.42

2 years ago

2.1.40

2 years ago

2.1.38

2 years ago

2.1.39

2 years ago

2.1.36

2 years ago

2.1.37

2 years ago

2.1.35

3 years ago

2.1.27

3 years ago

2.1.28

3 years ago

2.1.25

3 years ago

2.1.26

3 years ago

2.1.29

3 years ago

2.1.34

3 years ago

2.1.32

3 years ago

2.1.33

3 years ago

2.1.30

3 years ago

2.1.31

3 years ago

2.1.23

3 years ago

2.1.24

3 years ago

2.1.22

3 years ago

2.1.16

3 years ago

2.1.17

3 years ago

2.1.15

3 years ago

2.1.18

3 years ago

2.1.19

3 years ago

2.1.21

3 years ago

2.1.20

3 years ago

2.1.14

3 years ago

2.1.12

3 years ago

2.1.13

3 years ago

2.1.10

3 years ago

2.1.11

3 years ago

2.1.9

3 years ago

2.1.8

3 years ago

2.0.9

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.4

4 years ago

2.1.3

4 years ago

2.1.6

4 years ago

2.1.5

4 years ago

2.1.7

4 years ago

2.1.0

4 years ago

2.0.7

4 years ago

2.0.8

4 years ago

2.0.4

4 years ago

2.0.6

4 years ago

2.0.3

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.1

4 years ago

0.1.95

4 years ago

0.1.93

4 years ago

0.1.94

4 years ago

0.1.92

4 years ago

0.1.91

4 years ago

0.1.90

4 years ago

0.1.89

4 years ago

0.1.88

4 years ago

0.1.87

4 years ago

0.1.86

4 years ago

0.1.85

4 years ago

0.1.84

4 years ago

0.1.83

4 years ago

0.1.82

4 years ago

0.1.81

4 years ago

0.1.80

4 years ago

0.1.76

4 years ago

0.1.75

4 years ago

0.1.74

4 years ago

0.1.73

4 years ago

0.1.72

4 years ago

0.1.71

4 years ago

0.1.70

4 years ago

0.1.69

4 years ago

0.1.68

5 years ago

0.1.67

5 years ago

0.1.66

5 years ago

0.1.65

5 years ago

0.1.64

5 years ago

0.1.63

5 years ago

0.1.62

5 years ago

0.1.61

5 years ago

0.1.60

5 years ago

0.1.59

5 years ago

0.1.58

5 years ago

0.1.57

5 years ago

0.1.56

5 years ago

0.1.54

5 years ago

0.1.55

5 years ago

0.1.53

5 years ago

0.1.52

5 years ago

0.1.51

5 years ago

0.1.50

5 years ago

0.1.49

5 years ago

0.1.48

5 years ago

0.1.47

5 years ago

0.1.46

5 years ago

0.1.45

5 years ago

0.1.44

5 years ago

0.1.43

5 years ago

0.1.41

5 years ago

0.1.42

5 years ago

0.1.40

5 years ago

0.1.39

5 years ago

0.1.38

5 years ago

0.1.37

5 years ago

0.1.36

5 years ago

0.1.35

5 years ago

0.1.34

5 years ago

0.1.33

5 years ago

0.1.30

5 years ago

0.1.29

5 years ago

0.1.28

6 years ago

0.1.27

6 years ago

0.1.26

6 years ago

0.1.25

6 years ago

0.1.24

6 years ago

0.1.23

6 years ago

0.1.22

6 years ago

0.1.21

6 years ago

0.1.20

6 years ago

0.1.19

6 years ago

0.1.18

6 years ago

0.1.17

6 years ago

0.1.16

6 years ago

0.1.15

6 years ago

0.1.14

6 years ago

0.1.13

6 years ago

0.1.12

6 years ago

0.1.11

6 years ago

0.1.10

6 years ago

0.1.9

6 years ago

0.1.8

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago