Giter Site home page Giter Site logo

xpf0000 / dom-points Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 2.63 MB

DOM Tools Collection, include matrixToDeg pointsDistance pointToLineCross pointToLineDistance pointIsInPolygon polygonIsInPolygon clientDeg clientCenterPoint clientOriginalPoints clientBoundsPoints rectBoundsToRect...

License: MIT License

JavaScript 97.57% HTML 2.43%

dom-points's Introduction

Dom-Points

Latest Version on NPM Software License npm

DOM Tools Collection, include matrixToDeg pointsDistance pointToLineCross pointToLineDistance pointIsInPolygon polygonIsInPolygon clientDeg clientCenterPoint clientOriginalPoints clientBoundsPoints rectBoundsToRect...

Table of Contents

Install and basic usage

$ npm install --save @xpf0000/dom-points
import { pointsDistance } from '@xpf0000/dom-points'
pointsDistance({x: number, y: number}, {x: 20, y: 20})
<script type="module" src="./dist/domPoints.js"></script>
<script type="module">
      let dist = DomPoints.pointsDistance({x: number, y: number}, {x: 20, y: 20})
</script>

Methods

matrixToDeg

@param matrix
@returns {number}

transform matrix to Deg

matrixToDeg('matrix(0.939693, 0.34202, -0.34202, 0.939693, 0, 0)')

pointsDistance

@param p1: {x: number, y: number}
@param p2: {x: number, y: number}
@returns {number}

point p1 distance to p2

pointsDistance({x: number, y: number}, {x: 20, y: 20})

pointToLineDistance

@param p: {x: number, y: number}
@param line: [{x: number, y: number}, {x: number, y: number}]
@returns {number}

point distance to line

pointToLineDistance({x: number, y: number}, [{x: number, y: number}, {x: number, y: number}])

pointToLineCross

@param p: {x: number, y: number}
@param line: [{x: number, y: number}, {x: number, y: number}]
@returns {number}

The intersection of a point and a line segment

pointToLineCross({x: number, y: number}, [{x: number, y: number}, {x: number, y: number}])

pointIsOnLine

@param p: {x: number, y: number}
@param line: [{x: number, y: number}, {x: number, y: number}]
@returns {number}

The point is on a line segment

pointIsOnLine({x: number, y: number}, [{x: number, y: number}, {x: number, y: number}])

pointIsInPolygon

@param p: {x: number, y: number}
@param polygon: [{x: number, y: number}, {x: number, y: number}, {x: number, y: number}...]
@returns {boolean}

Is the point inside the polygon

pointIsInPolygon({x: number, y: number}, [{x: number, y: number}, {x: number, y: number}, {x: number, y: number}])

polygonIsInPolygon

@param polygon: [{x: number, y: number},{x: number, y: number},{x: number, y: number}...]
@param polygon1: [{x: number, y: number}, {x: number, y: number}, {x: number, y: number}...]
@returns {boolean}

Is the polygon inside the polygon

polygonIsInPolygon([{x: number, y: number},{x: number, y: number},{x: number, y: number}], [{x: number, y: number}, {x: number, y: number}, {x: number, y: number}])

rotatePoint

@param center: {x: number, y: number}
@param point: {x: number, y: number}
@param deg: 0
@returns {x: number, y: number}

the new point of point rotates the deg angle around the center

rotatePoint({x: number, y: number}, {x: number, y: number}, 0)

clientDeg

@param dom: html Dom
@returns {number}

the deg angle of dom to client

<div id="a" style="transform: rotate(15deg)">
    <div id="b" style="transform: rotate(-60deg)">
        <div id="c" style="transform: rotate(130deg)">
        </div>
    </div>
</div>
clientDeg(document.getElementById('c'))

clientCenterPoint

@param dom: html Dom
@returns {x: number, y: number}

the center point of dom to client

<div id="a" style="transform: rotate(15deg)">
    <div id="b" style="transform: rotate(-60deg)">
        <div id="c" style="transform: rotate(130deg)">
        </div>
    </div>
</div>
clientCenterPoint(document.getElementById('c'))

clientOriginalPoints

@param dom: html Dom
@returns [{x: number, y: number},{x: number, y: number},{x: number, y: number},{x: number, y: number}]

the points of the four corners of dom to client without rotate

<div id="a" style="transform: rotate(15deg)">
    <div id="b" style="transform: rotate(-60deg)">
        <div id="c" style="transform: rotate(130deg)">
        </div>
    </div>
</div>
clientOriginalPoints(document.getElementById('c'))

clientBoundsPoints

@param dom: html Dom
@returns [{x: number, y: number},{x: number, y: number},{x: number, y: number},{x: number, y: number}]

the points of the four corners of a rect which make by dom rotated to client

<div id="a" style="transform: rotate(15deg)">
    <div id="b" style="transform: rotate(-60deg)">
        <div id="c" style="transform: rotate(130deg)">
        </div>
    </div>
</div>
clientBoundsPoints(document.getElementById('c'))

rectBoundsToRect

@param dom: html Dom
@param toDom: html Dom
@returns {top: number, left: number, bottom: number, width: number, right: number, height: number}

the position of a rect which make by dom rotated to toDom

<div id="a" style="transform: rotate(15deg)">
    <div id="b" style="transform: rotate(-60deg)">
        <div id="c" style="transform: rotate(130deg)">
        </div>
    </div>
</div>
rectBoundsToRect(document.getElementById('c'), document.getElementById('a'))

domExactSize

@param dom: html Dom
@returns {width: number, height: number}

exact size of the dom, offsetWidth is int, and not exact

<div id="a" style="width: 75.357px;height: 45.259px">
</div>
domExactSize(document.getElementById('a'))

pointInCrosLine

@param line1: [{x: number, y: number}, {x: number, y: number}]
@param line2: [{x: number, y: number}, {x: number, y: number}]
@returns {x: number, y: number} || false

two line's cros point

pointInCrosLine([{x: number, y: number}, {x: number, y: number}], [{x: number, y: number}, {x: number, y: number}])

Contributing

Any contribution to the code or any part of the documentation and any idea and/or suggestion are very welcome.

# serve with hot reload at localhost:8080
npm run serve

# run test
npm run test

# distribution build-bundle
npm run build

License

The MIT License (MIT). Please see License File for more information.

dom-points's People

Contributors

xpf0000 avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.