Giter VIP home page Giter VIP logo

lerpfunctions's Introduction

lerpFunctions

This Swift Playground contains functions relating to and demonstrating functions of linear interpolation.

lerp

This function demonstrates linear interpolation, which allows you to find an unknown point along the path between two known points. This function takes three arguments: pointOne and pointTwo are Double values and percentage is a Double value between 0.0 and 1.0. This function returns a Double value that is the result of traveling along the path between pointOne and pointTwo by the percentage amount.

lerpRange

This function takes three arguments: pointOne and pointTwo are both Double values while percentages is an array of Double values representing percentages (between 0.0 and 1.0). This function returns an array of Double values that are the result of interpolating between the two provided points by each percentage value in the percentages array.

Note: If you're use case calls for passing lerpRange a percentage array that is equally spaced, you may find another function I wrote, intervalRange, useful. You can check out intervalRange in my repositories.

biLerp

This function demonstrates bilinear interpolation, which allows you to find an unknown point within a four point grid. This function takes six arguments: topLeft, topRight, bottomLeft, and bottomRight are Double values and represent the corners of the four point grid. xPercentage and yPercentage accept Double values between 0.0 and 1.0, and represent the percentage of the path that you want to travel along the X and Y axis to find your unknown point.

Note On Extensibility

For the sake of flexibility, I wrote these functions to accept and work on Double values. When working with graphing, this would call for you to pass in the X and Y coordinates of a point separately and then combine the two results back into a single point, as demonstrated in the Playground. While this may seem unnecessarily complex, I found this to be the best way to demonstrate the process in a straight-forward way while leaving things open for modification. For example, a user could fairly quickly modify these funcitons to accept and return tuples of Double values in the form of (x: Double, y: Double). However, you may not wish or need to do this. In my original use case for working with linear interpolation I was not working with a coordinate-point based system, and so I wanted to present this demonstration code with the same amount of flexibility.

Installation

Simply copy and paste the lerp, biLerp, and lerpRange functions into your project.

Please note that both the biLerp and lerpRange functions are dependent on the lerp function. When using either function, you must include lerp in your project as well.

Requirements

lerpFunctions was built and tested using:

  • Swift 4

Author

Programmed and designed by Peter Mostoff. You can contact me via Twitter if that's something you're interested in. I typically make things for the situations that they're needed in but I like to share my work and I'm sure there are plenty of ways that this can be improved. Please let me know if you have any cool suggestions!

If you're interested, you can visit my personal site to see what I'm up to at Mostoff.me or if you want to support my work, check out the apps that I've published on the App Store!

License

lerpFunctions is available under the MIT license. See the LICENSE file for more info.

lerpfunctions's People

Contributors

pmostoff avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 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.